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會發現可以刪除,而且example2子表中的資料也沒有了。from example1 where stu_id=
3;
MySQL 外來鍵及外來鍵的使用
如果公共關鍵字在乙個關係中是主關鍵字,那麼這個公共關鍵字被稱為另乙個關係的外來鍵。由此可見,外來鍵表示了兩個關係之間的相關聯絡。以另乙個關係的外來鍵作主關鍵字的表被稱為主表,具有此外鍵的表被稱為主表的從表。外來鍵又稱作外關鍵字。表間關係有一對一,一對多和多對多。首先我們舉個簡單的栗子 學生表,老師表...
mysql外來鍵教程 MySQL外來鍵使用詳解
最近有開始做乙個實驗室管理系統,因為分了幾個表進行儲存 所以要維護表間的關聯 研究了一下mysql的外來鍵 1 只有innodb型別的表才可以使用外來鍵,mysql預設是myisam,這種型別不支援外來鍵約束 2 外來鍵的好處 可以使得兩張表關聯,保證資料的一致性和實現一些級聯操作 3 外來鍵的作用...
mysql是否推薦使用外來鍵 MySQL 外來鍵使用
mysql 外來鍵使用 外來鍵的使用條件 1.兩個表必須是innodb表,myisam表暫時不支援外來鍵 據說以後的版本有可能支援,但至少目前不支援 2.外來鍵列必須建立了索引,mysql 4.1.2以後的版本在建立外來鍵時會自動建立索引,但如果在較早的版本則需要顯示建立 3.外來鍵關係的兩個表的列...