在數(shù)據(jù)庫中有兩個很關(guān)鍵的概念:主鍵
和外鍵
抖部。
主鍵是能確定一條記錄的唯一標(biāo)識淫痰。比如把介,你的學(xué)號暑刃,姓名厢漩,年齡。在學(xué)校里你的姓名和年齡也許會重復(fù)稍走,但是你的學(xué)號是唯一的袁翁。身份證也是一樣的。所以設(shè)置主鍵很關(guān)鍵婿脸,就像新聞中的有的人的身份證號竟然一模一樣粱胜,就導(dǎo)致了很多不該有的問題,所以設(shè)置主鍵的時候一定記住狐树,"唯一標(biāo)識"焙压。
外鍵用于與另一張表的關(guān)聯(lián)
有兩張表。兩張表中每個表有且僅有一個主鍵抑钟,如果一張表中主鍵所在的字段同時在另一張表中存在涯曲,那么此時,在另一張表中存在的這個在其他表中是主鍵的字段就稱為外鍵在塔。
比如:emp表中存在的員工編號幻件,是emp表中的主鍵。每一個員工都有一個對應(yīng)的部門號所以同時emp中也存在部門號這個屬性(字段)蛔溃。
在dept表中绰沥,部門號是主鍵篱蝇。那么此時在emp表中的部門號就稱為外鍵,在emp表可以通過主鍵(員工編號)獲取員工信息徽曲,獲取到部門號零截,通過部門號可以獲取到dept表中的數(shù)據(jù)。
所以我們可以這樣認(rèn)為秃臣,只要是其他表中的主鍵涧衙,在該表中出現(xiàn),那么在該表中這個在其他表中為主鍵的字段奥此,則稱為外鍵弧哎,用來指引表和表之間關(guān)聯(lián)的。也就是概念中所說的稚虎,外鍵用于表與表之間的關(guān)聯(lián)傻铣,一張表中只能有一個主鍵,但可以有多個外鍵祥绞。
(一)設(shè)置主鍵有兩種方式:
1.創(chuàng)建表時就把某一字段設(shè)置為主鍵
方式一:primary key //設(shè)置主鍵的關(guān)鍵字
CREATE TABLE 表名 (列名1 列的數(shù)據(jù)類型 primary key auto_increment [AUTO_INCREMENT], //AUTO_INCREMENT設(shè)置主鍵自增的(可選)
//設(shè)置主鍵的約束條件,主鍵不可以為空鸭限,所以設(shè)置主鍵后蜕径,字段默認(rèn)不為空。
列名2 列的數(shù)據(jù)類型 列的約束條件 ,
……列名n 列的數(shù)據(jù)類型 列的約束條件);
方式二:CREATE TABLE 表名 (列名1 列的數(shù)據(jù)類型 ,
列名2 列的數(shù)據(jù)類型 列的約束條件 ,
……列名n 列的數(shù)據(jù)類型 列的約束條件,
primary key (字段名) //設(shè)置主鍵的約束條件败京,主鍵不可以為空兜喻,所以設(shè)置主鍵后,字段默認(rèn)不為空赡麦。
);
2.修改時設(shè)置主鍵(前提是沒有設(shè)置主鍵)
ALTER TABLE 表名 ADD CONSTRAINT PRIMARY KEY(字段名); //前提是沒有設(shè)置主鍵
3.刪除主鍵
alter table 表名 drop primary key
4.修改主鍵
修改主鍵的話朴皆,先刪除主鍵,在添加即可泛粹。
(二)設(shè)置外鍵也有兩只方式:
1.創(chuàng)建表的時候(這里不演示了)
CREATE TABLE 表名 (列名1 列的數(shù)據(jù)類型 ,
列名2 列的數(shù)據(jù)類型 列的約束條件 ,
……列名n 列的數(shù)據(jù)類型 列的約束條件,
constraint 外鍵名 foreign key(列名) references 外表名(外表主鍵名)
);
2.修改時添加外鍵
alter table 主表名 add constraint 外鍵名 foreign key(要設(shè)置為外鍵的主表字段名) REFERENCES 外表(外表主鍵名); //外鍵名一般命名為FK_*****
3.刪除外鍵
alter table 表名 drop foreign key 外鍵名;
注:有了外鍵索引之后遂铡,就不能直接刪除表了。
這個時候就必須要先刪除外鍵晶姊,才能對表進(jìn)行操作扒接,或者但是刪除外鍵需要外鍵名,有時候我們會忘記自己曾經(jīng)設(shè)置的外鍵名们衙,那么這個時候就需要借助第三方工具钾怔,
比如:sqlyog,Navicate.或者使用以下用命令查看:
show create table 表名; //查看表的所有信息,包括一些字段類型蒙挑,字段的約束宗侦,外鍵,主鍵忆蚀,索引矾利,字符編碼等等
在這里我參考了這段博客的部分內(nèi)容姑裂。我也僅僅只講述主外鍵,要深入了解的梦皮,可以參考這個博客炭分。
參考:http://blog.csdn.net/bingqingsuimeng/article/details/51595560
小白出品!不喜勿噴剑肯!
生活總會給你第二次機(jī)會捧毛,叫明天。