Oracle 左连接(+)加号用法及常用语法之间的关系
本文目的:
通过分析左连接(+)加号的写法和一些常用语法之间的联系,了解到Oracle 加号(+)的用法
分析步骤:
1.首先创建测试表的结构:
create table test_left_a (
a varchar2(50),
b varchar2(50)
)
create table test_left_b (
a varchar2(50),
b varchar2(50)
)
2.插入相应的测试数据:
insert into test_left_a select 'a','21' from dual;
commit;
insert into test_left_a select 'c','2111' from dual;
commit;
insert into test_left_b select 'a','12' from dual;
commit;
insert into test_left_b select 'b','13' from dual;
commit;
3.列举出实现左连接查询的几种常用的语法,以便对比分析
实现左连接查询(不加where)的几种语法:
A:
select * from test_left_a a left join test_left_b b on a.a = b.a;
B:
select * from test_left_a a, test_left_b b where a.a = b.a(+);
C:
select *
from test_left_a a
inner join test_left_b b on a.a = b.a(+);
实现左连接查询(加where)的几种语法:
D:
select *
from test_left_a a
left join test_left_b b on a.a = b.a
where a.a = b.a;
E:
select *
from test_left_a a, test_left_b b
where a.a = b.a(+)
and a.a = b.a;
F:
select *
from test_left_a a
inner join test_left_b b on a.a = b.a(+)
and a.a = b.a;
G:
select *
from test_left_a a
inner join test_left_b b on a.a = b.a(+)
where a.a = b.a;
区分where的目的是为了由浅入深,避免在理解类似E写法的时候出现on的误导引起偏差
4.结论:
以上几种查询(暂不考虑性能,只考虑用法)
A等价于B等价于C
查询结果:
a 21 a 12
c 2111
D等价于E等价于F等价于G
查询结果:
a 21 a 12
5.温馨提示:
▶使用inner join的时候 直接在on后面写条件和在where后再写条件是一样的,原因是内连接是匹配出on条件为真的记录(参考F和G)。
▶使用left join或者right join的时候,直接在on后面写条件和在where后再写条件是不一样的,原因是:
left join即使on后面的条件为假也会显示出左表的所有记录
right join即使on后面的条件为假也会显示出右表的所有记录。
▶本文内容如有不妥之处,恳请指正。
Oracle 左连接(+)加号用法及常用语法之间的关系的更多相关文章
- Oracle学习笔记—Oracle左连接、右连接、全外连接以及(+)号用法(转载)
转载自: Oracle左连接.右连接.全外连接以及(+)号用法 对于外连接,Oracle中可以使用“(+)”来表示. 关于使用(+)的一些注意事项: (+)操作符只能出现在WHERE子句中,并且不能与 ...
- Oracle左连接,右连接
Oracle左连接,右连接 数据表的连接有: 1.内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现 2.外连接: 包括 (1)左外连接(左边的表不加限制) (2)右外连接(右边的表不加限制 ...
- Oracle左连接、右连接、全外连接以及(+)号用法(转)
+:与附带的字段相连,和“+”相连的字段值,不管是否存在,都会展示 也就是带上相连接的字段 有数据了就显示,没数据就显示为null Oracle 外连接(OUTER JOIN) 左外连接(左边的表不 ...
- [转载]Oracle左连接、右连接、全外连接以及(+)号用法
Oracle 外连接(OUTER JOIN) 左外连接(左边的表不加限制) 右外连接(右边的表不加限制) 全外连接(左右两表都不加限制) 对应SQL:LEFT/RIGHT/FULL OUTER JO ...
- Oracle左连接、右连接、全外连接以及(+)号用法
1.准备工作 Oracle 外连接(OUTER JOIN)包括以下: 左外连接(左边的表不加限制) 右外连接(右边的表不加限制) 全外连接(左右两表都不加限制) 对应SQL:LEFT/RIGHT/F ...
- [转]Oracle左连接、右连接、全外连接以及(+)号用法
原文地址:https://www.cnblogs.com/hehaiyang/p/4745897.html 阅读目录 1.准备工作 2.左外连接(LEFT OUTER JOIN/ LEFT JOIN) ...
- Oracle 左连接、右连接、全外连接、(+)号作用
分类: Oracle Oracle 外连接 (1)左外连接 (左边的表不加限制) (2)右外连接(右边的表不加限制) (3)全外连接(左右两表都不加限制) 外连接(Outer ...
- Oracle 左连接、右连接、全外连接、(+)号作用、inner join(等值连接) (转载)
Oracle 外连接 (1)左外连接 (左边的表不加限制) (2)右外连接(右边的表不加限制) (3)全外连接(左右两表都不加限制) 外连接(Outer Join) oute ...
- Oracle左连接、右连接、全外连接
Oracle 外连接 (1)左外连接 (左边的表不加限制)(2)右外连接(右边的表不加限制)(3)全外连接(左右两表都不加限制) 外连接(Outer Join) outer join则会返回每个满足 ...
随机推荐
- mysql 的用法
SELECT CASEWHEN //当count(userId) = 0的时候 让其为null 不然报警告 // count(DISTINCT userId) 不用处理 count(userId ...
- Canvas中的save方法和restore方法
初学者也许会误认为canvas中save方法是用来保存绘图状态的图形,而restore方法是用来还原之前保存的绘图状态的图形,其实不然. save():保存当前的绘图状态. restore():恢复之 ...
- iview中render函数监听事件
iview的table中添加datepicker在组件中嵌套组件,如果需要监听子组件的自定义事件,应该使用render中的on:{ 'on-change' () => { console.log ...
- vscode自定义代码块
vscode中设置自定义代码块打开首选项,选择用户代码片段,打开后选择编程语言选中后打开文件,按照格式编辑内容 "Print to console log": { "pr ...
- Ubuntu 下 /etc/resolv.conf文件总是自动清除问题的解决方案
最近学习Linux,在虚拟机中安装的是Ubuntu操作系统,用了几天发现Ubuntu无法上网,打开命令终端,输入命令: ping www.baidu.com -c2 结果显示名称无法识别,而直接与宿主 ...
- 我的视频网站开通,第一个 ArcGIS文本文件,excel文件生成点操作发布,希望大家支持
网站地址:http://i.youku.com/gisoracle第一个学习视屏:ArcGIS文本文件,excel文件生成点操作http://v.youku.com/v_show/id_XNzM3Nz ...
- 属性只有一个值的这类 html 属性是怎么回事,该如何设置值;比如:checked = “checked” vs checked = true
参考链接:https://stackoverflow.com/questions/10650233/checked-checked-vs-checked-true 问: What is the dif ...
- QT样式
最近在写QT的UI 分享一个助手网页 http://doc.qt.io/qt-4.8/stylesheet-examples.html
- 高质量C++C编程指南笔记 标签: c++笔记 2015-11-22 20:59 179人阅读 评论(0) 收藏
1. 在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少 CPU 跨切循环层的次数. 2. 如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面 ...
- 一直在用的一个javascript网站
http://www.dottoro.com/ 很不错,例子丰富,解释详细,全面:非常好的参考资料站.