Oracle-04:DDL语言数据表的操作
------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------
DDL操作:
--创建学生表
create table student(
sno number(4) not null,
sname varchar2(10) not null,
birthdday date
);
--向student表中添加两个字段
alter table student add(sal number(7,2),wechat varchar2(20));
--修改sname字段的长度
alter table student modify(sname varchar2(20));
--新增性别字段
alter table student add(sax char(2));
--修改字段的名称
alter table student rename column sax to sex;
--给表增加主键约束
alter table student add constraint pk_student_sno primary key(sno);
--给表中的sname增加唯一约束
alter table student add constraint uk_student_sname unique(sname);
--给表中的sex字段增加检查约束
alter table student add constraint ck_student_sex check(sex in('男','女'));
--给表中新增一个年级编号字段
alter table student add(gid number(4));
--创建年级表 主表
create table grade(
gradeId number(4) not null primary key,
gradename varchar2(10) not null
);
--创建外键约束
alter table student add constraint fk_student_grade_gid foreign key (gid)
references grade(gradeId);
------------------------------------------------------
序列有些像mysql的自增列,sqlserver的标识列
--创建序列
create sequence sq_studet_sno --序列的名称
start with 10 --序号的开始数值
increment by 10 --步长 每次序号增长的值
maxvalue 9999999999 --序号的最大值
cycle --nocycle 达到最大值时是否重新开始循环序列号
cache 20 --是否缓存序列号,默认是20个,假如步长是10,缓存20就是200个数,可以用nocache
--修改序列名称
rename sq_student_no to sq_student_sno
--查询创建的序列,系统默认视图
select * from user_sequences;
--使用序列 nextval
select sq_student_sno.nextval from dual;
--查看当前序列的值 currval
select sq_student_sno.currval from dual;
--模拟向grade表中使用序列新增数据
insert into grade(gradeid,gradename)
values(sq_student_sno.nextval,'三年级');
--查询年级
select * from grade;