- 浏览: 70781 次
- 性别:
- 来自: 杭州
文章分类
最新评论
外关联是Oracle数据库的专有语句
Left Outer Join则是SQL-92的标准语句
通常认为这两个SQL是可以等效的,但还是有些细微的差别。
一般说来,外关联的等值条件等效于Left Outer Join中的on语句;两个where中其他语句是一样的。
但是Left Outer Join中的其他条件(非表连接)出现在On关键词后面还是出现在Where关键词后面是不一样的,这样的语句很难用外关联进行同义转义。
下面我们先看一个测试数据,和一个测试案例
创建一个部门表和员工表
CREATE TABLE departments ( depID NUMBER(38,0), depName VARCHAR2(20), delFlag NUMBER(1,0) );
CREATE TABLE employees ( empID NUMBER(38,0), empName VARCHAR2(20), depID NUMBER(38,0), delFlag NUMBER(1,0) );
INSERT INTO departments VALUES(1,'Finacle',0); INSERT INTO departments VALUES(2,'Marketing',0); INSERT INTO departments VALUES(3,'HR',1); INSERT INTO departments VALUES(4,'IT',0);
INSERT INTO employees VALUES(1,'wbq',1,0); INSERT INTO employees VALUES(2,'czh',2,0); INSERT INTO employees VALUES(3,'chh',1,0); INSERT INTO employees VALUES(4,'wal',2,0); INSERT INTO employees VALUES(5,'ddd',3,0);
COMMIT; |
以下为测试例子
--列出部门ID为3的部门和员工信息,不管该部门是否有员工 SELECT d.depID,d.depName,e.empName FROM departments d LEFT OUTER JOIN employees e ON d.depID = e.depID WHERE d.depID =3 ORDER BY d.depID; --和上面等效 SELECT d.depID,d.depName,e.empName FROM departments d, employees e WHERE d.depID = e.depID(+) AND d.depID =3 ORDER BY d.depID;
--该例子可能不是很恰当,d.depID=3表示首先进行全左连接,然后查找depID=3的纪录,如果该部门中找不到对应的员工,则该部门员工则为NULL,同时都显示部门信息。 SELECT d.depID,d.depName,e.empName d.delflag FROM departments d LEFT OUTER JOIN employees e ON d.depID = e.depID AND e.depID=3 ORDER BY d.depID; --和上面不等价,差别在于能够找到无对应员工的部门和有对应员工的部门,却找不到该部门无员工的部门。 SELECT d.depID,d.depName,e.empName,d.delflag FROM departments d, employees e WHERE d.depID = e.depID(+) AND (e.depID=3 or e.depID is NULL) ORDER BY d.depID; |
发表评论
-
关于Oracle 版本
2015-10-10 10:23 0第一部分是“Version Number",也就是产 ... -
了解Oracle数据库的版本号
2015-10-10 10:20 0Major Database Release ... -
PDF 资料
2013-03-13 15:45 0Java design pattern --Bob ... -
Oracle sys和system用户、sysdba 和sysoper系统权限、sysdba和dba角色的区别 [转]
2013-03-12 14:17 1025sys和system用户区别 1)最重要的区别,存储的数 ... -
Oracle 用户、对象权限、系统权限 [转]
2013-03-12 14:12 0--============================ ... -
表分区分割脚本
2013-03-12 13:10 738表分区分割脚本 -
Oracle Session 视图[转]
2013-03-06 10:17 977v$session v$session_wait v$ ... -
10G中查看历史执行计划信息[转]
2013-03-01 11:02 3764现在总结下10G的,使用的是AWR报告中的信息,主要是查询 ... -
Oracle 表连接 [转]
2013-02-26 15:20 649Oracle 表之间的连接分为三种: 1. 内连接(自然 ... -
oracle的number类型精度、刻度范围 [转]
2013-02-26 15:06 5254一、 oracle 的 number 类型精度、刻度范围 ... -
Oracle Tablespace
2012-11-29 16:53 01. 几个重要的TableSpace SYSTE ... -
[转]Optimizing SPLIT PARTITION and SPLIT SUBPARTITION Operations
2012-11-27 15:11 913Optimizing SPLIT PARTITION and ... -
Oracle splitting partitions简单小结[转]
2012-11-27 15:12 998http://www.oracleonlinux.cn/201 ... -
When the explanation doesn't sound quite right
2012-10-30 13:05 0When the explanatio ... -
oracle中join的用法 .
2012-10-10 11:43 0oracle中join的用法8i: create ... -
[转]关于ORACLE的锁表与解锁总结
2012-09-29 11:11 0总结1:Oracle的锁表与解锁 selects.userna ... -
not in/not exists 的 null 陷阱
2012-09-27 11:07 0[转]not in/not exists 的 nul ... -
Oracle Database Link Tutorials,Examples to create, use, manage and drop them[转]
2012-09-21 10:54 0Oracle Database Link TutorialsE ... -
Understanding Oracle QUERY PLAN
2012-01-06 11:28 1164Understanding Oracle QUERY PLAN ... -
Oracle AUTOTRACE Explained
2012-01-06 11:04 998Oracle AUTOTRACE Explained ...
相关推荐
LEFT JOIN(也称为LEFT OUTER JOIN)和RIGHT JOIN(也称为RIGHT OUTER JOIN)是两种特殊的JOIN类型,它们在处理不匹配的数据时有不同的行为。 LEFT JOIN的核心特点是保留左表(也就是在JOIN语句中先出现的表)的...
在Oracle数据库中,优化器是决定查询执行计划的关键组件,其目标是最小化资源消耗并最大化查询性能。Oracle提供了三种主要的优化器模式:基于规则(RULE)、基于成本(COST)以及选择性(CHOOSE)。 1. **基于规则...
至于标签“源码”和“工具”,这可能暗示在某些数据库管理系统(如MySQL、Oracle、SQL Server等)中实现JOIN操作的特定语法,或者可能涉及到使用某种查询工具(如SQL Developer、SSMS等)来编写和执行JOIN查询。...
在Oracle SQL中,Join主要分为几个类型,包括INNER JOIN、LEFT JOIN (LEFT OUTER JOIN)、RIGHT JOIN (RIGHT OUTER JOIN)以及FULL JOIN (FULL OUTER JOIN)。这些类型在Java编程中同样可以使用,通过SQL查询语句来实现...
在Oracle数据库系统中,外连接(Outer Join)是一种高级的SQL联接操作,它扩展了标准的内连接(Inner Join)概念,允许我们查询不匹配的数据。外连接分为三种类型:左外连接(Left Outer Join)、右外连接(Right ...
- **LEFT JOIN (或 LEFT OUTER JOIN)**:除了返回两个表中匹配的行外,还会返回左表中不匹配的所有行,并将右表的列设置为NULL。 - **RIGHT JOIN (或 RIGHT OUTER JOIN)**:除了返回两个表中匹配的行外,还会返回右...
本主题主要聚焦于Oracle中的两种特殊连接方式:左外连接(LEFT JOIN)和右外连接(RIGHT JOIN)。通过深入理解这两种连接类型,我们可以更好地进行数据融合,获取更全面的信息。 首先,让我们从基本概念出发。在SQL...
oracle中sql语句(+)符号代表连接 (+)在=前边为右连接 (+)在=后边为左连接 SELECT a.*, b.* from a(+) = b就是一个右连接,等同于select a.*, b.* ...LEFT JOIN 或LEFT OUTER JOIN 列出左表中的所有行,若左表中某行
本文将详细介绍Oracle中常见的几种表连接方式及其应用场景,包括内连接(Inner Join)、外连接(Outer Join)、左连接(Left Join)、右连接(Right Join)等,并通过具体的例子来帮助理解每种连接的特点与区别。...
外连接包括左外连接(LEFT OUTER JOIN)、右外连接(RIGHT OUTER JOIN)和全外连接(FULL OUTER JOIN),它们不仅包含相等连接的结果,还会包含那些在连接列上不匹配的记录。 - 左外连接:显示所有左表(`EMP`)的...
题目中讨论的是左外连接(Left Outer Join),其主要目的是从`EMPLOYEES`表中检索所有员工,即使他们对应的部门在`DEPARTMENTS`表中不存在。 - **左外连接(Left Outer Join)**:保留左侧表的所有行,并尝试在右侧...
- **Oracle:** Oracle支持多种类型的外部联接,如左外联接(LEFT OUTER JOIN)、右外联接(RIGHT OUTER JOIN)和全外联接(FULL OUTER JOIN)。 ```sql SELECT column1, column2 FROM table1 LEFT OUTER JOIN ...
在Oracle数据库系统中,外连接有三种主要形式:LEFT OUTER JOIN、RIGHT OUTER JOIN和FULL OUTER JOIN。这些连接方式在处理数据时,能够提供更全面的数据视图,特别是当需要展示所有数据,而不仅仅是存在相互关联的...
- **PostgreSQL**则使用`LEFT OUTER JOIN`来实现外连接,其语法更加直观,子查询也更为规范,要求子查询的结果集必须有别名。 ### 6. 子查询规范性 在**PostgreSQL**中,子查询的规范性更高,要求子查询的结果集...
本文将深入探讨Oracle中的左(外)、右(外)、全(外)以及内连接的语法,并将其与SQL标准进行比较,以帮助读者更好地理解和应用这些关键概念。 ### 左(外)连接(Left Outer Join) #### SQL标准语法 左(外)连接返回左...
Oracle 中的连接(Join)是一种强大的工具,用于将两个或多个表合并成一个结果集。在学习 Oracle 连接时,可能会感到困惑,因为有多种类型的连接,每种类型都有其特点和应用场景。下面我们将详细介绍 Oracle 中的左...
在Oracle数据库中,外连接主要分为三种类型:左外连接(Left Outer Join)、右外连接(Right Outer Join)以及全外连接(Full Outer Join)。 - **左外连接(Left Outer Join)**:返回左表中的所有记录,以及右表...