前一篇是針對表的增刪改,下面是針對表裡的欄位的增刪改
ALTER TABLE <table> ADD <field> <type> [default];-- 增加一個欄位
ALTER TABLE <table> ADD (<field> <type> [default], <field> <type> [default]);-- 增加多個欄位 ALTER TABLE <table> DROP COLUMN <field>;-- 刪除一個欄位 ALTER TABLE <table> DROP (<field>, <field>);-- 刪除多個欄位 ALTER TABLE <table> MODIFY <field> <type> [default] [not null];-- 修改欄位,不包括欄位重命名 ALTER TABLE <table> RENAME COLUMN <old_field> TO <new_field>;-- 欄位重命名用這個
※官網連結
※删除约束可用「ALTER TABLE <table> Drop CONSTRAINT <約束名稱>;」
※增加UK:ALTER TABLE <table> ADD CONSTRAINT <約束名稱> UNIQUE(欄位);
※增加PK:ALTER TABLE <table> ADD CONSTRAINT <約束名稱> PRIMARY KEY(欄位);
※增加複合主鍵:前面和「增加PK」一樣,最後是PRIMARY KEY(欄位,欄位...);
※增加FK:ALTER TABLE <table> ADD CONSTRAINT <約束名稱> FOREIGN KEY(欄位) REFERENCES 另一張表名稱(另一張表欄位);
※UNUSED
如果資料太多,會刪的很慢,所以可以先設定成不使用,等到沒什麼人用資料庫時再刪,例如凌晨時再刪變成不使用的狀態後,SELECT看不到不使用的欄位
ALTER TABLE xxx SET UNUSED COLUMN price; -- 將一個欄位設為不使用 ALTER TABLE xxx SET UNUSED(name); -- 將一個欄位設為不使用 ALTER TABLE xxx SET UNUSED(name, id); -- 將多個欄位設為不使用 ALL_UNUSED_COL_TABS -- 這張表可以得知表裡有幾個不使用欄位 ALTER TABLE xxx DROP UNUSED COLUMNS; -- 刪除不使用的欄位
※官網我沒有看到恢復UNUSED變成使用狀態,所以小心使用
※如果想要恢復還可以用下面要講的VISIBLE
※VISIBLE/INVISIBLE
這個功能是Oracle 12c才有的,可以用V$VERSION這張表,看資料庫版本在新增時,如果欄位名稱不夠,會編譯錯誤,而這個功能可以讓SELECT、DESC時,看不到這個欄位,新增也不需要用到這個欄位,它會直接給null
ALTER TABLE xxx MODIFY(name invisible); CREATE TABLE xxx ( id number(5), name varchar2(20) INVISIBLE );
※第一條SQL是讓name欄位看不見,要回復只要改成VISIBLE即可
※也可以像第二條SQL那樣,在新增表時就使用
※雖然看不見欄位,但用下面要講的COMMENT,USER_COL_COMMENTS 這張表就能看到了
※COMMENT
就是為表和欄位增加註解,讓人家知道這個表和欄位是做什麼用的COMMENT ON TABLE <table> IS 'xxx'; COMMENT ON COLUMN <table>.<field> IS 'ooo'; SYS.USER_TAB_COMMENTS -- 看所有表的註解 SYS.USER_COL_COMMENTS -- 看所有欄位的註解
沒有留言:
張貼留言