萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql中SQL語句多表管理學習總結教程

mysql中SQL語句多表管理學習總結教程

一個項目的關系數據庫內會有很多個表,特別是范式設計的表,避免不了多表查詢管理,現在我們來總結一下mysql中如何用SQL管理多表。

1.外鍵約束

一個表中的非主鍵字段,如果在另外一張表中是主鍵,那麼這個字段我們叫它做外鍵。

例如,現在有兩個表:

學生表 - 學號,姓名,性別,所在班級號

班級表 - 班級號,班級人數

在學生表中,學號是主鍵;在班級表中,班級號是主鍵,而學生表中‘所在班級號’是非主鍵。所以,所在班級號對學生表來說是一個外鍵。

語句:CONSTRAINT student_class_fk FOREIGN KEY (classid) REFERENCES class(cid)

外鍵的名字 副表屬性 綁定 主表屬性

先創建主表:

CREATE TABLE class(
cid INT PRIMARY KEY,
ccount INT
);

然後創建副表來加入外鍵:

CREATE TABLE student(
sid INT PRIMARY KEY,
sname VARCHAR(20),
sex VARCHAR(4),
classid INT,
CONSTRAINT student_class_fk FOREIGN KEY (classid) REFERENCES class(cid)
);

外鍵的作用:

往副表插入數據,數據中外鍵的值在主表必須存在。

刪除主表的主鍵某個數據之前,先要把副表中依賴那個數據的外鍵值改變,才能順利刪除。

2.級聯操作

如果想要在主表把主鍵的值改變,然後副表外鍵的值跟著改變,那麼就要需要級聯操作。

2.1級聯更新

CONSTRAINT student_class_fk FOREIGN KEY (classid) REFERENCES class(cid) ON UPDATE CASCADE -- 級聯更新(更新主表數據,副表會跟著改變)

2.2級聯刪除

CONSTRAINT student_class_fk FOREIGN KEY (classid) REFERENCES class(cid) ON DELETE CASCADE -- 級聯刪除(刪除主表數據,副表會跟著刪除)

3.多表查詢

3.1 交叉查詢

-- 2.1 交叉查詢(產生笛卡爾積: 表1的總記錄 * 表2的總記錄) (不希望出現)

SELECT sid,cid FROM student,class;

3.2 內連接

-- 2.2 內連接查詢(使用最頻繁)

-- 特點: 要在滿足表條件的前提的數據才顯示出來(不包括null值)

-- 多表查詢的思路: 1) 確定有哪些表 2)確定查詢出哪些字段 3)確定表和表之間的關系(條件數據: n-1)

-- 需求: 查詢1班學生的姓名和1班的人數

SELECT s.sname,c.ccount -- 哪些字段

FROM student s,class c -- 哪些表

WHERE s.classid=c.cid; -- 表的條件

SELECT s.sname,c.ccount

FROM student s

INNER JOIN class c -- inner join : 內連接查詢

ON s.classid=c.cid;

3.3 左外連接

-- 2.3 左外連接

-- 需求: 查詢哪個班有哪些學生

-- 左外連接查詢: 用左邊的表數據去匹配右邊的表數據,右邊表數據如果匹配成功,則顯示記錄,如果匹配不成功,則顯示null

SELECT s.sname,c.cid

FROM s.sname

LEFT OUTER JOIN class c

ON s.classid=c.cid;

3.4 右外連接

-- 2.4 右外連接: 和左外連接相反

-- 右外連接查詢: 用右邊的表數據去匹配左邊的表數據,左邊表數據如果匹配成功,則顯示記錄,如果匹配不成功,則顯示null

SELECT s.sname,c.cid

FROM class c

RIGHT OUTER JOIN s.sname

ON s.classid=c.cid;

3.5 自連接

-- 2.5 自連接(當前表連接當前表)

自連接就是把同一張表虛擬出兩份一模一樣的表,然後起一個別名,然後連接兩張表來查詢。

SELECT e.ename,b.ename

FROM employee e -- 員工表

LEFT OUTER JOIN employee b -- 上司表

ON e.boosId=b.eid;

學習之所以會想睡覺,是因為那是夢開始的地方。

copyright © 萬盛學電腦網 all rights reserved