標籤:foreign log 存在 ons 分類 完整性 使用 不能 類別
一、外鍵 1.外鍵:連結兩張表的欄位,通過主表的主鍵和從表的外鍵來描述主外鍵關係,呈現的是一對多的關係。例如:商品類別(一)對商品(多),主表:商品類別表,從表:商品表。 2.外鍵的特點:從表外鍵的值是對主表主鍵的引用、從表外鍵類型必須與主表主鍵類型一致 3.聲明外鍵約束 文法:alter table (從表) add [constraint] (外鍵名稱) foreign key (從表外鍵欄位名) references 主表 (主表的主鍵) 例如:(1).ALTER TABLE product(從表) ADD CONSTRAINT cid(外鍵名稱) FOREIGN KEY (cid)(從表外鍵欄位名) REFERENCES category(主表) (cid)(主表的主鍵); (2). ALTER TABLE product ADD FOREIGN KEY (cid) REFERENCES category (cid); [外鍵名稱]用於刪除外鍵約束,一般建議”_fk”結尾 alter table 從表 drop foreign key 外鍵名稱; 3. 使用外鍵的目的:保證資料完整性 4.注意事項:從表外鍵不能添加主表中不存在的記錄、主表不能刪除從表中已經引用的記錄 二、表與表之間的關係 表與表之間的關係,就是表與表資料之間的關係。 1. 一對多關聯性: 常見執行個體:客戶和訂單,分類和商品,部門和員工 一對多建表原則:在從表(多方)建立一個欄位,欄位作為外鍵指向主表(一方)的主鍵 文法:ALTER TABLE product ADD FOREIGN KEY (cid) REFERENCES category (cid); 2. 多對多關係: 常見執行個體:學生和課程,商品和訂單,人和角色 多對多建表原則:需要建立第三張表,中間表至少要有兩個欄位,這兩個欄位分別作為外鍵指向各自一方的主鍵(就是將一個多對多拆分成兩個一對多) 兩張表分別都是主表,第三張表為從表,提供兩個欄位,都是外鍵。 文法:alter table 從表(stu_course) add foreign key(sno) references stu(sid); alter table 從表(stu_course) add foreign key(cno) references course(cid); 3. 一對一關聯性:(瞭解) 在實際開發中應用不多,因為一對一可以建立成一張表 常見執行個體:公司和地址 兩種原則:外鍵唯一,外鍵是主鍵 三、操作 1.多表查詢 (1).交叉串連查詢(得到兩個表的乘積,基本不使用) select * from A,B; (2).內串連查詢(使用關鍵字:inner join -- inner可以省略) 隱式內串連:select * from A,B where 條件; 例如:select * from category c,product p where c.cid=p.cid; 顯式內串連:select * from A inner join B on 條件; 例如:select * from category as c inner join product as p on p.cid=c.cid; (3).外串連查詢(使用關鍵字outer join --outer可以省略) 左外串連:left outer join select * from A left outer join B on 條件; 例如:select * from category c left join product p on p.cid=c.cid; 右外串連:right outer join select * from A right outer join B on 條件; 例如:select * from category c right join product p on p.cid=c.cid; 內串連和外串連的區別: 左外串連:查詢的是左表全部及兩個表的交集 內串連:查詢的是兩個表的交集 右外串連:查詢的是右表全部及兩個表的交集 2.子查詢 一條select語句結果作為另一條select文法的一部分(查詢條件、查詢結果、表等) 例如:查詢化妝品分類上架商品詳情 select * from product where cid =(select cid from category where cname=‘周伯通‘);
mysql外鍵使用