【心得分享】-- 關係型數據庫中七種常見的join(連接)查詢

1.1 什麼是join查詢?

join查詢,即連接查詢,當我們需要查詢兩張或兩張以上表的關聯數據的時候就需要使用連接查詢,數據庫中的連接查詢分爲:內連接查詢(INNER JOIN)、左外連接查詢(LEFT OUTER JOINLEFT JOIN)、右連接查詢(RIGHT OUTER JOINRIGHT JOIN)以及全連接查詢(FULL OUTER JOIN)。

1.2 內連接、外連接、全連接查詢之間的區別是什麼?

類型 描述 圖示
INNER JOIN 內連接查詢,會把關聯表中,有關聯關係的所有記錄查詢出來 在這裏插入圖片描述
LEFT JOIN 左連接查詢,它會以左表爲主表,並且會將左表中的所有記錄查詢出來,如果右表沒有與之對應關聯數據,則用NULL填充指定字段 在這裏插入圖片描述
RIGHT JOIN 右連接查詢,它會以右表爲主表,並且會將右表中的所有記錄都查詢出來,如果左表中沒有與之對應的關聯數據,則用NULL填充左表中的指定字段 在這裏插入圖片描述
FULL OUTER JOIN 全連接查詢,會將關聯表中的所有數據都查詢出來 在這裏插入圖片描述

1.3 常見的七種join查詢

在這裏插入圖片描述

1.3.1 使用mysql實現以上七種join查詢

部門表

SELECT * FROM tbl_dept;

查詢結果:
在這裏插入圖片描述
員工表

SELECT * FROM tbl_emp;

查詢結果:
在這裏插入圖片描述

1.3.1.1 內連接查詢

#內連接查詢 查詢兩張表都有的記錄
SELECT * FROM tbl_dept dept
INNER JOIN tbl_emp emp
ON dept.id=emp.id;

查詢結果:
在這裏插入圖片描述

1.3.1.2 左連接查詢

#左連接查詢  只查詢左表中有的記錄
SELECT * FROM tbl_dept dept
LEFT JOIN tbl_emp emp
ON dept.id=emp.deptId;

查詢結果:
在這裏插入圖片描述

1.3.1.3 右連接查詢

#右連接查詢
SELECT * FROM tbl_dept dept
RIGHT JOIN tbl_emp emp
ON dept.id=emp.deptId;

查詢結果:
在這裏插入圖片描述

1.3.1.4 只查詢左表中獨有的數據

#查詢dept表中獨有的記錄
SELECT * FROM tbl_dept dept
LEFT JOIN tbl_emp emp
ON dept.id=emp.deptId
WHERE emp.deptId IS NULL;

查詢結果:
在這裏插入圖片描述

1.3.1.5 只查詢右表中獨有的數據

#查詢emp表中獨有的記錄
SELECT * FROM tbl_dept dept
RIGHT JOIN tbl_emp emp
ON dept.id=emp.deptId
WHERE dept.id IS NULL;

查詢結果:
在這裏插入圖片描述

1.3.1.6 全連接查詢

注意:因爲mysql不支持full outer join所以通過union實現全連接查詢

#把兩張表中的記錄都查詢出來 並進行去重 因爲mysql不支持full outer join所以通過union實現全連接查詢
SELECT * FROM tbl_dept dept
LEFT JOIN tbl_emp emp
ON dept.id=emp.deptId
UNION
SELECT * FROM tbl_dept dept
RIGHT JOIN tbl_emp emp
ON dept.id=emp.deptId;

查詢結果:
在這裏插入圖片描述

1.3.1.7 查詢兩張表中各自獨有的數據

#查詢兩張表中所有沒有關聯關係的記錄
SELECT * FROM tbl_dept dept
LEFT JOIN tbl_emp emp
ON dept.id=emp.deptId
WHERE emp.deptId IS NULL
UNION
SELECT * FROM tbl_dept dept
RIGHT JOIN tbl_emp emp
ON dept.id=emp.deptId
WHERE dept.id IS NULL;

查詢結果:
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章