天天看點

Oracel中連接配接的總結(一)

資料庫版本:Oracle 9i

表TESTA,TESTB,TESTC,各有A, B兩列

連接配接分為兩種:内連接配接與外連接配接。

A.内連接配接

内連接配接,即最常見的等值連接配接,例:

SELECT * 

FROM TESTA,TESTB

WHERE TESTA.A=TESTB.A

結果

B.外連接配接

外連接配接分為左外連接配接,右外連接配接和全外連接配接。

1. 左外連接配接 left outer join 或者 left join

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

SELECT *

FROM TESTA 

LEFT OUTER JOIN TESTB 

ON TESTA.A=TESTB.A

Oracle 支援另一種寫法

WHERE TESTA.A=TESTB.A(+)

結果:

三個表做左外連接配接

LEFT OUTER JOIN TESTC

ON TESTA.A=TESTC.A

Oracle 支援的另外一種寫法

FROM TESTA,TESTB,TESTC

AND TESTA.A=TESTC.A(+)

2.右外連接配接 right outer join 或者 right join

右外連接配接是在等值連接配接的基礎上加上被連接配接表的不比對資料

RIGHT OUTER JOIN TESTB 

Oracle支援的另一種寫法

WHERE TESTA.A(+)=TESTB.A

3.全外連接配接full outer join 或者 full join

全外連接配接是在等值連接配接的基礎上将左表和右表的未比對資料都加上

SELECT * 

FROM TESTA 

FULL OUTER JOIN TESTB

ON TESTA.A=TESTB.A

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

SELECT TESTA.*,TESTB.*

FROM TESTA

LEFT OUTER JOIN TESTB

UNION

FROM TESTB

LEFT OUTER JOIN TESTA

本文轉自terryli51CTO部落格,原文連結: http://blog.51cto.com/terryli/520834,如需轉載請自行聯系原作者