sql中key用法有哪些?
MySQL中外鍵(FROEIGN KEY)的使用1.定義:
外鍵用來在兩個表的數據之間建立鏈接,它可以是一列或者多列;一個表可以有一個或多個外鍵。
外鍵對應的是參照完整性,一個表的外鍵可以為空值,若不為空值,則每一個外鍵值必須等于另一個表中主鍵的某個值。
外鍵是表的一個字段,不是表的主鍵,但對應另一個表的主鍵;定義外鍵后,不允許刪除另一個表中具有關聯關系的行。
主表(父表):對于兩個具有關聯關系的表而言,相關聯字段中主鍵所在的那個表即是主表;
從表(子表):對于兩個具有關聯關系的表而言,相關聯字段中外鍵所在的那個表即是從表。
被指向的實體,稱之為主實體(主表),也叫父實體(父表)
負責指向的實體,稱之為從實體(從表),也叫子實體(子表);
?
若‘表1’的一個列既是主鍵又是外鍵,而這個外鍵約束又對應另一個表‘表2’的主鍵,那么‘表1’和‘表2’就可以合并起來了
2.作用:
外鍵的主要作用是保持數據的一致性、完整性。
如果主表沒有相關的記錄,從表不能插入;
更新時,不能改為主鍵表中沒有的值;
刪除主鍵表記錄時,可以在建外鍵時選定外鍵記錄一起級聯刪除還是拒絕刪除;同樣有級聯更新和拒絕更新的選擇。
ON DELETE CASCADE 級聯刪除
ON UPDATE CASCADE 級聯更新
3.設置MySQL外鍵約束字段的規則:
? 父表必須已經存在于數據庫中,或者是當前正在創建的表;若是后者,則父表與子表是同一個表,這樣的表稱為自參照完整性。
? 必須為父鍵定義主鍵。
? 主鍵不能包含空值,但允許在外鍵中出現空值;也就是說,只要外鍵的每個非空值出現在指定的主鍵中,這個外鍵的內容就是正確的。
? 在父表的表名后面指定列名或列名的組合,這個列的組合必須是父鍵的主鍵或者候選鍵。
? 外鍵中列的數據類型和父鍵主鍵中對應的數據類型相同。
? 外鍵中列的數目必須和父鍵中列的數目相同。
4.創建、添加外鍵的語法規則:
(1) 創建
[CONSTRAINT ] FOREIGN KEY 字段名 [,字段名2,…]
REFERENCES 主鍵列1 [,主鍵列2,…]
“外鍵名”為定義的外鍵約束的名稱,一個表中不能有相同名稱的外鍵;
“字段名”表示子表需要添加外鍵約束的字段列;
“主表名”即被子表外鍵所依賴的表的名稱;
“主鍵列”表示主表中定義的主鍵列,或者列組合。
(2) 添加
ALTER TABLE ADD CONSTRAINT (形如:FK_從表_主表)
FOREIGN KEY () REFERENCES ();