热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

oracle中的内连接和外连接区别

表t_user1,t_user2,t_user3,各有id,name两列idname110A

表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

 

就总结这么多吧。后面遇到再接着写。


推荐阅读
author-avatar
双木子婷_893
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有