7、外來鍵約束
學習目標:
1、掌握外來鍵約束的意義
2、掌握建立外來鍵約束的語法
學習過程:
一、外來鍵約束
Foreign key 約束用於定義主從表之間的關係,外部鍵約束要定義在從表上, 但主表必須具有主鍵約束或唯一約束. 當定義了外部鍵約束之後,要求外部鍵列的資料必須在主表的主鍵列(或唯一鍵)中存在, 或者為Null。
在資料庫中表與表之間不是獨立的,它們是有關係的。這在我們顯示生活中的例子也有很多,學生表和班級表之間的關係是,每一個學生必然屬於一個班級,也就是說必須先有班級,然後才能新增學生。還比如部門表和職位表,每一個職位也必然屬於某個部門等等。
下面我們建立一個部門表和一個職位表,因為職位表的資料必須參考部門表,所以我們把職位表稱為從表,部門表稱為主表。示例:
1、定義部門表和職位表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
post_id int primary key,
|
2、定義外來鍵約束,FOREIGN KEY:定義在表約束級的子表的列,REFERENCES:鑑別在父表中的表和列
1 2 3 |
|
3、先為部門表新增三條資料
1 2 3 |
|
4、嘗試為職位表新增資料,這時候職位表的外來鍵值必須是部門表已經存在的。
1 2 3 4 5 6 7 |
|
二、CASCADE級聯特性
CASCADE是級聯操作,一般只主表發生變化是,從表應該做如何變化。
ON DELETE CASCADE:當父表中的行被刪除的時候,同時刪除在子表中依靠的行。
nON DELETE SET NULL:將依靠的外來鍵值轉換為空值
示例:
1 2 3 4 5 |
|
嘗試把主表的主鍵為3的語句刪除,這時候從表的外來鍵為3的值就會修改為null值。