Oracle数据库中表的四种连接方式讲解_绿色软件之家

绿色软件之家:您身边最放心的安全下载站! 最新更新|软件分类|软件专题|手机版|论坛转贴|软件发布

您当前所在位置: 首页数据库Oracle → Oracle数据库中表的四种连接方式讲解

Oracle数据库中表的四种连接方式讲解

时间:2015-06-28 00:00:00 来源:绿色软件之家 作者:网管联盟 我要评论(0)

  表的连接是指在一个SQL语句中通过表与表之间的关连,从一个或多个表中检索相关的数据,大体上表与表之间的连接主要可分四种,分别为相等连接,外连接,不等连接和自连接,本文将主要从以下几个典型的例子来分析Oracle表的四种不同连接方式:

  1. 相等连接

  通过两个表具有相同意义的列,可以建立相等连接条件。

  只有连接列上在两个表中都出现且值相等的行才会出现在查询结果中。

  例 查询员工信息以及对应的员工所在的部门信息;


  SELECT?*?FROM?EMP,DEPT;
  SELECT?*?FROM?EMP,DEPT
  WHERE?EMP.DEPTNO?=?DEPT.DEPTNO;

  REM 显示工资超过2000的员工信息以及对应的员工的部门名称。

  2. 外连接

  对于外连接,Oracle中可以使用"(+)"来表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN,下面将配合实例一一介绍。除了显示匹配相等连接条件的信息之外,还显示无法匹配相等连接条件的某个表的信息。

  外连接采用(+)来识别。

  A) 左条件(+) = 右条件;

  代表除了显示匹配相等连接条件的信息之外,还显示右条件所在的表中无法匹配相等连接条件的信息。

  此时也称为"右外连接".另一种表示方法是:

  SELECT ... FROM 表1 RIGHT OUTER JOIN 表2 ON 连接条件

  B) 左条件 = 右条件(+);

  代表除了显示匹配相等连接条件的信息之外,还显示左条件所在的表中无法匹配相等连接条件的信息。

  此时也称为"左外连接".

  SELECT ... FROM 表1 LEFT OUTER JOIN 表2 ON 连接条件

  例 显示员工信息以及所对应的部门信息

  --无法显示没有部门的员工信息

  --无法显示没有员工的部门信息


  --SELECT?*?FROM?EMP,DEPT?WHERE?EMP.DEPTNO?=?DEPT.DEPTNO;

  --直接做相等连接:

#p#副标题#e#


  SELECT?*?FROM?EMP?JOIN?DEPT?ON?EMP.DEPTNO?=?DEPT.DEPTNO;

  REM 显示员工信息以及所对应的部门信息,显示没有员工的部门信息


  --SELECT?*?FROM?EMP,DEPT?WHERE?EMP.DEPTNO(+)?=?DEPT.DEPTNO;
  SELECT?*?FROM?EMP?RIGHT?OUTER?JOIN?DEPT?ON?EMP.DEPTNO?=?DEPT.DEPTNO;

  REM 显示员工信息以及所对应的部门信息,显示没有部门的员工信息


  --SELECT?*?FROM?EMP,DEPT?WHERE?EMP.DEPTNO?=?DEPT.DEPTNO(+);
  SELECT?*?FROM?EMP?LEFT?OUTER?JOIN?DEPT?ON?EMP.DEPTNO?=?DEPT.DEPTNO;

  3. 不等连接

  两个表中的相关的两列进行不等连接,比较符号一般为>,<,...,BETWEEN.. AND..


  REM?SALGRADE
  --DESC?SALGRADE;
  --SELECT?*?FROM?SALGRADE;

  REM 显示员工的编号,姓名,工资,以及工资所对应的级别。


  SELECT?EMPNO,ENAME,SAL,SALGRADE.*?FROM?SALGRADE,EMP
  WHERE?EMP.SAL?BETWEEN?LOSAL?AND?HISAL;

  REM 显示雇员的编号,姓名,工资,工资级别,所在部门的名称;


  SELECT?EMPNO,ENAME,SAL,GRADE,DNAME?FROM?EMP,DEPT,SALGRADE
  WHERE?EMP.DEPTNO?=?DEPT.DEPTNO?AND?EMP.SAL?BETWEEN?LOSAL?AND?HISAL;

  4. 自连接

  自连接是数据库中经常要用的连接方式,使用自连接可以将自身表的一个镜像当作另一个表来对待,从而能够得到一些特殊的数据。下面介绍一下自连接的方法:

  将原表复制一份作为另一个表,两表做笛卡儿相等连接。

  例 显示雇员的编号,名称,以及该雇员的经理名称

  SELECT WORKER.ENAME,WORKER.MGR,MANAGER.EMPNO,MANAGER.ENAME FROM EMP WORKER,EMP MANAGER

  WHERE WORKER.MGR = MANAGER.EMPNO;

关键词标签:Oracle数据库

相关阅读

文章评论
发表评论

热门文章 Oracle中使用alter table来增加,删除,修改列的语法 Oracle中使用alter table来增加,删除,修改列的语法 oracle中使用SQL语句修改字段类型-oracle修改SQL语句案例 oracle中使用SQL语句修改字段类型-oracle修改SQL语句案例 误删Oracle数据库实例的控制文件 误删Oracle数据库实例的控制文件 为UNIX服务器设置Oracle全文检索 为UNIX服务器设置Oracle全文检索

相关下载

    人气排行 oracle中使用SQL语句修改字段类型-oracle修改SQL语句案例 Oracle中使用alter table来增加,删除,修改列的语法 ORACLE SQL 判断字符串是否为数字的语句 ORACLE和SQL语法区别归纳(1) oracle grant 授权语句 ORACLE修改IP地址后如何能够使用 如何加速Oracle大批量数据处理 Oracle删除表的几种方法