oracle中的內連接和外連接區別


表t_user1,t_user2,t_user3,各有id,name兩列 

id

name

1

10A

2

20A

 

id

name

1

10B

3

30B

 

id

name

1

10C

4

40C

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

A.內連接

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

SELECT * 
FROM t_user1,t_user2
WHERE t_user1.id = t_user2.id


結果

 

id

name

id

name

1

10A

1

10B

B.外連接

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

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

左外連接就是在等值連接的基礎上加上主表中的未匹配數據,例:

SELECT *
FROM t_user1 
LEFT OUTER JOIN  t_user2
ON t_user1.id = t_user2.id

Oracle 支持另一種寫法

SELECT * 
FROM t_user1 ,t_user2
WHERE t_user1.id=t_user2.id(+)

結果:

 

id

name

id

name

1

10A

1

10B

2

20A

   

三個表做左外連接

SELECT *
FROM t_user1
LEFT OUTER JOIN t_user2
ON t_user1.id=t_user2.id
LEFT OUTER JOIN t_user3
ON t_user1.id=t_user3.id

Oracle 支持的另外一種寫法

SELECT *
FROM t_user1,t_user2,t_user3
WHERE t_user1.id=t_user2.id(+)
AND t_user1.id=t_user3.id(+)

結果:

 

id

name

id

name

id

name

1

10A

1

10B

1

10C

2

20A

       

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

右外連接是在等值連接的基礎上加上被連接表的不匹配數據

SELECT *
FROM t_user1
RIGHT OUTER JOIN t_user2
ON t_user1.id=t_user2.id

Oracle支持的另一種寫法

SELECT *
FROM t_user1,t_user2
WHERE t_user1.id(+)=t_user2.id

結果:

 

id

name

id

name

1

10A

1

10B

   

3

30B

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

全外連接是在等值連接的基礎上將左表和右表的未匹配數據都加上

SELECT * 
FROM t_user1
FULL OUTER JOIN t_user2
ON t_user1.id=t_user2.id

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

SELECT  t_user1.*,t_user2.*
FROM t_user1
LEFT OUTER JOIN t_user2
ON t_user1.id = t_user2.id
UNION
SELECT  t_user1.*,t_user2.*
FROM t_user2
LEFT OUTER JOIN t_user1
ON t_user1.id = t_user2.id

結果:

 

 

id

name

id

name

1

10A

1

10B

2

20A

   
   

3

30B

 

就總結這么多吧。后面遇到再接着寫。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM