如:
ALTER TABLE invoice_check ADD invoice_name VARCHAR2(100);
還可以在添加列是定義列屬性,如:
ALTER TABLE invoice_check ADD invoice_name VARCHAR2(100) CHECK(LENGTH(invoice_name)<=50);
如:
ALTER TABLE invoice_check MODIFY invoice_name VARCHAR2(100);
Oracle數(shù)據(jù)庫不允許會引起數(shù)據(jù)庫數(shù)據(jù)丟失的列更改,如果現(xiàn)在將invoice_name的長度變回20,將會引起異常:
SQL> ALTER TABLE invoice_check MODIFY invoice_name VARCHAR2(20);ALTER TABLE invoice_check MODIFY invoice_name VARCHAR2(20) *ERROR 位于第1行:ORA-01441:無法減小列長度,因為一些值過大
如:
ALTER TABLE invoice_check DROP COLUMN invoice_name;
上面的代碼將刪除invoice_check
表中的invoice_name
字段,無論字段中是否有值。
如:
ALTER TABLE invoice_check RENAME COLUMN invoice_name TO invoice_name_short;
如:
--添加主鍵約束ALTER TABLE invoice_check ADD CONSTRAINT invoice_check_pk PRIMARY KEY (invoice_id);--添加檢查約束ALTER TABLE invoice_check_othersADD CONSTRAINT invoice_total_ck CHECK(invoice_total>=1);--添加外鍵約束ALTER TABLE invoice_check_othersADD CONSTRAINT invoice_fk_vendors FOREIGN KEY (vendor_id) REFERENCES vendors(vendor_id);--添加NOT NULL約束ALTER TABLE vendors ADD CONSTRAINT vendor_vendor_name_nn NOT NULL;
如:
--移除UNIQUE約束ALTER TABLE invoice_check DROP CONSTRAINT invoice_check_nn;
使用DROP TABLE語句,可以刪除數(shù)據(jù)表中所有的數(shù)據(jù)和數(shù)據(jù)表結(jié)構(gòu)及約束,如:
DROP TABLE invoice_check;
在使用DROP TABLE語句時,Oracle會檢查要刪除的 表是否存在與其他表的依賴關系,如果存在,Oracle將不允許刪除。
比如invoice表中的vendor_id
與vendors表中的vendor_id
具有主外鍵關系,要能成功刪除vendors表,必須首先刪除invoice表,然后再刪除vendors表。
Oracle還提供了在DROP TABLE語句中可以使用的CASCADE CONSTRAINTS語句來級聯(lián)刪除關聯(lián)關系,如果使用:DROP TABLE vendors CASCADE CONSTRAINTS;
則vendors表被成功刪除,同事刪除了vendors表和invoice表之間的主外鍵約束,但是存儲在invoice表中的數(shù)據(jù)并沒有被刪除,依然存在。
聯(lián)系客服