Oracle學習 外連線

2021-04-13 21:18:13 字數 1614 閱讀 5311

對於外連線:

oracle中可以使用「(+) 」來表示,9i可以使用left/right/full outer join 

外部連線"+"按其在"="的左邊或右邊分右連線和左連線.若不帶"+"運算子的表中的乙個行不直接匹配於帶"+"預算符的表中的任何行,則前者的行與後者中的乙個空行相匹配並被返回.若二者均不帶'+',則二者中無法匹配的均被返回.利用外部連線"+",可以替代效率十分低下的 not in 運算,大大提高執行速度.例如,下面這條命令執行起來很慢

not in

一般的相等連線:

select * from a, b where a.id = b.id;

這個就屬於內連線。 

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的員工記錄。 

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 

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

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的員工記錄和沒有任何員工的部門記錄。

可以使用多個外連線:select a*,b*,c.*  from a,b,c where a.id=b.id(+) and a.id=c.id(+) and a.id='10'

Oracle外連線,左外連線,右外連線,內連線簡析

內連線即普通等值連線 select e.ename,e.job,e.sal,d.dname from emp e inner join dept d on e.deptno d.deptno where e.sal 2000 select e.ename e.job,e.sal d.dname fr...

oracle內連線 外連線

表testa,testb,testc,各有a,b兩列 a b001 10a002 20a a b 001 10b 003 30b a b001 10c004 40c 連線分為兩種 內連線與外連線。a 內連線 內連線,即最常見的等值連線,例 select fromtesta,testb wherete...

Oracle 內連線,外連線

誰能詳細解釋一下oracle的內連線和外連線。一般的相等連線 select from a,b where a.id b.id 這個就屬於內連線。對於外連線 oracle中可以使用 來表示,9i可以使用left right full outer join left outer join 左外關聯 se...