join 語法:
select 查詢列表
from 表1 as 別名 【連接類型】 join 表2 as別名 on 連接條件
【where 篩選條件】
【group by 分組】
【having 篩選條件】
【order by 排序】
與之前的多表查詢相比蝇庭,將連接條件放在了on后面睁壁,而之前的多表查詢將篩選條件和連接條件都放在了 where后面用and連接背苦。
內連接:
內連接查詢到的是兩張表符合連接條件的交集
連接類型為 inner
1.查詢員工名,部門名
SELECT last_name,department_name from employees e inner join departments d on e.department_id=d.department_id;
2.查詢名字中包含e的員工名和工種名
SELECT last_name,job_title from employees e INNER JOIN jobs j on j.job_id=e.job_id where last_name like '%e%';
3.查詢部門個數(shù)>3的城市名稱和部門個數(shù)(分組+篩選)
select city,COUNT(*) FROM departments d
inner join locations l on d.location_id=l.location_id
GROUP BY l.city HAVING COUNT(*)>3;
4.查詢部門的員工個數(shù)>3的部門名和員工個數(shù)潘明,并按個數(shù)降序
SELECT department_name,count(*) from departments d
INNER JOIN employees e on e.department_id=d.department_id
GROUP BY department_name HAVING COUNT(*)>3
ORDER BY COUNT(*) DESC;
5.查詢員工名行剂,部門名,工種名钳降,并按部門名降序厚宰。
外連接:
外連接查詢到的是主表本身+主表和從表符合連接條件的交集。
左外連接:
左外連接意思是左邊的表為主表
left outer,outer可省略
查詢沒有員工的部門
select department_name from departments d
left join employees e on e.department_id= d.department_id
where e.employee_id is null;
右外連接
右邊的表是主表
right outer铲觉,outer可省略
查詢沒有員工的部門
select department_name from employees e
right join departments d on e.department_id= d.department_id
where e.employee_id is null;
全外連接
全外連接=左表全部記錄+右表全部記錄+相關聯(lián)結果并且去重復
mysql不支持 full join 但是可以通過左外和右外實現(xiàn)澈蝙。
交叉連接:
cross join 結果等于兩個表的笛卡爾乘積