mysql添加外鍵的操作要自己輸?shù)姆椒ㄈ缦拢?/p>
創(chuàng)新互聯(lián)是一家專業(yè)提供汕頭企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、H5場景定制、小程序制作等業(yè)務(wù)。10年已為汕頭眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。
1、在CREATETABLE語句中,通過FOREIGNKEY關(guān)鍵字來添加外鍵。
2、在ALTERTABLE語句中,通過ADD和FOREIGNKEY關(guān)鍵字來添加外鍵。
首先要?jiǎng)?chuàng)建一個(gè)字段:alter table 表名 add 字段名 字段類型;
再添加外鍵約束:alter table 需加外鍵的表 add constraint 外鍵名 foreign key(需加外鍵表的字段名) references 關(guān)聯(lián)表名(關(guān)聯(lián)字段名);
注意:外鍵名不能重復(fù)
為已經(jīng)添加好的數(shù)據(jù)表添加外鍵:
語法:alter table 表名 add constraint FK_ID foreign key(你的外鍵字段名) REFERENCES 外表表名(對(duì)應(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
*/
刪除外鍵
語法: ALTER TABLE table-name DROP FOREIGN KEY key-id;
例: ALTER TABLE `tb_active` DROP FOREIGN KEY 'FK_ID'
自動(dòng)鍵更新和刪除:
外鍵可以保證新插入的記錄的完整性,但是,如果在REFERENCES從句中已命名的表刪除記錄會(huì)怎么樣?在使用同樣的值作為外鍵的輔助表中會(huì)發(fā)生什么?
很明顯,那些記錄也應(yīng)該被刪除,否則在數(shù)據(jù)庫中就會(huì)有很多無意義的孤立記錄,MYSQL可以通過向FOREIGN KEY...REFERENCES修飾符添加一個(gè)ON DELETE 或ON UPDATE子句簡化任務(wù),它告訴了數(shù)據(jù)庫在這種情況如何處理孤立任務(wù)。
1、只有InnoDB類型的表才可以使用外鍵。mysql默認(rèn)是MyISAM,這種類型不支持外鍵約束
2、外鍵的好處:可以使得兩張表關(guān)聯(lián),保證數(shù)據(jù)的一致性和實(shí)現(xiàn)一些級(jí)聯(lián)操作。
3、外鍵的作用:
保持?jǐn)?shù)據(jù)一致性,完整性,主要目的是控制存儲(chǔ)在外鍵表中的數(shù)據(jù)。 使兩張表形成關(guān)聯(lián),外鍵只能引用外表中的列的值。
4、建立外鍵的前提:
兩個(gè)表必須是InnoDB表類型。
使用在外鍵關(guān)系的域必須為索引型(Index)。
使用在外鍵關(guān)系的域必須與數(shù)據(jù)類型相似。
5、創(chuàng)建的步驟
指定主鍵關(guān)鍵字: foreign key(列名)。
引用外鍵關(guān)鍵字: references 外鍵表名(外鍵列名)。
6、事件觸發(fā)限制:on delete和on update , 可設(shè)參數(shù)cascade(跟隨外鍵改動(dòng))。
restrict(限制外表中的外鍵改動(dòng)),set
Null(設(shè)空值),set Default(設(shè)默認(rèn)值)。
[默認(rèn)]no action
7、舉例
outTable表 主鍵 id 類型 int
創(chuàng)建含有外鍵的表:
代碼如下:
create table temp(
id int,
name
char(20),
foreign key(id) references outTable(id) on delete cascade on update
cascade);
說明:把id列 設(shè)為外鍵 參照外表outTable的id列 當(dāng)外鍵的值刪除 本表中對(duì)應(yīng)的列篩除 當(dāng)外鍵的值改變 本表中對(duì)應(yīng)的列值改變。
代碼如下:
create table temp( id int, name char(20),
foreign key(id) references outTable(id) on delete cascade on update
cascade);
mysql增加外鍵的方法:1、在CREATE TABLE語句中,通過FOREIGN KEY關(guān)鍵字來添加外鍵;2、在ALTER TABLE語句中,通過ADD和FOREIGN KEY關(guān)鍵字來添加外鍵。
通過工具NAVICAT 設(shè)計(jì)表時(shí)進(jìn)行設(shè)計(jì)
打開NAVICAT,連接數(shù)據(jù)庫
右鍵目標(biāo)表,選擇設(shè)計(jì)表
打開后選擇外鍵菜單,具體如圖:
分別設(shè)置外鍵名,字段,關(guān)聯(lián)數(shù)據(jù)庫、表、字段,以及刪除時(shí)操作,更新時(shí)操作方式然后點(diǎn)擊保存按鈕即可
也可以通過SQL方式完成對(duì)表外鍵的添加,如:
語法:alter table 表名 add constraint FK_ID foreign key(你的外鍵字段名) REFERENCES 外表表名(對(duì)應(yīng)的表的主鍵字段名);