二、修改表
1、修改表字段:
a、添加字段
alter table student
add (sex char(2) default '1' constraint student_sex_type check(sex='1' or sex='2'))
注意:新添加的字段在表的最后一列,不能指定字段的位置,这与MySQL数据库不同(MySQL数据库可以通过after设定添加字段的先后顺序)
b、修改字段
alter table student
modify(name varchar2(12))
注意:字段的修改包括修改数据类型(只有对应列为空指才可以修改)、大小和默认值,其中默认值的修改只会影响后来插入表的数据,对之前的数据不会产生影响。
c、删除字段
alter table student
drop(sex)
注意:
①、一次只能删除一个字段;
②、一个表至少要保留一个字段;
③、如果所删除列(如publisher表中id列)是另一个表的外键(book表publisher_id)则该列(publisher表中id列)无法删除,如下图所示:
2、修改表字段约束:
a、添加约束
alter table student
add constraint student_id_pk primary key(id);--将student表id列设为主键
注意:
1、可以一次添加多个约束,如下:
2、不能通过添加约束为某个字段添加not null约束,只能通过修改字段为其指定not null,如下:
b、删除约束
alter table student
drop constraint student_sex_type;--依据约束名删除约束
alter table student
drop primary key--依据约束类型删除约束
alter table student
drop unique(id) --依据约束类型删除约束
注意:drop子句后面可以使用cascade,意为删除约束的同时与其相依赖的约束也一同删除,例如:
c、启用或禁用约束
禁用约束:
alter table student
disable constraint student_sex_type;--禁用约束
注意:disable子句后面可以使用cascade,意为禁用约束的同时与其相依赖的约束也一同禁用,例如:
启用约束:
alter table student
enable constraint student_sex_type;--启用约束,注意:enable后面不能使用cascade关键字
注意:约束无法修改,只能通过先删除再创建的方式间接修改字段约束。
三、表重命名
rename 旧名字 to 新名字
四、截断表
truncate table 表名——不用执行commit就可以将表数据删除
delete from 表名——必须执行commit才可以将表数据删除
delete、drop、truncate的区别
五、删除表
drop table 表名
六、注释
表注释
comment on table 表名 is '注释内容';
字段注释
comment on column 表名.字段名 is '注释内容';