在關係型數據庫中經常用到多表查詢操作,因此連接(join)就是一種非常重要的手段。
在學習中使用兩個表進行輔助瞭解 employee 員工表,department 部門表
employee
department
1.笛卡爾積
笛卡爾積在SQL中的實現方式既是交叉連接(Cross Join)。所有連接方式都會先生成臨時笛卡爾積表,笛卡爾積是關係代數裏的一個概念,表示兩個表中的每一行數據任意組合,下圖中兩個表連接即爲笛卡爾積(交叉連接)
select * from employee INNER JOIN department
當沒有任何限制條件的時候,此時查詢出的結果就是笛卡爾乘積後的結果。然而如果對於查詢結果沒有任何限制條件的話,會使結果非常雜亂沒有任何實際意義,這就需要我們添加限制條件篩選出有價值的信息。
2.內連接
在笛卡爾積中得到的數據中再取符合條件的數據
select e.id,e.name,e.depid,d.id,d.name
from employee e,department d
WHERE e.depid = d.id;
內連接查詢中的限制條件,取到的數據就是表中同時滿足限制條件的數據,對於單表來說,內連接取的是兩表中滿足條件的交集
3.左外連接
是指以左邊的表的數據爲基準,去匹配右邊的表的數據,如果匹配到就顯示,匹配不到就顯示爲null。
關鍵字left outer join,等效於left join,在關聯查詢中,做外連接查詢就是左連接查詢,兩者是一個概念。
select e.id,e.name,e.depid,d.name
from employee e left join department d
on e.depid = d.id
on之後的條件,emloyee 左連接department的限制條件
4.右外連接
類似於左外連接,右外連接是以右邊的表爲基準匹配左邊的表,如果匹配到就顯示,匹配不到就顯示null
select e.id,e.name,e.depid,d.name
from employee e right join department d
on e.depid = d.id