MySQL中外鍵的介紹:
- MySQL外鍵必須使用存儲引擎為 innDB 其中MySAM 和MEMORYH這兩種引擎不支持
- 由數據庫自身保證數據一致性,完整性,更可靠,因為程序很難100%保證數據的完整性,而用外鍵即使在數據庫服務器當機或者出現其他問題的時候,也能夠最大限度的保證數據的一致性和完整性。
- 設置外鍵約束的兩個表之間會具有父子關系,即子表中外鍵的字段的取值范圍由父表所決定
- 設置外鍵一定程度上降低數據庫的速度
- 子表的外鍵字段的數據類型和父表中要一致
關於外鍵的設置:
CREATE TABLE table_name (
屬性名: 數據類型
屬性名: 數據類型
.......
CONSTRAINT FR_deptno FOREIGN KEY(子表中的外鍵字段) REFERENCES + 父表名 (父表中的字段)
)
實驗的環境試驗:
- 兩個表 父表 t_dept 子表 t_employee
- 兩個表中的具體的字段
- 設置子表中的外鍵約束字段 deptno 關聯到父表中的 deptno 字段(注意這兩個字段的名字可以是不相同的,但表達的意思是相同的)
驗證子表中的取值范圍由父表決定:
在父表中添加一些字段:
如添加了兩個字段 1和2
此時在子表中添加字段
發現此時在子表中只能選擇1和2 不能添加其他字段
驗證外鍵的完整性:
當我們刪除父表中的字段的時候子表中的字段也被刪除我們刪除父表中deptno 字段為1 ,此時發現子表中的字段只剩下一個2
當我們修改父表中deptno字段的值為3時,發現子表中的字段也改變為3