Mysql join語句解析


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語句及查詢結果以下:
 
\
相關文章
相關標籤/搜索