主鍵:一個表中確定一條記錄的不可重復(fù)的表示闭翩,比如挣郭,一條記錄包括身份證號,姓名疗韵,年齡丈屹。身份證號是唯一能確定你這個人的,其他都可能有重復(fù)伶棒,所以旺垒,身份證號是主鍵。
外鍵:用于表與表之間的關(guān)聯(lián)肤无,用于保持?jǐn)?shù)據(jù)的一致性先蒋。從表外鍵的值是對主表主鍵值的引用,比如宛渐,A表中的一個字段竞漾,是B表的主鍵眯搭,那他就可以是A表的外鍵。
其中主鍵在哪個表中业岁,該表就是主表
一鳞仙,外鍵的基本操作:添加外鍵和刪除外鍵
- 1,聲明(添加)外鍵約束
alter table 從表 add [constraint] [外鍵名稱] foreign key () references 主表 (主表的主鍵);
#[外鍵名稱] 用于刪除外鍵約束笔时,一般建議“_fk”結(jié)尾棍好。
alter table product add constraint product_category_fk foreign key (category_id) references category (cid);
#當(dāng)然,也可以聲明外鍵名稱允耿,如下借笙,但是這樣沒辦法刪除外鍵
alter table product add foreign key (category_id) references category (cid);
- 2,刪除外鍵
alter table 從表 drop foreign key 外鍵名稱;
alter table product drop foreign key product_category_fk;
二较锡,一對多關(guān)系外鍵:
原則:在多的一方創(chuàng)建一個字段业稼,該字段作為外鍵,指向一的一方的主鍵蚂蕴!如上案例里面低散,產(chǎn)品是多的一方,種類是一的一方骡楼,在產(chǎn)品中創(chuàng)建category_id指向種類的主鍵cid
alter table product add constraint product_category_fk foreign key (category_id) references category (cid);
或者
alter table product add foreign key (category_id) references category (cid);
三熔号,多對多關(guān)系外鍵:
原則:需要創(chuàng)建第三張表,作為從表君编,中間表至少有兩個字段跨嘉,這兩個字段分別作為外鍵指向各自一方多主鍵。
Snip20170715_3.png
- 假設(shè)上圖中學(xué)生表為stu吃嘿, 課程表是course祠乃, 中間的那張表為stu_course:
alter table stu_course add constraint stu_course_stu_fk foreign key (sno) references stu (sid);
alter table stu_course add constraint stu_course_course_fk foreign key (cno) references course (cid);