Mysql外來鍵的使用

2021-09-07 18:07:22 字數 2821 閱讀 7657

mysql外來鍵(請確保資料庫是innodb型別)網上有很多介紹的文章,這裡我就憑自己的理解再次整理了下,廢話不多說,直入正題哈.

外來鍵的作用:

保持資料一致性,完整性,主要目的是控制儲存在外鍵表中的資料。使兩張表形成關聯,外來鍵只能引用外表中列的值!

我們來建兩個表

example1表,裡面包含stu_id學號,name姓名,course_id課程號,grade分數

example2表,裡面包含id,stu_id學號,course_id課程號,然後建立外來鍵

分別插入資料到兩個表中。

我們把example2中的stu_id和course_id稱為example2表的外來鍵,example1是父表,example2是子表,兩個表形成關聯,必須子表的資料刪除後,才能刪除父表中的對應資料

現在我們來刪除example1中的一條資料:

因為example2中的資料關聯了example1的資料,這樣是刪不了的,達到了外來鍵的作用.

然後我們來先刪除example2表中的資料,再刪除example1表中的資料

這樣就成功了;

事件觸發限制: 

on delete和on update , 可設引數cascade(跟隨外來鍵改動), restrict(限制外表中的外來鍵改動),set null(設空值),set default(設預設值),[預設]no action

我們來看看事件觸發限制是幹啥的。。。

我們先刪除外來鍵,然後重新建立外來鍵帶上事件觸發限制

alter

table example2 drop

foreign

keyf_ck;

alter

table example2 add

constraint `f_ck` foreign

key (`stu_id`, `course_id`) references `example1` (`stu_id`, `course_id`) on

delete

cascade

onupdate

cascade;

我們先看下資料:

再來修改example1表中的資料看看

update example1 set stu_id=

3,course_id=

3where stu_id=

1;

再來檢視資料:

發現沒,example1和example2中的stu_id和course_id都變成了3。

我們在來刪除example1表中的資料

delete

from example1 where stu_id=

3;

會發現可以刪除,而且example2子表中的資料也沒有了。

MySQL 外來鍵及外來鍵的使用

如果公共關鍵字在乙個關係中是主關鍵字,那麼這個公共關鍵字被稱為另乙個關係的外來鍵。由此可見,外來鍵表示了兩個關係之間的相關聯絡。以另乙個關係的外來鍵作主關鍵字的表被稱為主表,具有此外鍵的表被稱為主表的從表。外來鍵又稱作外關鍵字。表間關係有一對一,一對多和多對多。首先我們舉個簡單的栗子 學生表,老師表...

mysql外來鍵教程 MySQL外來鍵使用詳解

最近有開始做乙個實驗室管理系統,因為分了幾個表進行儲存 所以要維護表間的關聯 研究了一下mysql的外來鍵 1 只有innodb型別的表才可以使用外來鍵,mysql預設是myisam,這種型別不支援外來鍵約束 2 外來鍵的好處 可以使得兩張表關聯,保證資料的一致性和實現一些級聯操作 3 外來鍵的作用...

mysql是否推薦使用外來鍵 MySQL 外來鍵使用

mysql 外來鍵使用 外來鍵的使用條件 1.兩個表必須是innodb表,myisam表暫時不支援外來鍵 據說以後的版本有可能支援,但至少目前不支援 2.外來鍵列必須建立了索引,mysql 4.1.2以後的版本在建立外來鍵時會自動建立索引,但如果在較早的版本則需要顯示建立 3.外來鍵關係的兩個表的列...