码迷,mamicode.com
首页 > 其他好文 > 详细

内连接和外连接区别

时间:2018-06-19 20:09:17      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:nio   lsp   右外连接   oracl   strong   数据   就是   border   等值连接   

表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

 

内连接和外连接区别

标签:nio   lsp   右外连接   oracl   strong   数据   就是   border   等值连接   

原文地址:https://www.cnblogs.com/Archer-Fang/p/9200755.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!