資料庫之約束關係

2021-09-30 05:11:37 字數 1401 閱讀 3619

包括5種型別:

1、檢查約束:通過在定義資料庫表裡,在字段級或者是在表級加入的檢查約束,使其滿足特定的要求。

比如以下的表定義:

crate table student(id serial,name varchar(10),scrore integer check (scrore > 0));定義分數不能小於0。

也可以定義表中幾個字段之間的關係

2、非空約束:

列不能為空,直接在字段後面加上:not null。

3、唯一約束:

定義乙個唯一約束,但是該列可以包括null值,且null值不進行唯一關係判斷。直接在字段定義後加入unique即可定義乙個唯一約束。

4、主鍵約束:

其實就是:唯一約束+非空約束。

5、外來鍵約束:

定義表中的某一列a與另一列b(可以是本表或其它表,該列必須是唯一約束的列)有外來鍵約束關係。

a中的值必須為b列中已經出現過的值,以保證資料庫中記錄的一致性。

當b列中的值刪除或修改時,資料庫會按照

新增外來鍵約束時,可以指定該約束的刪除和修改策略,即:若b列中某個值在a列中有對應的記錄,那麼當修改或刪除這個值時a列中相應記錄的處理策略:

sql92標準中,有這幾種策略:

a:限制restrict:這種方式不允許對被參考的記錄的鍵值執行更新或刪除的操作,在語句執行之前判斷和報錯

b:不做操作no action:這種方式不允許對被參考的記錄的鍵值執行更新或刪除的操作,在語句執行之後判斷和報錯:oracle預設是這種策略,在oracle中,還能指定是否允許將約束條件檢查延遲到該事務處理結束時

c:置為空set to null:當參考的資料被更新或者刪除,那麼所有參考它的外鍵值被置為空;該策略包括更新和刪除兩種情況,即delete set to null以及update set to null

d:置為預設值set to default:當參考的資料被更新或者刪除,那麼所有參考它的外鍵值被置為乙個預設值;該策略包括更新和刪除兩種情況,即delete set to default以及update set to default

e:級聯cascade:當參考的資料被更新,則參考它的值同樣被更新,當參考的資料被刪除,則參考它的子表記錄也被刪除;該策略包括更新和刪除兩種情況,即delete cascade以及update cascade

例:sql> alter table table1 add constraint foreignconstraint1

2 foreign key (column1n1)

3 references table2 (column2n1)

4 on delete cascade;

注:在oracle中,預設只支援3種約束策略no action、delete set null和delete cascade    ,其它5種策略只能夠通過使用觸發器來實現

oracle資料庫之約束

一 非空約束 1 在建立表時設定非空約束 在資料型別後面加上 not null create table tablename username varchar2 20 not null,2 在修改表時新增非空約束 其實也就是修改欄位的定義,但是需要表中沒有資料 確切的說是要新增非空約束的列沒有非空資...

Oracle資料庫之約束

約束 資料的完整性用於確保資料庫資料遵從一定的商業和邏輯規則。在oracle中,資料完整性可以使用約束 觸發器 應用程式 過程 函式 三種實現。而約束易於維護並且效能最好,所以作為維護資料完整性的首選。約束包括五種 not null 不為空 unique 唯一 primary key 主鍵 fore...

mysql資料庫之約束

約束是一種限制,它通過對錶的行或列的資料做出限制,來確保標的資料完整性 唯一性。1 非空約束 not null 欄位的值不能為空 1.1 建立表時新增非空約束 1.2 修改表時新增非空約束 1.3 刪除非空約束 2 唯一約束 unique 要求該列唯一,允許為空,唯一約束可以確保一列或者幾列不出現重...