Oracle中的左連接與右連接

連接類型

一、內連接

內連接查詢操作列出與連接條件匹配的數據行,它使用比較運算符比較被連接列的列值。內連接分三種:

1、等值連接:在連接條件中使用等於號(=)運算符比較被連接列的列值,其查詢結果中列出被連接表中的所有列,包括其中的重複列。

2、不等連接: 在連接條件使用除等於運算符以外的其它比較運算符比較被連接的列的列值。這些運算符包括>>=<=<!>!<<>

3、自然連接:在連接條件中使用等於(=)運算符比較被連接列的列值,但它使用選擇列表指出查詢結果集合中所包括的列,並刪除連接表中的重複列。

 

二、外連接

返回到查詢結果集合中的不僅包含符合連接條件的行,而且還包括左表(左外連接時)、右表(右外連接時)或兩個邊接表(全外連接)中的所有數據行。

 

三、交叉連接

交叉連接不帶WHERE 子句,它返回被連接的兩個表所有數據行的笛卡爾積,返回到結果集合中的數據行數等於第一個表中符合查詢條件的數據行數乘以第二個表中符合查詢條件的數據行數。例,titles表中有6類圖書,而publishers表中有8家出版社,則下列交叉連接檢索到的記錄數將等於6*8=48行。


左右連接實例

SELECT emp_name, dept_name 
FORM Employee, Department
WHERE Employee.emp_deptid(+) = Department.deptid
此SQL語句使用了右連接,即“(+)”所在位置的另一側爲連接的方向,右連接說明等號右側的所有記錄均會被顯示,無論其在左側是否得到匹配,也就是說上例中無論會不會出現某個部門沒有一個員工的情況,這個部門的名字都會在查詢結果中出現。

SELECT emp_name, dept_name 
FORM Employee, Department
WHERE Employee.emp_deptid = Department.deptid(+)
這是左連接,無論這個員工有沒有一個能在Department表中得到匹配的部門號,這個員工的記錄都會被顯示。

還可以使用Left join的形式來表示左右連接。如上例的左連接可以使用以下形式:

select emp_name,dept_name

from employee left join department on employee.emp_deptid = department.deptid

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章