码迷,mamicode.com
首页 > 数据库 > 详细

oracle 外连接 及 (+)的使用

时间:2020-05-26 15:01:59      阅读:70      评论:0      收藏:0      [点我收藏+]

标签:abc   oct   title   enter   pac   null   ack   适用于   outline   

out_join

out_join

Table of Contents

1 外连接说明

(1)左外连接 (左边的表不加限制), 使用关键词 left [outer] join 表示,查询结果为左侧表全量数据输出,右侧表进行匹配输出,未匹配到的数据为空。 (2)右外连接(右边的表不加限制), 使用关键词 rigth [outer] join 表示,查询结果为右侧表全量数据输出,左侧表进行匹配输出,未匹配到的数据为空。 (3)全外连接(左右两表都不加限制), 使用关键词 full [outer] join 表示,查询结果为左右两侧表全量输出, 无法匹配的数据,也全部输出。

另外一种左右外连接的表示法为:(+)

当(+) 在"="左侧时,代表以右侧为全量输出,即为右外连接

当(+) 在"="右侧时,代表以左侧为全量输出,即为左外连接

总结一句话时,就是(+)在哪一侧,对应的表输出的未匹配到的数据为空,即为反方面的外连接。

使用(+)有以下限制: 1.(+)操作符只能出现在where子句中,并且不能与outer join语法同时使用。

  1. 当使用(+)操作符执行外连接时,如果在where子句中包含有多个条件,则必须在所有条件中都包含(+)操作符

3.(+)操作符只适用于列,而不能用在表达式上。 4.(+)操作符不能与or和in操作符一起使用。 5.(+)操作符只能用于实现左外连接和右外连接,而不能用于实现完全外连接。

NOTE
在外连接中使用 and 条件(非关联条件),Oracle 会先执行外连接,然后以外连接的结果为基础,执行 and 条件的过滤,而不是在原表基础上执行and条件过滤。

2 示例

------–— 测试部分 ------–— – 生成数据 create table ta(id number,name varchar2(10)); create table tb(id number,name varchar2(10));

–相同数据 insert into ta values(1,‘ha‘); insert into ta values(2,‘ha‘); insert into ta values(3,‘ha‘); insert into tb values(1,‘ha‘); insert into tb values(2,‘ha‘); insert into tb values(3,‘ha‘); – 不同数据 insert into ta values(4,‘h4‘); insert into tb values(5,‘h5‘); insert into ta values(6,‘h6‘); insert into tb values(7,‘h7‘); commit;

– 测试(+)

  • 左外连接,(+)在右侧

select * from ta,tb where ta.id=tb.id(+);

  • 右外连接,(+)在左侧

select * from ta,tb where ta.id(+)=tb.id and ta.id is null; – 注释掉该查看结果。

– 测试关键词

  • left join

select * from ta,tb where ta.id left join tb.id on ta.id = tb.id;

  • right join

select * from ta,tb where ta.id right join tb.id on ta.id = tb.id;

  • full out join

select * from ta full join tb on ta.id = tb.id; -----–— 测试完成 --------------–—

Author: halberd.lee

Created: 2020-05-26 Tue 14:37

Validate

oracle 外连接 及 (+)的使用

标签:abc   oct   title   enter   pac   null   ack   适用于   outline   

原文地址:https://www.cnblogs.com/halberd-lee/p/12965467.html

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