mysql 外鍵的使用,以及主從表的區別

目的:演示mysql的外鍵的創建、刪除、外鍵的級聯操作

使用mysql創建2張表:按順序依次創建班級class表和學生表students
在這裏插入圖片描述
創建外鍵時,可以爲外鍵起個名字(constraint後面緊挨的字符串爲),該名字在刪除外鍵時會被使用。
在這裏插入圖片描述
注意:如果先創建學生表students並同時創建外鍵指向班級表class,會報錯,因爲class表不存在。

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述

在這裏插入圖片描述

要想刪除表class裏面1班的數據,同時刪除學生表students裏面小明的數據,則要設置students表的外鍵的on delete cascade

先刪除原來的外鍵。

在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

on update和on delete的方法類似。

注意:

  • 班級表class爲主表,學生表students爲從表。
  • 主從表區別,看外鍵在哪個表,外鍵在學生表,則學生表students爲從表,班級表class爲主表。

on delete、on update表示事件觸發限制,可設參數
外鍵的級聯操作的類型包括:

  • restrict(限制外表中的外鍵改動):默認值,拋異常。on delete | update restrict
    代表在主表進行刪除和更新時,會查看是否存在外鍵依賴,如果有則不允許刪除

  • cascade(級聯,跟隨外鍵改動):在主表進行操作時,如果主表的記錄刪除掉,如果有外鍵依賴,那麼則刪除子表中相關聯的那條記錄

  • set null:
    在主表進行操作時 如果有外鍵依賴 那麼將子表中的數據設置爲null

  • no action:什麼都不做

總結:分清主從表,因爲當刪除從表時一條數據時,對主表沒有影響。當刪除主表的一條數據,如有外鍵依賴,則會連從表的相關數據一起刪除。

刪除從表測試如下:

在這裏插入圖片描述

刪除主表測試:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章