1.創(chuàng)建主鍵語(yǔ)法
創(chuàng)新互聯(lián)網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)服務(wù),網(wǎng)站設(shè)計(jì),網(wǎng)站托管、服務(wù)器租用等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競(jìng)爭(zhēng)對(duì)手中脫穎而出創(chuàng)新互聯(lián)。
ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名);
2.創(chuàng)建外鍵語(yǔ)法
ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[約束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列] ;
3.使用組合主鍵
如果一列不能唯一區(qū)分一個(gè)表里的記錄時(shí),可以考慮多個(gè)列組合起來(lái)達(dá)到區(qū)分表記錄的唯一性,形式
①創(chuàng)建時(shí):create table sc (
studentno int,
courseid int,
score int,
primary key (studentno,courseid) );
②修改時(shí):alter table tb_name add primary key (字段1,字段2,字段3);
1.外鍵的作用,主要有兩個(gè):
一個(gè)是讓數(shù)據(jù)庫(kù)自己通過(guò)外鍵來(lái)保證數(shù)據(jù)的完整性和一致性
一個(gè)就是能夠增加ER圖的可讀性
2.外鍵的配置
1)先創(chuàng)建一個(gè)主表,代碼如下:
#創(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)約束
) ;
再通過(guò)一個(gè)外鍵,創(chuàng)建一個(gè)分?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) #通過(guò)外鍵創(chuàng)建鏈接
) ;
創(chuàng)建外鍵的方法有很多,其中最常見(jiàn)創(chuàng)建外鍵的格式是:constraint FK_*** foreign key(**) references 鏈接的外表
刪除外鍵:
alter table drop foreign key '外鍵名'.
注意:
只有在定義外鍵時(shí),用constraint 外鍵名 foreign key .... 方便進(jìn)行外鍵的刪除
主鍵是唯一標(biāo)示這一行的,就好像你的身份證號(hào)一樣,每個(gè)人只有一個(gè),也是唯一能證明你是你的東西。外鍵是別人執(zhí)行你的東西。也就是說(shuō)如果一個(gè)人想和你有點(diǎn)關(guān)系怎么辦,那就要關(guān)聯(lián)起來(lái),怎么關(guān)聯(lián)起來(lái),就通過(guò)外鍵啊
定義主鍵和外鍵主要是為了維護(hù)關(guān)系數(shù)據(jù)庫(kù)的完整性,總結(jié)一下:
一、主鍵是能確定一條記錄的唯一標(biāo)識(shí),比如,一條記錄包括身份正號(hào),姓名,年齡。身份證號(hào)是唯一能確定你這個(gè)人的,其他都可能有重復(fù),所以,身份證號(hào)是主鍵。
外鍵用于與另一張表的關(guān)聯(lián)。是能確定另一張表記錄的字段,用于保持?jǐn)?shù)據(jù)的一致性。比如,A表中的一個(gè)字段,是B表的主鍵,那他就可以是A表的外鍵。
設(shè)置主鍵的思路:業(yè)務(wù)字段做主鍵、自增字典做主鍵、手動(dòng)賦值字段做主鍵。
多表查詢:分散在多個(gè)不同的表里的數(shù)據(jù)查詢出來(lái)的操作。
外鍵:從表中用來(lái)引用主表中數(shù)據(jù)的那個(gè)公共字段。
連接有2種類型的連接:內(nèi)連接(inner join)和外連接(outer join)
內(nèi)連接:查詢結(jié)果只返回符合連接條件的記錄。
外連接:查詢結(jié)果返回某一個(gè)表中的所有記錄,以及另一個(gè)表中滿足連接條件的記錄。
其中左連接:left join,返回左表中的所有記錄,以及右表中符合連接條件的記錄。
右連接:right join,返回右表中的所有記錄,以及左表中符合連接條件的記錄。
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);
說(shuō)明:把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);