連接查詢又稱多表查詢,查詢到的欄位來自於多個表中的數據。 一、 連接查詢的分類和語法 1.分類 按標準分: 92標準:只支持內連接 99標準:支持內連接和、外連接和全外連接 功能進行分類: 內連接:inner 等值連接 非等值連接 自連接 外連接: 左外連接left 【outer】 右外連接righ ...
連接查詢又稱多表查詢,查詢到的欄位來自於多個表中的數據。
一、 連接查詢的分類和語法
1.分類
按標準分:
92標準:只支持內連接
99標準:支持內連接和、外連接和全外連接
功能進行分類:
內連接:inner
等值連接
非等值連接
自連接
外連接:
左外連接left 【outer】
右外連接right【outer】
全外連接(mysql不支持) full【outer】
交叉連接cross
笛卡爾集:沒有加約束條件。若表1有m行數據,表2有m2行數據,最終有m*m2行數據。
2.語法
select 查詢列表
from 表1 別名 【連接類型】
join 表2 別名
on 連接條件
【where 篩選條件】
【group by 分組】
【having 篩選條件】
【order by 排序列表】
二、內連接(inner)
1.等值連接
語法:select 查詢列表 from 表1 別名1 [inner join] 表2 別名 [on]/[where] 連接條件
特點:
①多表等值連接的結果為多表的交集部分;
②m個表的連接,至少需要m-1個連接條件
③各個表的先後順序沒有要求
④可以結合其他函數和字句,比如:排序、分組、篩選等
⑤可以用inner join on連接也可以使用from多個表
⑥inner join on 是sql99語法規範,提高了分離性、可讀性。
2.非等值連接
3.自連接
查詢出員工名和上級名
三、外連接
用於查詢一個表中存在另一個表中不存在的數據
1.特點
①外連接的查詢結果為主表中的所有數據,若從表中有和他匹配的,則顯示匹配的數據;若沒有與之匹配的數據,則顯示null
②左外連接,left join 左邊是主表;右外連接,right join 右邊是主表
③左外和右外交換兩個表的順序,可以實現相同的查詢結果
④全外連接=內連接+表1中有表2中沒有的+表2中有表1中沒有的
2.左外連接
3.右外連接
4.全連接