mysql 外鍵約束(轉(zhuǎn)載)

【附:MYSQL中文指南 http://c.biancheng.net/view/2441.html

原文鏈接:https://www.cnblogs.com/whylinux/p/9905134.html

mysql之外鍵約束

1.什么是外鍵

  A表的主鍵丛版,在B表中字段出現(xiàn)疹味,就是外鍵。

2.什么是約束:約束是一種限制虑瀑,它通過對(duì)表的行貨列的數(shù)據(jù)做出限制,來確保表的數(shù)據(jù)的完整性、唯一性。比如人員表中有一列是部門id轮蜕,當(dāng)新增一個(gè)人員的時(shí)候,我們不需要手動(dòng)的在部門id字段給這個(gè)人員設(shè)置一個(gè)部門蝗锥,而是新增則個(gè)新人員記錄的時(shí)候默認(rèn)就會(huì)有一個(gè)部門id給了這個(gè)人員跃洛,這就是約束。


3.以上1和2結(jié)合一起就是外鍵約束终议。即:foreign key


4.具體操作

4.1創(chuàng)建表時(shí)汇竭,同時(shí)創(chuàng)建外鍵約束

4.2已創(chuàng)建表后,追加外鍵約束

(1)添加外鍵方法

-- CONSTRAINT 就是創(chuàng)建外鍵約束 fk_id是外鍵約束的名字-- foreign key (dept_id) references dept(did)意思是設(shè)置person表中的dept_id字段和dept表中的did字段關(guān)聯(lián)穴张,dept表中的did字段就是person表中的dept_id的外鍵約束细燎,這個(gè)外鍵約束的名字叫做fk_id,一般潛規(guī)則外鍵約束的名字開頭是fk_altertablepersonaddCONSTRAINTfk_idforeignkey(dept_id)REFERENCESdept(did);


此時(shí)可以發(fā)現(xiàn)在person表中的皂甘,點(diǎn)擊外鍵按鈕玻驻,可以看到創(chuàng)建出來的外鍵

欄位表示的是person表中的dept_id字段,參考欄位的did就是person表中的dept_id字段的約束偿枕,dept_id字段的值被約束為dept字段did字段的值



? 主表就是外鍵約束有約束值的那個(gè)表

從表就是被約束的那個(gè)表

(2)外鍵約束的4種類型璧瞬,RESTRICT、NO ACTION渐夸、CASCADE嗤锉、SET NULL主要針對(duì)于外鍵里的刪除時(shí)和更新時(shí)

RESTRICT(約束):如果出現(xiàn)在刪除時(shí),意思是約束外鍵主鍵did記錄(主表中的記錄)不能直接刪除捺萌,必須先刪除被約束的表(從表)字段中dept_id所有這個(gè)外鍵主鍵值對(duì)應(yīng)的記錄,才能刪除外鍵約束(主表中的記錄)

NO ACTION:

CASCADE:刪除選擇這個(gè)時(shí),刪除主表中的記錄時(shí)桃纯,主表中的這個(gè)主鍵id關(guān)聯(lián)的從表的這個(gè)id值所在的記錄也會(huì)被刪除酷誓。建議不選。

SET NULL :刪除選擇這個(gè)時(shí)态坦,如果從表(被約束的字段所在的表中)被約束的字段的值設(shè)置為可以為空時(shí)盐数,那么當(dāng)刪除主表的記錄時(shí),主表中被刪除的這個(gè)記錄對(duì)應(yīng)的主鍵值(約束從表字段的那個(gè)值)在從表中對(duì)應(yīng)的字段中出現(xiàn)的那個(gè)記錄的被約束字段的值就會(huì)變?yōu)镹ULL伞梯。

最常用的是選擇RESTRICT不讓刪的這個(gè)約束玫氢、或者選擇SET NULL刪除后值表為空。

目前公司都不太喜歡使用這種真實(shí)的外鍵約束谜诫,而是使用虛擬的外鍵約束漾峡。虛擬外鍵約束:就是人員表中的部門id字段中的id值是部門表中的主鍵id的值,這就是虛擬外鍵約束喻旷,也是目前來說比較流行使用的生逸。

(3)刪除外鍵

-- 刪除外鍵約束altertablepersonDROPforeignkeyfk_id;



5.其他約束類型


-- 向t5表中插入兩條記錄,第二值用的都是默認(rèn)值且预,如果是默認(rèn)值則可以不填或填defaultinsertintot5values(3,DEFAULT), (4,DEFAULT);

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末槽袄,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子锋谐,更是在濱河造成了極大的恐慌遍尺,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涮拗,死亡現(xiàn)場(chǎng)離奇詭異乾戏,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)多搀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門歧蕉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人康铭,你說我怎么就攤上這事惯退。” “怎么了从藤?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵催跪,是天一觀的道長。 經(jīng)常有香客問我夷野,道長懊蒸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任悯搔,我火速辦了婚禮骑丸,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己通危,他們只是感情好铸豁,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著菊碟,像睡著了一般节芥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上逆害,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天头镊,我揣著相機(jī)與錄音,去河邊找鬼魄幕。 笑死相艇,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的梅垄。 我是一名探鬼主播厂捞,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼队丝!你這毒婦竟也來了靡馁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤机久,失蹤者是張志新(化名)和其女友劉穎臭墨,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體膘盖,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡胧弛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了侠畔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片结缚。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖软棺,靈堂內(nèi)的尸體忽然破棺而出红竭,到底是詐尸還是另有隱情,我是刑警寧澤喘落,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布茵宪,位于F島的核電站,受9級(jí)特大地震影響瘦棋,放射性物質(zhì)發(fā)生泄漏稀火。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一赌朋、第九天 我趴在偏房一處隱蔽的房頂上張望凰狞。 院中可真熱鬧篇裁,春花似錦、人聲如沸赡若。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽斩熊。三九已至,卻和暖如春伐庭,著一層夾襖步出監(jiān)牢的瞬間粉渠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國打工圾另, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留霸株,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓集乔,卻偏偏與公主長得像去件,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子扰路,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容