一、外连接

oracle 连接查询分为外链接和内连接,我们先看外连接【outer join】。oracle 的外连接查询分为:

  • 左外连接 (左边的表不加限制) left outer join
  • 右外连接 (右边的表不加限制) right outer join
  • 全外连接 (左右两表都不加限制)full outer join; 通常outer关键字可省略,写成:left/right/full join 即可。

在左右连接时,通常都会以一张表如A表为基础表,该表的内容会全部显示,再加上A表和B表匹配的内容。如果A表中的数据在B表中没有记录,那么会在结果集中以空值显示。

关于外连接,也可以使用(+)来表示。关于使用(+)的一些注意事项:

  1. (+)操作符只能出现在where子句中,且不能与 outer join 语句同时使用。
  2. 使用(+)操作符执行外连接时,如果where子句中存在有多个条件,则必须在所有条件中都包含(+)操作符。
  3. (+)操作符值适用于列,不能用在表达式上
  4. (+)操作符不能与OR和IN操作符一起使用
  5. (+)只能用于实现左外连接和右外连接,不能用于实现全外连接。

1.左外连接--left (outer) join

左外连接是以左表为基础表,示例中以 emp 表为左表,显示所有的查询数据;以 dept 表为右表,显示与 emp 表匹配后的数据,即显示符合查询条件的数据。

select e.deptno,e.ename,e.job,e.sal,d.dname,d.deptno from emp e left join dept d on e.deptno=d.deptno;
或
select e.deptno,e.ename,e.job,e.sal,d.dname,d.deptno from emp e left outer join dept d on e.deptno=d.deptno;

用(+)操作符来实现。这个(+) 操作符可以这样理解: + 表示补充,即哪个表有+号,哪个表就是匹配表。如果 + 号写在右表,则左表就全部显示,所以为左连接。

(+):Oracle专用的联接符,在条件中出现在左边指右外联接,出现在右边指左外联接

select e.deptno,e.ename,e.job,e.sal,d.dname,d.deptno from emp e,dept d where e.deptno=d.deptno(+);

2.右外连接--right (outer) join

右外连接与左外连接正好相反,它是以右表为基础表。在示例中,dept 表为右表,全部显示;emp 表为左表,显示符合查询条件的数据。emp表记录不足的地方显示为NULL。

select e.deptno,e.ename,e.job,e.sal,d.dname,d.deptno from emp e right join dept d on e.deptno=d.deptno;
或
select e.deptno,e.ename,e.job,e.sal,d.dname,d.deptno from emp e right outer join dept d on e.deptno=d.deptno;

用(+)操作符显示,即为:

select e.deptno,e.ename,e.job,e.sal,d.dname,d.deptno from emp e,dept d where e.deptno(+)=d.deptno;

红线框中为dept表中有,而emp表中没有的数据,显示为NULL。

3.全外连接--(FULL OUTER JOIN/FULL JOIN

全外连接对左表和右表都不做限制,所有的记录均显示,两表不足的地方都为NULL。全外连接不支持(+)写法

select e.deptno,e.ename,e.job,e.sal,d.dname,d.deptno from emp e full join dept d on e.deptno=d.deptno;
或
select e.deptno,e.ename,e.job,e.sal,d.dname,d.deptno from emp e full outer join dept d on e.deptno=d.deptno;

二、内连接

内连接也叫简单连接,只返回满足条件的记录。用inner join......on.. 来标记,inner可省略。

select e.deptno,e.ename,e.job,e.sal,d.dname,d.deptno from emp e inner join dept d on e.deptno=d.deptno;
或
select e.deptno,e.ename,e.job,e.sal,d.dname,d.deptno from emp e join dept d on e.deptno=d.deptno;

转载于:https://www.cnblogs.com/anchun7080/p/8243824.html

oracle 连接查询--内连接与外连接相关推荐

  1. mysql连接查询(内联)_MySQL之连接查询

    JavaScript面向对象与原型 工厂模式:无法识别对象 function createObject(name, age) { //集中实例化的函数 var obj = new Object(); ...

  2. MySql连接查询——内连接与外连接

    引言 实际业务开发中,往往会涉及到多张表之间的数据交互,这时候单表查询已经不能满足复杂的业务需求了,所以就需要用到多表的连接查询: 连接查询主要分为以下三种: 内连接 等值连接 非等值连接 自连接 外 ...

  3. mysql连接查询 内连接查询 外连接查询

    连接查询 连接查询是将两个或两个以上的表按照某个条件连接起来,从中选取需要的数据: t_book表: id bookName price author bookTypeId t_bookType表:  ...

  4. 什么时候使用内连接,什么时候使用外连接

    需要查找两张表同时存在的数据,使用内连接  需要查找两张表中一张表存在,另一张表不存在的时候使用左外链接 或 右外链接  内连接的查询结果都是满足连接条件的元组.但有时我们也希望输出那些不满足连接条件 ...

  5. 内链接与外连接的区别

    两个表的连接,是通过将一个表中的一列或者多列同另一个表中的列链接而建立起来的.用来连接两张表的表达式组成了连接条件.当连接成功后,第二张表中的数据就同第一张表连接起来了,并形成了复合结果集--包括两张 ...

  6. 两表连接查询 mysql_MySQL 中两表连接查询总结

    在之前的学习中,筛选出来的列都是一张表中的,本篇开始是对连表查询的学习内容.先从以下场景开始: 生成一张报价单,报价单包含商品名称,栏目名称,商品库存,商品价格,栏目名称和商品信息放在两张表中. 传统 ...

  7. MySQL连接查询 内连接和外连接的区别

    MySQL 连接查询 @ sunRainAmazing 1.使用连接查询的场景 将多张表进行记录的连接查询(按照某个字段指定的条件进行数据的拼接):进行数据的拼接(两张表的内容显示在一个结果表中 使用 ...

  8. 4.mysql数据库创建,表中创建模具模板脚本,mysql_SQL99标准连接查询(恩,外部连接,全外连接,交叉连接)...

     mysql数据库创建,表创建模等模板脚本 -- 用root用户登录系统,运行脚本 -- 创建数据库 create database mydb61 character set utf8 ; -- ...

  9. mysql数据库(排序,聚合函数,分组,分页查询,union,连接查询,主键外键)

    1.排序(order by) select * from stu order by age; -- 默认升序 升序 ASC 降序DESC -- DESC 具有查看表的结构的功能 desc stu; 不 ...

最新文章

  1. freemarker常见语法大全,灰常有用!
  2. C++实现二叉树的相应操作
  3. 好老婆的作息时间(做女人真悲哀 ……)
  4. 《系统工程师实战培训》-01-规划(附:原版课件)
  5. sqoop和sqoop2区别
  6. 1001 害死人不偿命的(3n+1)猜想 (15)
  7. React fundamental 和 React Router-郭永峰-专题视频课程
  8. MATLAB图形绘制--添加图例
  9. 【JavaWeb】用监听器实现单一登录
  10. Linux开发板实现 NTP时间获取
  11. 电商核心业务功能测试分析
  12. 中职网络安全操作系统渗透
  13. 估值近百亿,“创维三把手”酷开科技能否顺利赶考?
  14. 【软考 系统架构设计师】计算机组成与体系结构⑥ 流水线
  15. 可怕!一部手机失窃而揭露的黑色产业链
  16. Python二手车价格预测(二)—— 模型训练及可视化
  17. linux 虚拟机
  18. 达芬奇系列教程2-简单剪辑及一些快捷键
  19. Geopandas对地图文件按区域进行分割并统计
  20. 求圆周率π的近似值(精确到小数点第5位或第7位)

热门文章

  1. python提高办公效率-提升Python程序运行效率的6个方法
  2. python使用什么注释语句和运算-Python中的注释符有哪几种?( )
  3. python输入任意多个成绩-Python 实现输入任意多个数,并计算其平均值的例子
  4. python入门有基础-Python入门必须知道的11个知识点
  5. python基础知识面试题-基础篇--【python】面试题汇总
  6. python的assert(断言)异常步骤机制
  7. Python中的输入输出
  8. Leader/Follower多线程网络模型介绍
  9. 题目1200:最大的两个数
  10. 学习笔记:CentOS 7学习之十一:文件的重定向