Oracle表的几种连接方式及其问题总结

作者: 大小说家RCQ | 来源:发表于2017-05-18 16:23 被阅读0次

内连接(等值连接)

为了能够更好的描述出当前的问题,下面向emp表之中增加一行记录,此记录属于没有部门的雇员。

INSERT INTO emp(empno, ename, job) VALUES(8888, '张三', 'CLERK') ;

图片.png
  • 使用内连接:
SELECT  e.empno, e.ename, e.job, d.deptno, d.dname, d.loc 
FROM  emp  e,  dept  d 
WHERE  e.deptno=d.deptno ;

现在的代码是属于,只有当“e.deptno=d.deptno”这个条件满足之后,才会显示出对应的数据。
如果此时数据为空,那么,此条件无法满足,则内容不能够显示。

问题来了:(在emp表中,“张三”的部门编号为空,所以,“张三”的信息不能够显示。)

另外,在dept表中,部门编号为40的部门,暂时 没有人 在该部门工作。

图片.png

问题:在 emp表,dept表 的多表查询中,如果想要显示出雇员姓名为“张三”的雇员信息,或者想要显示出部门编号为40的部门信息,该怎么办??

那么此时就需要用到外连接了

外连接

  • 观察 左外连接
图片.png

此时,全部的雇员信息,都可以正常显示出来了,但是,由于“张三”没有对应的部门数据,所以,此行记录的部门数据为空。

  • 观察 右外连接

发现此时的程序,所有的部门信息会进行显示,但是由于部门编号为40的部门没有雇员,所以,此行记录的雇员数据为空。

自连接

查询每个雇员的姓名、职位、领导姓名领导姓名,与领导的雇员编号

每个雇员对应了一个领导编号,而每一个领导也属于雇员。

图片.png
  • 使用自连接

但是,发现了一个问题,此时的数据显示不完整,(“张三”、“KING”的信息没有显示出来)。如果发现查询的数据不完整,那么,建议使用外连接

图片.png

这种自己关联自己的查询,也称为自身关联,但不管是不是自身关联,程序认的只是FROM子句之后存在有多少张数据表,有多张表就必须编写消除笛卡尔积的条件。

相关文章

  • Oracle表的几种连接方式及其问题总结

    内连接(等值连接) 为了能够更好的描述出当前的问题,下面向emp表之中增加一行记录,此记录属于没有部门的雇员。 I...

  • Oracle面试题之SQL tunting

    Oracle面试题之SQL tunting 1:列举几种表连接方式 答:一共有三种连接方式(SQL优化),嵌套循环...

  • Oracle执行计划

    Orace执行计划 Orace执行计划相关的概念Oracle访问数据的方法表之间的连接方式总结参考 相关的概念 R...

  • 北京纬创

    1、Oracle常见表空间及其作用 system表空间:含数据字典信息sysaux表空间:存储各种oracle应用...

  • Linux主机查看Oracle的tns串

    问题 在使用exp导出Oracle库表时,得需要知道tns串。如何从主机上查询Oracle的连接串呢? 解决 通过...

  • SQL优化经验总结

    最近在学习SQl优化方面的知识内容,以下做一个总结!!! 1、表连接中选择最有效率的表作为基础表 Oracle...

  • 1- Oracle Select语句

    Oracle PL/SQL FROM子句用于列出Oracle查询所需的表和所有连接信息。 语法 Oracle PL...

  • Oracle-RMAN 使用详解

    RMAN 使用详解 一、连接方式 (一)、连接本地数据库 [oracle@oracle ~]$ rman targ...

  • 【Oracle】Oracle备份的几种方式

    这里使用Oracle 12C来大概演示说明一下rman的基本用法,这里不会深入讨论,因为本人也只是刚刚才接触,只是...

  • 关于Oracle能被plsql连接却不能被sqlplus连接问题

    问题描述:plsql可以连接oracle但sqlplus无法连接,出现监听连接 主要是因为oracle客户端的环境...

网友评论

    本文标题:Oracle表的几种连接方式及其问题总结

    本文链接:https://www.haomeiwen.com/subject/jubsxxtx.html