1.外鍵的作用,主要有兩個:
創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、海棠網(wǎng)絡(luò)推廣、成都小程序開發(fā)、海棠網(wǎng)絡(luò)營銷、海棠企業(yè)策劃、海棠品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供海棠建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:www.cdcxhl.com
一個是讓數(shù)據(jù)庫自己通過外鍵來保證數(shù)據(jù)的完整性和一致性
一個就是能夠增加ER圖的可讀性
2.外鍵的配置
1)先創(chuàng)建一個主表,代碼如下:
#創(chuàng)建表student,并添加各種約束
create table student
(
id int primary key , #主鍵約束
name varchar(20) , #唯一約束
age int NOT NULL, #非空約束
sex varchar(2) ,
address varchar(20) default '重慶' #默認(rèn)約束
) ;
再通過一個外鍵,創(chuàng)建一個分?jǐn)?shù)表,這樣的話,就可以方便查詢。代碼如下:
#創(chuàng)建分?jǐn)?shù)表
create table score
(
id int primary key ,
sid int ,
china int ,
history int,
english int,
constraint FK_sid foreign key(sid) references student(id) #通過外鍵創(chuàng)建鏈接
) ;
創(chuàng)建外鍵的方法有很多,其中最常見創(chuàng)建外鍵的格式是:constraint FK_*** foreign key(**) references 鏈接的外表
刪除外鍵:
alter table drop foreign key '外鍵名'.
注意:
只有在定義外鍵時,用constraint 外鍵名 foreign key .... 方便進行外鍵的刪除
主鍵是唯一標(biāo)示這一行的,就好像你的身份證號一樣,每個人只有一個,也是唯一能證明你是你的東西。外鍵是別人執(zhí)行你的東西。也就是說如果一個人想和你有點關(guān)系怎么辦,那就要關(guān)聯(lián)起來,怎么關(guān)聯(lián)起來,就通過外鍵啊
定義主鍵和外鍵主要是為了維護關(guān)系數(shù)據(jù)庫的完整性,總結(jié)一下:
一、主鍵是能確定一條記錄的唯一標(biāo)識,比如,一條記錄包括身份正號,姓名,年齡。身份證號是唯一能確定你這個人的,其他都可能有重復(fù),所以,身份證號是主鍵。
外鍵用于與另一張表的關(guān)聯(lián)。是能確定另一張表記錄的字段,用于保持?jǐn)?shù)據(jù)的一致性。比如,A表中的一個字段,是B表的主鍵,那他就可以是A表的外鍵。
1、打開navicat工具,連接上mysql服務(wù)器,選擇完數(shù)據(jù)庫之后,選擇一個表右擊選擇設(shè)計表(這里為了演示測試,隨便選擇一個表即可)。
2、在設(shè)計表頁面,可以看到當(dāng)前表的所有字段信息,我們選擇的學(xué)生表有一個id字段,目前該表沒有主鍵字段。
3、如圖,在最后一列右擊選擇主鍵,即可將該字段設(shè)置為主鍵,也可以直接點擊鼠標(biāo)左鍵,可以快速添加和取消主鍵。
4、設(shè)置完主鍵之后,可以看到一把鎖的標(biāo)志,并且有一個1字,因為一個表可以給多個字段添加主鍵,則為聯(lián)合主鍵,這樣就顯示為主鍵1,主鍵2等。
5、主鍵設(shè)置完成之后,還沒有自增,選擇id字段之后,在下方,如圖,勾選自動遞增,這樣id在每次插入記錄之后都會自增一個值。
6、設(shè)置完成主鍵和自增之后,點擊保存,關(guān)閉當(dāng)前窗口,然后選擇表名右擊選擇對象信息。
7、在DLL頁面中,可以看到剛剛添加的主鍵和自增的DLL語句,這里就是創(chuàng)建表的DLL語句。
8、上面有提到聯(lián)合主鍵,其實一個表可以給多個字段設(shè)置主鍵,這樣可以組成聯(lián)合主鍵,對于特定的業(yè)務(wù),聯(lián)合主鍵也是必須的。
1.主鍵語法
①創(chuàng)建時:create table sc (
studentno int,
courseid int,
score int,
primary key (studentno) );
②修改時:ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名);
前提是原先沒有設(shè)置主鍵。
2.外鍵語法
①創(chuàng)建時:create table sc (
studentno int,
courseid int,
score int,
foreign key (courseid) );
②修改時:
ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[約束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列] ;
3.使用組合主鍵
如果一列不能唯一區(qū)分一個表里的記錄時,可以考慮多個列組合起來達到區(qū)分表記錄的唯一性,形式
①創(chuàng)建時:create table sc (
studentno int,
courseid int,
score int,
primary key (studentno,courseid) );
②修改時:alter table tb_name add primary key (字段1,字段2,字段3);
前提是原來表中沒有設(shè)置主鍵,若原先已有主鍵則會報錯。