1. 右連接(right join, right outer join)
解釋:以右表(Sys_Employee)為准,而左表(Sys_Department)中的記錄只有當其DepartmentId在右表中存在時才會查詢出來;
2. 左連接(left join, left outer join)
解釋:以左表(Sys_Department)為准,而右表(Sys_Employee)中的記錄只有當其DepartmentId在左表中存在時才會查詢出來;
3. 全連接(full join, full outer join)
解釋:兩個表中DepartmentId的並集(U)記錄;
4. 內連接(join, inner join)
解釋:兩個表中DepartmentId的交集(n)記錄;
5. 交叉連接(cross join,完全連接)
解釋:沒有WHERE子句的交叉連接,它返回被連接的兩個表所有數據行的笛卡爾積,返回結果集合中的數據行數等於第一個表中符合查詢條件的數據行數乘以第二個表中符合查詢條件的數據行數。
6. 自連接(self join)
解釋:使用自連接可以將自身表的一個鏡像當作另一個表來對待;
使用自連接的情況:當表中的某一個字段與這個表中另外字段的相關時,我們可能用到自連接(自連接的本意就是將一張表看成多張表來做連接)。
例如:
數據庫中有如下一個部門結構表
下面我們需要將每一個部門自己的名稱和上級部門的名稱都找出來。
如果有兩張表,一個部門表,一個上級部門表,那很好寫SQL語句;
但現在部門和上級部門都在一張表中,這種情況用自連接就比較好。
SQL語句及查詢結果如下:
這里我們注意到研發部沒有出現在部門列表中,是因為在這里研發部是最上級部門,它沒有上級部門。如果這時候我們希望研發部也出現在左側,即使它沒有上級部門。
我們可以結合左連接
SQL語句及查詢結果如下: