oracle內連線 外連線

2021-08-01 23:12:43 字數 2838 閱讀 6516

表testa,testb,testc,各有a, b兩列 a

b001

10a002

20a

a b

001

10b

003

30b a

b001

10c004

40c

連線分為兩種:內連線與外連線。

a.內連線

內連線,即最常見的等值連線,例:

select

fromtesta,testb

wheretesta.a=testb.a結果

a b

a b

001

10a

001

10b

b.外連線

外連線分為左外連線,右外連線和全外連線。 1.

左外連線left outer join 或者 left join

左外連線就是在等值連線的基礎上加上主表中的未匹配資料,例:

select*

fromtesta 

left outer jointestb 

ontesta.a=testb.a

oracle 支援另一種寫法

select

fromtesta,testb

wheretesta.a=testb.a(+)

結果: a

b a

b 001

10a

001

10b

002

20a

三個表做左外連線

select*

fromtesta 

left outer jointestb 

ontesta.a=testb.a

left outer jointestc

ontesta.a=testc.a

oracle 支援的另外一種寫法

select*

fromtesta,testb,testc

wheretesta.a=testb.a(+)

andtesta.a=testc.a(+)

結果: a

b a

b a

b 001

10a

001

10b

001

10c

002

20a 2.

右外連線right outer join 或者 right join

右外連線是在等值連線的基礎上加上被連線表的不匹配資料

select*

fromtesta 

right outer jointestb 

ontesta.a=testb.a

oracle支援的另一種寫法

select*

fromtesta,testb

wheretesta.a(+)=testb.a

結果: a

b a

b 001

10a

001

10b

003

30b

3.全外連線full outer join 或者 full join

全外連線是在等值連線的基礎上將左表和右表的未匹配資料都加上

select

fromtesta 

full outer jointestb

ontesta.a=testb.a

全外連線的等價寫法,對同一表先做左連線,然後右連線

selecttesta.*,testb.*

fromtesta

left outer jointestb

ontesta.a=testb.a

union

selecttesta.*,testb.*

fromtestb

left outer jointesta

ontesta.a=testb.a

結果: a

b a

b 001

10a

001

10b

002

20a

003

30b

Oracle 內連線,外連線

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

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連線查詢 內連線 外連線 全連線

oracle 中的連線可分為,內連線 inner join 外連線 outer join 全連線 full join 不光是oracle 其他很多的資料庫也都有這3 種連線查詢方式 內連線inner join 這是我們經常用的查詢方式,比如select from a,b where a.field1...