只要是兩張以上的表關聯查詢的時候,就會返回一個笛卡爾乘積,資料庫會去掉那些冗餘的資料,只返回有用的資料。我們用左連線和右連線查詢的時候就會把那些冗餘的資料也查詢出來,還有雙向連線也是。
Oracle資料庫的左連線和右連線
在Oracle PL-SQL中,左連線和右連線以如下方式來實現
檢視如下語句:
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表中得到匹配的部門號,這個員工的記錄都會被顯示
一般的相等連線
select * from a,b where a.id = b.id;
這個是內連線
只要是兩張以上的表關聯查詢的時候,就會返回一個笛卡爾乘積,資料庫會去掉那些冗餘的資料,只返回有用的資料。我們用左連線和右連線查詢的時候就會把那些冗餘的資料也查詢出來,還有雙向連線也是。
Oracle資料庫的左連線和右連線
在Oracle PL-SQL中,左連線和右連線以如下方式來實現
檢視如下語句:
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表中得到匹配的部門號,這個員工的記錄都會被顯示
一般的相等連線
select * from a,b where a.id = b.id;
這個是內連線