Oracle-04:DDL语言数据表的操作

时间:2021-11-28 13:01:23

------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥-------------

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;