Oracle的左連接和右連接

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表中得到匹配的部門號,這個員工的記錄都會被顯示

============================================================================
表的左右連接
比如表A
id name
1 A1
2 A2
3 A3
5 A5
表B
id name
1 B1
3 B3
4 B4
6 B6
1.select a.id,a.name,b.id,b.name from A a,B b where a.id=b.id;
交集
id name id name
1 A1 1 B1
3 A3 3 B3
2.select a.id,a.name,b.id,b.name from A a,B b where a.id(+)=b.id;
id name id name
1 A1 1 B1
3 A3 3 B3
4 B4
6 B6
3.select a.id,a.name,b.id,b.name from A a,B b where a.id=b.id(+);
id name id name
1 A1 1 B1
2 A2
3 A3 3 B3
5 A5
============================================================================
select * from a, b where a.id = b.id;

對於外連接,Oracle中可以使用“(+)”來表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN,下面將配合實例一一介紹。

1. LEFT OUTER JOIN:左外關聯

SELECT e.last_name, e.department_id, d.department_name

FROM employees e

LEFT OUTER JOIN departments d

ON (e.department_id = d.department_id);

等價於

SELECT e.last_name, e.department_id, d.department_name

FROM employees e, departments d

WHERE e.department_id=d.department_id(+);

結果爲:所有員工及對應部門的記錄,包括沒有對應部門編號department_id的員工記錄。

2. RIGHT OUTER JOIN:右外關聯

SELECT e.last_name, e.department_id, d.department_name

FROM employees e

RIGHT OUTER JOIN departments d

ON (e.department_id = d.department_id);

等價於

SELECT e.last_name, e.department_id, d.department_name

FROM employees e, departments d

WHERE e.department_id(+)=d.department_id;

結果爲:所有員工及對應部門的記錄,包括沒有任何員工的部門記錄。

3. FULL OUTER JOIN:全外關聯

SELECT e.last_name, e.department_id, d.department_name

FROM employees e

FULL OUTER JOIN departments d

ON (e.department_id = d.department_id);

結果爲:所有員工及對應部門的記錄,包括沒有對應部門編號department_id的員工記錄和沒有任何員工的部門記錄。
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章