數(shù)據(jù)庫mysql
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),鄒平企業(yè)網(wǎng)站建設(shè),鄒平品牌網(wǎng)站建設(shè),網(wǎng)站定制,鄒平網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,鄒平網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
建立外鍵的前提:本表的列必須與外鍵類型相同(外鍵必須是外表主鍵)。
外鍵作用:使兩張表形成關(guān)聯(lián),外鍵只能引用外表中的列的值!
指定主鍵關(guān)鍵字:foreignkey(列名)
引用外鍵關(guān)鍵字:references外鍵表名(外鍵列名)
事件觸發(fā)限制:ondelete和onupdate,可設(shè)參數(shù)cascade(跟隨外鍵改動),restrict(限制外表中的外鍵改動),setNull(設(shè)空值),setDefault(設(shè)默認值),[默認]noaction
例如:
outTable表主鍵id類型int
創(chuàng)建含有外鍵的表:
createtabletemp(
idint,
namechar(20),
foreignkey(id)referencesoutTable(id)ondeletecascadeonupdatecascade);
說明:把id列設(shè)為外鍵參照外表outTable的id列當(dāng)外鍵的值刪除本表中對應(yīng)的列篩除當(dāng)外鍵的值改變本表中對應(yīng)的列值改變。
自己實踐才能完全了解外鍵的作用關(guān)鍵是:事件觸發(fā)限制的作用
mysql添加外鍵:
為已經(jīng)添加好的數(shù)據(jù)表添加外鍵:
語法:alter table 表名 add constraint FK_ID foreign key(你的外鍵字段名) REFERENCES 外表表名(對應(yīng)的表的主鍵字段名);
例: alter table tb_active add constraint FK_ID foreign key(user_id) REFERENCES tb_user(id)
//FK_ID是外鍵的名稱
/*
CREATE TABLE `tb_active` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(100) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`content` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`user_id` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
KEY `user_id_2` (`user_id`),
CONSTRAINT `FK_ID` FOREIGN KEY (`user_id`) REFERENCES `tb_user` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
*/
外鍵(FK)是用于建立和加強兩個表數(shù)據(jù)之間的鏈接的一列或多列。通過將保存表中主鍵值的一列或多列添加到另一個表中,可創(chuàng)建兩個表之間的鏈接。這個列就成為第二個表的外鍵。
當(dāng)創(chuàng)建或更改表時可通過定義?FOREIGN?KEY?約束來創(chuàng)建外鍵。
例如,數(shù)據(jù)庫?pubs?中的?titles?表與?publishers?表有鏈接,因為在書名和出版商之間存在邏輯聯(lián)系。
titles?表中的?pub_id?列與?publishers?表中的主鍵列相對應(yīng)。titles?表中的?pub_id?列是到?publishers?表的外鍵。
擴展資料:
保持數(shù)據(jù)一致性,完整性,主要目的是控制存儲在外鍵表中的數(shù)據(jù)。 使兩張表形成關(guān)聯(lián),外鍵只能引用外表中的列的值或使用空值。
學(xué)號在成績表(表2)中是主鍵,在學(xué)生表(表1)中是外鍵。如果不使用外鍵,表1的學(xué)號字段插了一個值(比如20140999999),但是這個值在表2中并沒有,這個時候,數(shù)據(jù)庫允許插入,并不會對插入的數(shù)據(jù)做關(guān)系檢查。
然而在設(shè)置外鍵的情況下,插入表1學(xué)號字段的值必須要求在表1的學(xué)號字段能找到。 同時,如果要刪除表2的某個學(xué)號字段,必須保證表2中沒有引用該字段值的列,否則就沒法刪除。
這就是所謂的保持數(shù)據(jù)的一致性和完整性。如右圖,如果表1還引用表2的某個學(xué)號,卻把表1中的這個學(xué)號刪了,表2就不知道這個學(xué)號對應(yīng)的學(xué)生是哪個學(xué)生。
參考資料:百度百科-外鍵