數據庫——修改表
二、修改表
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、不能通過添加約束為某個字段添加
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 ‘註釋內容‘;
數據庫——修改表