MYSQL的多表操作

2021-09-11 01:13:14 字數 1663 閱讀 1772

1.外來鍵:用來描述兩張表之間的關係(某商品屬於哪個分類,需要在該商品上新增category_id),從表的外來鍵指向主表的主鍵

2.外來鍵宣告:alter table product add foreign key(category_id) references category(cid);

指定category_id為外來鍵並且給外來鍵起乙個外鍵名:

alter  table  product add [constraint category_id_fk] foreign key(category_id) references category(cid);

在建立表的時候宣告外來鍵:

pname varchar(20), [constraint category_id_fk] foreign key(category_id) references category(cid);

3.解除外來鍵關係:alter table product dorp foreign key(category_id_fk) ; 這裡的外來鍵名稱不是宣告外來鍵的列名,而是constraint後面的外鍵名

4.多表的注意事項:

1.從表中不能新增主表不存在的記錄。比如主表的主鍵沒有004,從表中就不能新增外來鍵為004的記錄

2.主表中不能刪除從表中有引用的資料。比如刪除主表中的004,而在從表中的外來鍵有004,則不能刪除。要想刪除必須解除外來鍵關係。或者先刪除從表的資料,再刪除主表的資料

5.使用外來鍵的目的:保證資料的完整性。為什麼?因為有些資料不能在一張表中完全顯示出來,需要多張表才能夠展示完整。這時就需要使用外來鍵來建立表和表之間的關係

6.表和表之間的關係:

一對多:商品和商品分類

多對多:案例(學生和課堂):需要第三張表,該錶至少有兩個字段,分別作為外來鍵指向各自一方的主鍵。第三張表是從表,

7.多對多的宣告:alter table stu_course add [constraint stu_id_fk] foreign key(sid) references stu(id);

alter table stu_course add [constraint cou_id_fk] foreign key(cid) references course(id);

8.多表查詢:

內連線:  隱式內連線:select * from a,b where 條件;  該條件就是指定兩張表之間的關係,即主鍵=外來鍵

顯示內連線:select * from a inner join b on 條件;  同樣條件是主鍵=外來鍵。(inner 可以省略)

外連線:左外連線:select * from a left outer join b on 條件; (outer可以省略)

右外連線:select * from a right outer join b on 條件;

內連線和外連線的區別:內連線是兩個表之間的交集部分。左外連線是left左邊的a表全部查詢,而left右邊的b表則只查詢和a表交集的部分,不是交集的不查詢。右外連線同理。

9.子查詢:一條select語句的結果可以作為另外一條查詢語句的一部分(查詢條件,結果,表等)

select cid from category where name = '化妝品';

select * from product where category_id = (select cid from category where name='化妝品');

mysql的多表操作 MySQL多表操作

交叉連線 交叉連線 cross join 又稱笛卡爾連線 cartesian join 或叉乘 product 它是所有型別內連線的基礎。它把表看作是行記錄的集合,交叉連線即返回這兩個集合的笛卡爾積。這其實等價於內連線的連線條件始終為 真 或連線條件不存在。笛卡爾積引用自數學,在數學中,兩個集合x和...

MySQL多表操作

方式一 create table stu sid int primary key,sname varchar 20 age int 方式二 create table stu sid int,sname varchar 20 age int,primary key sid 方式三 create tab...

MySql多表操作

今日任務 教學目標 1.為什麼要拆表 1.1表的準備 建立一張分類表 類別id,類別名稱.備註 類別id為主鍵並且自動增長 建立一張明星表 明星id,明星名稱,明星身價,明星年齡,明星性別,明星類別.備註 明星id為主鍵並且自動增長 2.引用完整性 表和表之間存在一種關係,但是這個關係需要誰來維護和...