建立2個表,分別爲studnet 學生表和monitor 班長表數據庫
學生表有學號和姓名2個屬性;測試
班長表有班級和學號2個屬性。spa
班長表設置外鍵學號,鏈接主表學生表的學號屬性。3d
並插入數據如圖:blog
當取值爲No Action或者Restrict時,則當在父表(即外鍵的來源表)中刪除對應記錄時,首先檢查該記錄是否有對應外鍵,若是有則不容許刪除。it
當取值爲Cascade時,則當在父表(即外鍵的來源表)中刪除對應記錄時,首先檢查該記錄是否有對應外鍵,若是有則也刪除外鍵在子表(即包含外鍵的表)中的記錄。io
當取值爲Set Null時,則當在父表(即外鍵的來源表)中刪除對應記錄時,首先檢查該記錄是否有對應外鍵,若是有則設置子表中該外鍵值爲null(不過這就要求該外鍵容許取null)。im
當取值爲No Action或者Restrict時,則當在父表(即外鍵的來源表)中更新對應記錄時,首先檢查該記錄是否有對應外鍵,若是有則不容許更新。d3
當取值爲Cascade時,則當在父表(即外鍵的來源表)中更新對應記錄時,首先檢查該記錄是否有對應外鍵,若是有則也更新外鍵在子表(即包含外鍵的表)中的記錄。總結
當取值爲Set Null時,則當在父表(即外鍵的來源表)中更新對應記錄時,首先檢查該記錄是否有對應外鍵,若是有則設置子表中該外鍵值爲null(不過這就要求該外鍵容許取null)。
外鍵的使用對於減小數據庫冗餘性,以及保證數據完整性和一致性有很大做用。
另外注意,若是兩張表之間存在外鍵關係,則MySQL不能直接刪除表(Drop Table),而應該先刪除外鍵,以後才能夠刪除。
因此通常默認就好(RESTRICT)。