**sql92語法:**
- 只支持內連接:包括
1)等值連接
2)非等值連接(常用于對區間的判斷)
3)自連接
- 查詢條件與部分篩選條件都寫在where關鍵字后面,可讀性較差
**sql99語法:**
- 支持內連接與外連接,連接條件寫在on關鍵字后,之后的篩選條件可以正常寫
<br>
## 3.1內連接
* 案例:查詢每個工種、每個部門的部門名、工種名和最低工資(三表連接)
```
select d.department_name,j.job_title,min(salary)
from employees e
join departments d on e.department_id=d.department_id
join jobs j on e.job_id=j.job_id
group by j.job_title,d.department_name
```
* 案例:非等值連接
```
select j.job_level,count(*) 個數
from employees e join job_grade j
on e.salary between j.lowest_sal and j.highest_sal
```
* 案例:選擇每個員工的姓名和他的管理者的姓名(自連接)
```
select e1.first_name,e2.first_name
from employees e1 join employees e2
on e1.manager_id=e2.first_name
```
## 3.2外連接(左外,右外,全外(MySql不支持),交叉連接(相當于笛卡爾積))
- 左外連接,已左表為主表,主表的信息都會出現,從表有信息則顯示,沒有則顯示null值
- 右外連接,已右表為主表,主表的信息都會出現,從表有信息則顯示,沒有則顯示null值
> 左外連接,右外連接可以互相轉換
* 案例查詢部門名為 SAL 或 IT 的員工信息
```
SELECT d.department_name,e.*
FROM departments d LEFT JOIN employees e
on d.department_id=e.department_id
WHERE d.department_name='SAL' or department_name='IT';
```
***********************************************************************************