Oracle數據庫約束條件的使用?

約束條件也稱作完整性約束條件,是在數據表上強制執行的一些數據檢驗規則,當執行DML操作時必須符合約束條件,否則不能成功執行。約束條件包括有非空(Not Null)、唯一(Unique)、主鍵(Primary Key)、外鍵(Foreign Key)和檢查(Check)。約束條件可以在建表時建立也可以在建表後建立。約束條件需要命名,可以由用戶指定,否則由系統按照SYS_Cn的默認格式來命名,n是一串數字。

工具/原料

已安裝有Oracle數據庫11g

已安裝有Oracle SQL Developer

Windows 操作系統

非空(Not Null)

非空(Not Null)約束用於確保字段值不為空。非空約束是五個約束條件中唯一一個只能定義在列級的約束條件。非空約束條件可以在建表時建立,也可以在建表後建立。如下圖:

Oracle數據庫約束條件的使用

Oracle數據庫約束條件的使用

在數據字典中查詢剛剛建立的非空約束條件。

Oracle數據庫約束條件的使用

唯一(Unique)

唯一約束條件用於保證字段或者字段的組合不出現重複值。同樣唯一約束條件可以在建表時建立,也可以在建表後建立。如下圖:

Oracle數據庫約束條件的使用

Oracle數據庫約束條件的使用

在數據字典中查詢唯一約束條件:

Oracle數據庫約束條件的使用

主鍵(Primary Key)

主鍵約束條件從功能上看相當於非空且唯一。主鍵可以是單字段也可以是多字段組合。在一個白哦上只允許建立一個主鍵,而其他約束條件則沒有明確的個數限制。在建表時建立主鍵約束:如下圖

Oracle數據庫約束條件的使用

Oracle數據庫約束條件的使用

在建表後建立表級約束如下圖:

Oracle數據庫約束條件的使用

Oracle數據庫約束條件的使用

在數據字典中查看主鍵約束條件:

Oracle數據庫約束條件的使用

Oracle數據庫約束條件的使用

外鍵(Foreign Key)

外鍵約束條件定義在兩個表的兩個字段或一個表的兩個字段上,用於保證相關兩個字段的關係。

外鍵約束包括兩個方面的數據約束:

(1):子表上定義的外鍵的列值,必須從主表被參照的列值中選取,或者為NULL;

(2):當主表參照的值被子表參照時,主表的該行記錄不允許被刪除。

Oracle數據庫約束條件的使用

Oracle數據庫約束條件的使用

在數據字典中查看外鍵約束條件:

Oracle數據庫約束條件的使用

在外鍵約束中有兩個短語是可選的分別為ON DELETE CASCADE和ON DELETE SET NULL.前一個用於指定級聯刪除選項,當刪除主表數據時會級聯刪除從表的相關數據;後一個表示當刪除主數據時,將從表的外鍵列值設置為NULL

檢查(Check)

檢查約束條件用來強制在字段上的每個值都要滿足Check中定義的條件。

Oracle數據庫約束條件的使用

在數據字典中查看檢查約束條件:

Oracle數據庫約束條件的使用

約束條件的啟用和禁用

從字面上我們應該就能知道該功能的用途了。禁用和啟用約束條件的語法如下:

ALTER TABLE table_name

DISABLE ENABLE CONSTRAINT constraint_name [CASCADE];

禁用Check約束:

Oracle數據庫約束條件的使用

啟用Check約束:

Oracle數據庫約束條件的使用

如果禁用的是主鍵約束條件,且這個主鍵被其他列的外鍵約束參照,則一種選擇是使用CASCADE短語,進行級聯操作,另一種是先將外鍵約束條件禁用或刪除,再禁用主鍵約束。

修改約束條件的名稱

當希望修改約束條件的名稱時,可以使用ALTER TABLE的RENAME CONSTRAINT子句修改約束條件的名稱。語法如下:

ALTER TABLE table_name

RENAME CONSTRAINT old_cons_name TO new_cons_name;

具體實現如下圖:

Oracle數據庫約束條件的使用

Oracle數據庫約束條件的使用

注意事項

英文非空約束只能定義在列級,故在建表後在增加非空約束條件,只能使用ALTER TABLE的MSDIFY子句,而不能使用ADD CONSTRAINT子句

一般約束條件的命名規則是:表名_列名_約束條件類型

當約束條件建立好後,可以通過字典USER_CONSTRAINTS和UESR_CONS_COLUMNS查看。經常使用到的字段報告OWNER(約束條件所有人)、CONSTRAINT_NAME(約束條件的名稱)、CONSTRAINT_TYPE(約束條件的類型)、TABLE_NAME(約束條件的名稱)以及COLUMN_NAME(建立了約束條件的列名)

相關問題答案