mysql增加外鍵的方法:1、在CREATE TABLE語句中,通過FOREIGN KEY關(guān)鍵字來添加外鍵;2、在ALTER TABLE語句中,通過ADD和FOREIGN KEY關(guān)鍵字來添加外鍵。

專業(yè)成都網(wǎng)站建設(shè)公司,做排名好的好網(wǎng)站,排在同行前面,為您帶來客戶和效益!成都創(chuàng)新互聯(lián)為您提供成都網(wǎng)站建設(shè),五站合一網(wǎng)站設(shè)計(jì)制作,服務(wù)好的網(wǎng)站設(shè)計(jì)公司,成都網(wǎng)站建設(shè)、做網(wǎng)站負(fù)責(zé)任的成都網(wǎng)站制作公司!
一張表中的主鍵只能有一個(gè),外鍵可以有多個(gè),如果一張表中多個(gè)列都需要被別的表的外鍵參考,需要使用候選碼(非空并且唯一),具體到你的這個(gè)問題的需求可以考慮用如下方法解決:
把a(bǔ)表中的bookid和authorid都設(shè)置為非空并且唯一,即
create table a(bookid int not null unique, authorid int not null unique);
然后在book表和author表中就可以分別設(shè)置外鍵來參照a表中兩個(gè)不同的字段了。
打開我的navicat,然后找到我的teacher表,選中它,然后點(diǎn)擊菜單欄上的‘design table'
2. 在彈出的對話框中找到“Foreign Keys”,然后單機(jī)。
3. 然后會(huì)出現(xiàn)一個(gè)設(shè)置外鍵的界面,一共有七列。簡單介紹一下這幾列的意思。‘name’:可以不填,你一會(huì)保存成功系統(tǒng)會(huì)自動(dòng)生成。FieldName’:就是你要把哪個(gè)鍵設(shè)置為外鍵。這里選擇‘dept’,‘Reference DadaBase’:外鍵關(guān)聯(lián)的數(shù)據(jù)庫。‘Reference Table‘ :關(guān)聯(lián)的表 這里是dept表‘Forgin filed Names’:關(guān)聯(lián)的的字段,這里是code‘ondelete’:就是刪除的時(shí)候選擇的動(dòng)作。這里我的選擇是setNull,意思就是當(dāng)關(guān)聯(lián)的表刪除以后,teacher》dept字段會(huì)設(shè)置為null.
4. 設(shè)置完成后點(diǎn)擊‘save’保存退出,也可以點(diǎn)擊‘a(chǎn)dd Foreign Key’再添加一個(gè)外鍵。
打開我的navicat,然后找到我的teacher表,選中它,然后點(diǎn)擊菜單欄上的‘design table’。如下圖:
2. 在彈出的對話框中找到“Foreign Keys”,然后單機(jī)。如下圖:
3. 然后會(huì)出現(xiàn)一個(gè)設(shè)置外鍵的界面,一共有七列。簡單介紹一下這幾列的意思。‘name’:可以不填,你一會(huì)保存成功系統(tǒng)會(huì)自動(dòng)生成。FieldName’:就是你要把哪個(gè)鍵設(shè)置為外鍵。這里選擇‘dept’,‘Reference DadaBase’:外鍵關(guān)聯(lián)的數(shù)據(jù)庫。‘Reference Table‘ :關(guān)聯(lián)的表 這里是dept表‘Forgin filed Names’:關(guān)聯(lián)的的字段,這里是code‘ondelete’:就是刪除的時(shí)候選擇的動(dòng)作。這里我的選擇是setNull,意思就是當(dāng)關(guān)聯(lián)的表刪除以后,teacher》dept字段會(huì)設(shè)置為null。如圖
4. 設(shè)置完成后點(diǎn)擊‘save’保存退出,也可以點(diǎn)擊‘a(chǎn)dd Foreign Key’再添加一個(gè)外鍵。k如圖:
為已經(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
*/
刪除外鍵
語法: 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ù)。
工具/原料
電腦
MySQL
方法/步驟
設(shè)置主鍵:
1、通過終端進(jìn)入到mysql命令行工具。
2、通過use關(guān)鍵字進(jìn)行到目標(biāo)數(shù)據(jù)庫里。
3、如原表已有主鍵,先把原來的主鍵刪除掉,通過DROP
PRIMARY
KEY命令:ALTER
TABLE
`jingyan`
DROP
PRIMARY
KEY;。
4、主鍵已經(jīng)沒有了。
5、通過命令:ADD
PRIMARY
KEY來添加ALTER
TABLE
`jingyan`
ADD
PRIMARY
KEY
(
`id`
)
。
6、輸入后按下回車鍵即可看到
query
ok執(zhí)行成功的字符。
7、回到數(shù)據(jù)庫的可視化工具,即可顯示現(xiàn)在的表在id列上添加了主鍵了。
設(shè)置外鍵:
1、創(chuàng)建好主從表。
2、選擇主表,點(diǎn)擊設(shè)計(jì)表,進(jìn)入到表設(shè)計(jì)界面。
3、點(diǎn)擊外鍵,進(jìn)入到外鍵設(shè)置界面。
4、先設(shè)置外鍵名稱和選擇主表的外鍵字段。
5、然后在設(shè)置外鍵字段對應(yīng)從表的數(shù)據(jù)庫、表名和字。
6、點(diǎn)擊保存就完成外鍵設(shè)置了。
標(biāo)題名稱:mysql外鍵怎么設(shè)置,mysql數(shù)據(jù)庫外鍵怎么設(shè)置
鏈接URL:http://chinadenli.net/article11/dsioidd.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計(jì)公司、用戶體驗(yàn)、企業(yè)網(wǎng)站制作、虛擬主機(jī)、網(wǎng)站維護(hù)、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)