本文目的:

通过分析左连接(+)加号的写法和一些常用语法之间的联系,了解到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 左连接(+)加号用法及常用语法之间的关系的更多相关文章

  1. Oracle学习笔记—Oracle左连接、右连接、全外连接以及(+)号用法(转载)

    转载自: Oracle左连接.右连接.全外连接以及(+)号用法 对于外连接,Oracle中可以使用“(+)”来表示. 关于使用(+)的一些注意事项: (+)操作符只能出现在WHERE子句中,并且不能与 ...

  2. Oracle左连接,右连接

    Oracle左连接,右连接 数据表的连接有: 1.内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现 2.外连接: 包括 (1)左外连接(左边的表不加限制) (2)右外连接(右边的表不加限制 ...

  3. Oracle左连接、右连接、全外连接以及(+)号用法(转)

    +:与附带的字段相连,和“+”相连的字段值,不管是否存在,都会展示 也就是带上相连接的字段 有数据了就显示,没数据就显示为null Oracle  外连接(OUTER JOIN) 左外连接(左边的表不 ...

  4. [转载]Oracle左连接、右连接、全外连接以及(+)号用法

    Oracle  外连接(OUTER JOIN) 左外连接(左边的表不加限制) 右外连接(右边的表不加限制) 全外连接(左右两表都不加限制) 对应SQL:LEFT/RIGHT/FULL OUTER JO ...

  5. Oracle左连接、右连接、全外连接以及(+)号用法

    1.准备工作 Oracle  外连接(OUTER JOIN)包括以下: 左外连接(左边的表不加限制) 右外连接(右边的表不加限制) 全外连接(左右两表都不加限制) 对应SQL:LEFT/RIGHT/F ...

  6. [转]Oracle左连接、右连接、全外连接以及(+)号用法

    原文地址:https://www.cnblogs.com/hehaiyang/p/4745897.html 阅读目录 1.准备工作 2.左外连接(LEFT OUTER JOIN/ LEFT JOIN) ...

  7. Oracle 左连接、右连接、全外连接、(+)号作用

    分类: Oracle Oracle  外连接 (1)左外连接 (左边的表不加限制)       (2)右外连接(右边的表不加限制)       (3)全外连接(左右两表都不加限制) 外连接(Outer ...

  8. Oracle 左连接、右连接、全外连接、(+)号作用、inner join(等值连接) (转载)

    Oracle  外连接 (1)左外连接 (左边的表不加限制)       (2)右外连接(右边的表不加限制)       (3)全外连接(左右两表都不加限制) 外连接(Outer Join) oute ...

  9. Oracle左连接、右连接、全外连接

    Oracle  外连接 (1)左外连接 (左边的表不加限制)(2)右外连接(右边的表不加限制)(3)全外连接(左右两表都不加限制) 外连接(Outer Join) outer join则会返回每个满足 ...

随机推荐

  1. static修饰java内部运行顺序

    package com.demo01; public class Static extends demo{ /** * @param args */ private static String str ...

  2. Unicode汉字转码小工具

    点击按钮即可使用! 在这里粘贴或输入       转换结果:

  3. Js 对Dom的操作

    一.DOM的概述 DOM(Document Object Model,文档对象模型)描绘了一个层次化的节点树,允许开发人员添加.移除和修改页面的某一部分.这使得JavaScript操作HTML,不是在 ...

  4. c# 控制台输出txt文件

    string tempFileName = "DETAIL_" + DateTime.Now.ToString("yyyyMMddHHmmssffff") + ...

  5. 用CIFilter生成QRCode二维码图片

    用CIFilter生成QRCode二维码图片 CIFilter不仅仅可以用来做滤镜,它还可以用来生成二维码. CIFilterEffect.h + CIFilterEffect.m // // CIF ...

  6. QT写hello world 以及信号槽机制

    QT是一个C++的库,不仅仅有GUI的库.首先写一个hello world吧.敲代码,从hello world 写起. #include<QtGui/QApplication> #incl ...

  7. jq实现随机显示部分图片在页面上(兼容IE5)

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  8. MATLAB入门学习(七)

    开始,线性代数和微积分了,不怕.不怕. 背命令就行了... 线性代数 解线性方程组: Ax=b A是系数矩阵,x未知数,b是列向量 如果有唯一解,直接x=b\A 第二 B=null(A,'r')求Ax ...

  9. Android(java)学习笔记209:Android线程形态之 HandlerThread

    1.  HandlerThread Android HandlerThread 完全解析 Handler与HandlerThread区别,HandlerThread应用(对比AsyncTask) 备注 ...

  10. BIND简易教程(2):BIND视图配置

    目录:BIND简易教程(1):安装及基本配置BIND简易教程(2):BIND视图配置(本篇)BIND简易教程(3):DNSSec配置 上文书说到,我们把aaa.apple.tree解析到192.168 ...