`
郑云飞
  • 浏览: 809292 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

oracle 左外连接,右外连接,全外连接

 
阅读更多
 对于外连接,Oracle中可以使用“(+)”来表示,9i可以使用LEFT/RIGHT/FULL OUTER JOIN,下面将配合实例一一介绍。

  1. LEFT OUTER JOIN:左外关联

  SELECT e.last_name, e.department_id, d.department_name

  FROM employees e

  LEFT OUTER JOIN departments d

  ON (e.department_id = d.department_id);

  等价于

  SELECT e.last_name, e.department_id, d.department_name

  FROM employees e, departments d

  WHERE e.department_id=d.department_id(+);

  结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录。

  2. RIGHT OUTER JOIN:右外关联

  SELECT e.last_name, e.department_id, d.department_name

  FROM employees e

  RIGHT OUTER JOIN departments d

  ON (e.department_id = d.department_id);

  等价于

  SELECT e.last_name, e.department_id, d.department_name

  FROM employees e, departments d

  WHERE e.department_id(+)=d.department_id;

  结果为:所有员工及对应部门的记录,包括没有任何员工的部门记录。

  3. FULL OUTER JOIN:全外关联

  SELECT e.last_name, e.department_id, d.department_name

  FROM employees e

  FULL OUTER JOIN departments d

  ON (e.department_id = d.department_id);

  结果为:所有员工及对应部门的记录,包括没有对应部门编号department_id的员工记录和没有任何员工的部门记录。

  外连接:

  除了显示匹配相等连接条件的数据外,还可以显示某一个表中无法匹配相等连接条件的记录!

  ------------------------------------------------

  1) 左条件(+) = 右条件

  左条件所在的表必须严格进行相等连接条件的匹配,而右条件所在的表除了匹配相等连接条件外,还可以显示无法匹配连接条件的数据!

  也称为右外连接.

  --------------------------------

  可以用下列语句取代:

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

  2) 左条件 = 右条件(+)

  右条件所在的表必须严格进行相等连接条件的匹配,而左条件所在的表除了匹配相等连接条件外,还可以显示无法匹配连接条件的数据!

  也称为左外连接.

  --------------------------------

  可以用下列语句取代:

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

  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;

  Oracle 建议你用在From语句后用Outer Join语法 而不是Oracle的Join操作符(+).而且(+)是要受下面的规则限制的,但Outer Join语法则不受的~~

  1)你不可以在查询块中使用(+) 当它同时包含 join的from语句中

  2)(+)只是在where语句中,并且只能对应一个表或视图的一行字段

  3)如果A和B做联接时有多个条件,那么(+)必须完善所有的匹配条件,

  如果没有 ,oracle不会警告你~只是结果自然不同的

  4)不可以在作出一个表外查询 另张表内查询的(+)联接操作~~

  5)不可以用(+)外联接到自己 当然Self Join是可以的

  6)含(+)的Where后的注意

  OR不可用

  IN不可用

  子查询不可用

  以下给些个例子:

  SQL code

  SQL> desc part

  Name                                      Null?    Type

  ----------------------------------------- -------- -----------------

  PART_ID                                   NOT NULL VARCHAR2(4)

  SUPPLIER_ID                                        VARCHAR2(4)

  SQL> select * from part;

  PART SUPP

  ---- ----

  P1   S1

  P3

  P4

 

分享到:
评论

相关推荐

    oracle 左连接 右连接学习

    下面我们将详细介绍 Oracle 中的左连接、右连接、内连接、全连接和交叉连接。 左连接(Left Outer Join) 左连接是一种外连接,它返回左表中的所有记录,并将右表中的记录匹配到左表中。如果右表中没有匹配的记录...

    Oracle 左连接、右连接

    本篇文章将深入探讨Oracle中的左连接(LEFT JOIN)和右连接(RIGHT JOIN),这两种连接方式都是为了在不同表之间建立联系,特别是在数据不完全匹配的情况下。 首先,我们来看一下左连接(LEFT JOIN)。左连接返回左...

    Oracle左连接,右连接.doc

    右连接也称为右外连接,它会返回右表的所有行,并且只返回左表中与右表匹配的行。如果左表中没有匹配的行,则会填充NULL值。 **语法示例:** ```sql SELECT a.studentno, a.studentname, b.classname FROM ...

    oracle数据库 左连接 右连接 自连接 。。

    例如,通过左连接和右连接的组合,可以实现全连接(Full Join),获取两个表的所有记录。同时,还可以结合使用WHERE子句和聚合函数(如COUNT, SUM, AVG等)来过滤和统计数据。 了解并熟练掌握这些连接方式,对于...

    Oracle数据库左外连接

    Oracle连接有多中,我是在平常开发项目过程中用到的Oracle左连接进行了简单的阐述。

    oracle左右连接方法

    本文将详细介绍Oracle中的左连接(Left Join)、右连接(Right Join)、内连接(Inner Join)、全连接(Full Join)以及交叉连接(Cross Join)的方法,并通过示例来帮助理解每种连接的特点。 ### 一、左连接(Left...

    Oracle左(外)、右(外)、全(外)、(内)连接语法与SQL标准的比较

    通过对比可以看出,Oracle在实现左(外)、右(外)、全(外)以及内连接时,其语法与SQL标准有所不同,尤其是在左(外)和右(外)连接上使用了独特的“+”符号来表示可选项。对于全(外)连接,Oracle通过组合左(外)和右(外)...

    oracle数据库表左连接右连接全连接的认识

    左连接和右连接的区别在于基准表的选择,左连接将左边的表作为基准表,全表数据都要显示,而右连接将右边的表作为基准表,全表数据都要显示。例如: `SELECT e.empno, e.ename, d.dname FROM emp e LEFT JOIN dept ...

    理解oracle中的外连接

    外连接分为三种类型:左外连接(Left Outer Join)、右外连接(Right Outer Join)和全外连接(Full Outer Join)。本篇文章将深入探讨这三种外连接的概念、语法以及它们在实际应用中的作用。 1. 左外连接(Left ...

    SQL之左连接、右连接和全连接.doc

    右连接也称为右外连接,用于从右侧表中检索记录,返回右侧表中的所有记录,并将左侧表中的匹配记录附加到右侧表中。如果左侧表中没有匹配记录,将返回空值。右连接的基本语法为: SELECT * FROM 左侧表 RIGHT JOIN ...

    Oracle左连接返回多条记录中一条记录的查询语句

    Oracle左连接返回多条记录中一条记录的查询语句,更具指定条件分组排序,返回各组中第一条记录

    Oracle左右连接及一些练习资料

    "SQL语句.pdf"可能包含了更广泛的SQL语句类型,包括各种JOIN操作,如左连接、右连接、全连接和内连接,以及子查询、联接查询等。通过这些练习,你可以提升SQL编写能力,更好地处理复杂的数据关系。 "Oracle_01.pdf...

    Oracle外连接查询

    全外连接结合了左外连接和右外连接的功能,返回两个表中的所有记录,无论是否存在匹配。如果一个表中没有匹配项,那么结果将显示另一个表的所有字段,并在没有匹配的字段处填充NULL。 除了这些外连接,还有其他类型...

    sql左连接,右连接,内连接,全连接讲解

    sql左连接,右连接,内连接,全连接详细讲解

    oracle多表连接技巧

    外连接分为左外连接(Left Outer Join)、右外连接(Right Outer Join)以及全外连接(Full Outer Join)。它们不仅返回满足连接条件的行,还会返回非匹配行。 **左外连接(Left Outer Join)** 左外连接返回左表的...

    oracle客户端配置连接oracle客户端配置连接

    oracle客户端配置连接oracle客户端配置连接oracle客户端配置连接

    sap 与 oracle数据库的连接

    SAP与Oracle数据库的连接 SAP系统与Oracle数据库的连接是SAP开发中的一个重要步骤,该连接允许SAP系统访问Oracle数据库中的数据,实现数据交换和共享。在本文中,我们将详细介绍SAP开发中模块连接Oracle数据库的...

Global site tag (gtag.js) - Google Analytics