`

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

阅读更多

表的连接是指在一个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;

 

  --直接做相等连接:

 


  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数据库中表的四种连接方式讲解

    根据连接方式的不同,表连接主要分为四种类型:相等连接、外连接、不等连接和自连接。 1. 相等连接(Equal Join) 相等连接是最常见的连接类型,基于两个或更多表之间相同列的值相等来合并数据。例如,在`EMP`和`...

    Oracle的三种表连接方式

    "Oracle 的三种表连接方式详解" Oracle 的三种表连接方式是指在做表 join 的时候, Oracle 有三种方式,分别是:sort merge join(SMJ) ·nest loop(NL) ·hash join(HJ)。下面是对这三种策略的详细讲解: sort ...

    oracle多表连接技巧

    接下来,我们将详细介绍Oracle中几种常用的多表连接方式: ##### 1. 内连接(Inner Join) 内连接是最简单的连接方式,它只返回两个表中满足连接条件的行。如果不指定连接条件,默认情况下会产生笛卡尔积。 **示例**...

    Oracle表连接的具体讲解

    "Oracle表连接详解" 在 Oracle 中,表连接是指将两个或多个表中的...表连接是 Oracle 中的一种重要的查询方式,它可以实现复杂的数据查询和分析。然而,使用表连接需要非常小心,否则可能会导致查询结果的不正确性。

    ORACLE 数据库如何连接,连接方式

    以下将详细讲解Oracle数据库的连接方式和配置过程。 首先,Oracle数据库连接主要通过以下几种方式实现: 1. **SQL*Plus**:这是Oracle提供的一种命令行工具,可以直接在命令行界面输入SQL语句与数据库交互。要连接...

    Oracle 多表连接

    介绍SQL语句中的多表连接查询。主要讲解了表连接的形式和笛卡尔积,程序也重点讲解了表的左连接、右连接、自然连接等基本概念。

    Oracle 多表连接讲解(PDF格式)

    如果你仍然对oracle的坐连接,右连接,自连接等连接的概念、意义及其用法很模糊的话,这个文档一定会让你有一个豁然开朗的感觉,当然,这里还有个关于sqlplus的文档,可以帮助你很顺利的完成操作。

    易语言oracle数据库连接模块源码

    1. 数据库连接:讲解如何在易语言中加载oraociei10.dll,并使用相关函数初始化和建立与Oracle服务器的连接。 2. SQL操作:介绍如何使用易语言构造SQL语句,执行查询、插入、更新和删除等操作。 3. 参数绑定:解释...

    结合实例深入讲解oracle中的直方图histogram

    ### 结合实例深入讲解Oracle中的直方图Histogram #### 一、直方图的基本概念 直方图是一种统计图表,在多种领域中都有广泛的应用,它并非Oracle数据库所独有的功能。直方图通常用来描绘一组数据的分布情况,通过一...

    基于C#连接Oracle数据库Oracle.ManagedDataAccess

    总的来说,Oracle.ManagedDataAccess为C#开发者提供了一个轻量级且高效的连接Oracle数据库的方式,使得在没有安装完整Oracle客户端的环境中也能顺利进行数据库操作。通过掌握这个库的使用,你可以更便捷地构建和维护...

    delphi连接oracle(免装oracle客户端)测试

    ODAC是由Devart公司开发的一套数据访问组件,它支持多种Oracle连接方式,包括纯TNS、本地命名(Easy Connect)、HTTP/HTTPS代理等,使得开发者可以在不安装Oracle客户端的情况下,直接通过ODAC与Oracle服务器通信。...

    VB.NET连接oracle数据库

    本文将深入探讨如何使用VB.NET进行Oracle数据库的连接,并提供详细的知识点讲解。 首先,要连接Oracle数据库,我们需要引入Oracle客户端的库。Oracle提供了一个名为ODP.NET(Oracle Data Provider for .NET)的数据...

    Oracle中sql语句(+)符号代表连接的使用讲解

    oracle中sql语句(+)符号代表连接 (+)在=前边为右连接 (+)在=后边为左连接 SELECT a.*, b.* from a(+) = b就是一个右连接,等同于select a.*, b.* from a right join b SELECT a.*, b.* from a = b(+)就是一个左连接...

    c++ ado连接oracle

    在使用ADO进行C++和Oracle连接时,确保已安装了Oracle的ODBC驱动(如Oracle ODBC Driver)和相应的ADO库。此外,还要注意处理异常、连接池管理和资源释放,以确保程序的稳定性和效率。 在实际项目中,你可能还需要...

    Oracle数据库讲解与练习

    JDBC(Java Database Connectivity)是Java语言中用来连接数据库的标准接口,由Oracle公司开发。16.1部分可能涵盖了JDBC的基本概念,如驱动管理、数据库连接、执行SQL语句以及结果集的处理。16.2则可能深入讲解了...

    gradle导入本地oracle包连接数据库

    本文将详细讲解如何使用Gradle构建工具来导入本地的Oracle JAR包,以便于我们的项目能顺利连接到Oracle数据库。我们将主要关注两个文件:`ojdbc6.jar` 和一个名为 `JDBCDemo` 的示例应用。 首先,让我们了解`ojdbc6...

    初学SpringCloud连接Oracle数据库

    本篇文章将详细讲解如何在SpringCloud项目中配置Oracle数据库,并从数据库中获取数据。 首先,我们需要在项目中引入SpringBoot对Oracle数据库的支持。这可以通过在`pom.xml`文件中添加相应的依赖来实现。通常,你...

    powerbuilder9 连接 oracle 10g

    我们将从基础开始,逐步讲解连接过程中的每个步骤。 连接 Oracle 10g 的准备工作 为了连接 Oracle 10g 数据库,我们需要准备以下几个文件: 1. oci.dll 和 oraociei10.dll:这两个文件是 Oracle 客户端的核心组件...

    VC++6.0连接ORACLE例子

    在提供的"Oracle连接测试"文件中,可能包含了完整的示例代码,包括如何初始化环境,建立会话,执行SQL语句,处理结果集,最后关闭连接。对于初学者来说,理解并模仿这个例子是学习VC++连接Oracle的好方法。 请注意...

Global site tag (gtag.js) - Google Analytics