MySQL外鍵應用詳解。本站提示廣大學習愛好者:(MySQL外鍵應用詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL外鍵應用詳解正文
比來有開端做一個試驗室治理體系,由於分了幾個表停止存儲·所以要保護表間的聯系關系··研討了一下MySQL的外鍵。
(1)只要InnoDB類型的表才可使用外鍵,mysql默許是MyISAM,這類類型不支撐外鍵束縛
(2)外鍵的利益:可使得兩張表聯系關系,包管數據的分歧性和完成一些級聯操作;
(3)外鍵的感化:
堅持數據分歧性,完全性,重要目標是掌握存儲在外鍵表中的數據。 使兩張表構成聯系關系,外鍵只能援用表面中的列的值!
(4)樹立外鍵的條件:
兩個表必需是InnoDB表類型。
應用在外鍵關系的域必需為索引型(Index)。
應用在外鍵關系的域必需與數據類型類似
(5)創立的步調
指定主鍵症結字: foreign key(列名)
援用外鍵症結字: references <外鍵表名>(外鍵列名)
(6)事宜觸發限制:on delete和on update , 可設參數cascade(追隨外鍵修改), restrict(限制表面中的外鍵修改),set Null(設空值),set Default(設默許值),[默許]no action
(7)舉例
outTable表 主鍵 id 類型 int
創立含有外鍵的表:
create table temp(
id int,
name char(20),
foreign key(id) references outTable(id) on delete cascade on update cascade);
解釋:把id列 設為外鍵 參照表面outTable的id列 當外鍵的值刪除 本表中對應的列篩除 當外鍵的值轉變 本表中對應的列值轉變。
create table temp( id int, name char(20), foreign key(id) references outTable(id) on delete cascade on update cascade);
缺陷:在對MySQL做優化的時刻相似查詢緩存,索引緩存之類的優化對InnoDB類型的表是不起感化的,還有在數據庫全體架構頂用得同步復制也是對InnoDB類型的表不失效的,像數據庫中焦點的表相似商品表請年夜家盡可能不如果應用外鍵,假如同步確定要同步商品庫的,加上了外鍵也就沒法通不了,優化也對它沒感化,豈不能不償掉,做外鍵的目標在於包管數據完全性,請年夜家經由過程法式來完成這個目標而不是外鍵,切記!
以上所述就是本文的全體內容了,願望年夜家可以或許愛好。
請您花一點時光將文章分享給您的同伙或許留下評論。我們將會由衷感激您的支撐!