定義外鍵的方法和詳細(xì)的操作步驟如下:
站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到福州網(wǎng)站設(shè)計(jì)與福州網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國(guó)際域名空間、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋福州地區(qū)。
1、第一步,創(chuàng)建一個(gè)主從表,如下圖所示,然后進(jìn)入下一步。
2、其次,完成上述步驟后,選擇主表,然后單擊設(shè)計(jì)表進(jìn)入表設(shè)計(jì)界面,如下圖所示,然后進(jìn)入下一步。
3、接著,完成上述步驟后,單擊外鍵進(jìn)入外鍵的設(shè)置界面,如下圖所示,然后進(jìn)入下一步。
4、然后,完成上述步驟后,設(shè)置外鍵名稱(chēng),然后選擇主表的外鍵字段,如下圖所示,然后進(jìn)入下一步。
5、隨后,完成上述步驟后,設(shè)置與數(shù)據(jù)庫(kù),表名稱(chēng)和從屬表的單詞相對(duì)應(yīng)的外鍵字段,如下圖所示,然后進(jìn)入下一步。
6、最后,完成上述步驟后,單擊保存即可,如下圖所示。這樣,問(wèn)題就解決了。
一張表中的主鍵只能有一個(gè),外鍵可以有多個(gè),如果一張表中多個(gè)列都需要被別的表的外鍵參考,需要使用候選碼(非空并且唯一),具體到你的這個(gè)問(wèn)題的需求可以考慮用如下方法解決:
把a(bǔ)表中的bookid和authorid都設(shè)置為非空并且唯一,即
create table a(bookid int not null unique, authorid int not null unique);
然后在book表和author表中就可以分別設(shè)置外鍵來(lái)參照a表中兩個(gè)不同的字段了。
打開(kāi)我的navicat,然后找到我的teacher表,選中它,然后點(diǎn)擊菜單欄上的‘design table'
2. 在彈出的對(duì)話(huà)框中找到“Foreign Keys”,然后單機(jī)。
3. 然后會(huì)出現(xiàn)一個(gè)設(shè)置外鍵的界面,一共有七列。簡(jiǎn)單介紹一下這幾列的意思?!畁ame’:可以不填,你一會(huì)保存成功系統(tǒng)會(huì)自動(dòng)生成。FieldName’:就是你要把哪個(gè)鍵設(shè)置為外鍵。這里選擇‘dept’,‘Reference DadaBase’:外鍵關(guān)聯(lián)的數(shù)據(jù)庫(kù)?!甊eference 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āi)我的navicat,然后找到我的teacher表,選中它,然后點(diǎn)擊菜單欄上的‘design table’。如下圖:
2. 在彈出的對(duì)話(huà)框中找到“Foreign Keys”,然后單機(jī)。如下圖:
3. 然后會(huì)出現(xiàn)一個(gè)設(shè)置外鍵的界面,一共有七列。簡(jiǎn)單介紹一下這幾列的意思。‘name’:可以不填,你一會(huì)保存成功系統(tǒng)會(huì)自動(dòng)生成。FieldName’:就是你要把哪個(gè)鍵設(shè)置為外鍵。這里選擇‘dept’,‘Reference DadaBase’:外鍵關(guān)聯(lián)的數(shù)據(jù)庫(kù)?!甊eference 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如圖:
create
table
volunteer(
志愿者編號(hào)
varchar(6)
not
null,
志愿者姓名
varchar(8),
班級(jí)編號(hào)
varchar(4),
constraint
PK_V
primary
key
(志愿者編號(hào)));
create
table
class(
班級(jí)編號(hào)
varchar(4),
班級(jí)名稱(chēng)
varchar(20),
學(xué)院
varchar(20),
constraint
PK_C
primary
key(班級(jí)編號(hào)),
班級(jí)編號(hào)
varchar
foreign
key
references
volunteer(班級(jí)編號(hào)));
你這個(gè)試下,我試了可以的
希望可以幫到你
SQL
創(chuàng)建外鍵語(yǔ)句的方法:constraint
外鍵名字
foreign
key
references
外鍵表(外鍵字段)
為已經(jīng)添加好的數(shù)據(jù)表添加外鍵:
語(yǔ)法: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是外鍵的名稱(chēng)
/*
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
*/
刪除外鍵
語(yǔ)法: 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ù)庫(kù)中就會(huì)有很多無(wú)意義的孤立記錄,MYSQL可以通過(guò)向FOREIGN KEY...REFERENCES修飾符添加一個(gè)ON DELETE 或ON UPDATE子句簡(jiǎn)化任務(wù),它告訴了數(shù)據(jù)庫(kù)在這種情況如何處理孤立任務(wù)。