一、多表查詢
1、多表查詢的作用
如果一條 SQL 語句查詢多張表,因為查詢結果在多張不同的表中,每張表取一列或多列數據。
2、多表查詢的分類
3、笛卡爾積現象
(1)笛卡爾積:有兩個集合A,B。取這兩個集合的所有組成情況。
(2)消除笛卡爾積現象的影響:使用多表查詢,需要消除無用的數據。
二、內連接
用左邊表的記錄去匹配右邊表的記錄,如果符合條件的則顯示。如:從表.外鍵 = 主表.主鍵
1、隱式內連接
隱式內連接:看不到 JOIN 關鍵字,條件使用 where 指定,從而來消除無用數據
SELECT 字段名 FROM 左表, 右表 WHERE 條件
Demo:
select * from emp,dept where emp.`dept_id` = dept.`id`;
2、顯示內連接
顯示內連接:使用 inner join... on 語句,可以省略 inner。
SELECT 字段名 FROM 左表 [INNER] JOIN 右表 ON 條件
Demo:
select e.`id` 編號,e.`name` 姓名,e.`gender` 性別,e.`salary` 工資,d.`name` 部門名字 from emp e inner join dept d on e.`dept_id` = d.`id` where e.`name`='唐僧';
總結內連接查詢步驟:
① 確定查詢哪些表
② 確定表連接的條件
③ 確定查詢的條件
④ 確定查詢的字段
三、外連接
1、左外連接
左外連接:使用 left outer join... on,outer可以省略。
SELECT 字段名 FROM 左表 LEFT [OUTER] JOIN 右表 ON 條件
查詢的是左表的所有數據以及其交集部分,如果符合條件的則顯示;否則,顯示 null。
Demo:
select * from dept d left join emp e on d.`id` = e.`dept_id`; // 使用左外連接查詢
2、右外連接
右外連接:使用 right outer join...on,outer 可以省略。
SELECT 字段名 FROM 左表 RIGHT [OUTER ]JOIN 右表 ON 條件
查詢的是右表的所有數據以及交集部分,如果符合條件的則顯示;否則,顯示 null。
Demo:
select * from dept right join emp on dept.`id` = emp.`dept_id`; // 使用右外連接查詢