首页 > 数据库技术 > 详细

Oracle连接<二>

时间:2015-08-17 23:52:31      阅读:498      评论:0      收藏:0      [点我收藏+]

      3. 外连接

      外连接是指在内连接的基础上,将某个连接表中不符合连接条件的记录加入结果集。根据结果集中所包含不符合连接条件的记录来源的不同,外连接分为左外连接、右外连接、全外连接3中。

    (1)左外连接

     左外连接是指在内连接的基础上,将连接操作符左侧表中不符合连接条件的记录加入结果集中,与之对应的连接操作符右侧列表用NULL填充。

    在Oracle数据库,左外连接的表示方式有两种。

  1. 标准SQL语句的连接方式

    SELECT table1.column,table2.column[,...]

    FROM table1 LEFT JOIN table2[,]

    ON table1.column <operator> table2.column[,...];

  2. Oracle扩展的连接方式

    SELECT table1.column,table2.column[,...]

    FROM table1,table2[,...]

       ON table1.column<operator> table2.column(+)[...];

例如,查询10号部门的部门名、员工号、员工名和所有其他部门的名称,语句为

SQL>SELECT dname,empno,ename FROM dept  LEFT JOIN  emp

        ON dept.deptno=emp.deptno AND dept.deptno=10;

SQL>SELECT dname,empno,ename FROM dept,emp

        WHERE dept.deptno=emp.deptno(+) AND emp.deptno(+)=10;

      (2)右外连接

      右外连接是指在内连接的基础上,将连接操作符右侧表中不符合连接条件的记录加入结果集中,与之对应的连接操作符左侧列表用NULL填充。

  1. 标准SQL语句的连接方式:

    SELECT table1.column, table2.column[,...]

    FROM table1, RIGHT JOIN table2 [,...]

    ON table1.column<operator> table2.column[...];

  2. Oracle扩展的连接方式:

    SELECT table1.column, table2.column[,...]

    FROM  table1, table2[,...]

    WHERE  table1.column(+)<operator> table2.column[...];

    例如,查询20号部门的部门名称及其员工号、员工名,和所有其他部门的员工名、员工号,语句为

SQL>SELECT empno,ename,dname FROM dept RIGHT JOIN emp 

        ON dept.deptno = emp.deptno AND dept.deptno=20;

SQL>SELECT empno,ename,dname FROM dept, emp

        WHERE dept.deptno(+) =emp.deptno AND dept.deptno(+) =20;

        (3)全外连接

        全外连接是指在内连接的基础上,将连接操作符两侧表中不符合连接条件的记录加入结果集中。

        在Oracle数据库中,全外连接的表示方式为

        SELECT table1.column,table2.column[,...]

        FROM table1 FULL JOIN table2[,...]

        ON table1.column1 = table2.column2[...];

        例如,查询所有的部门名和员工名,语句为:

SQL>SELECT dname,ename FROM emp FULL JOIN dept ON emp.deptno = dept.deptno;

注意:(+)操作符仅适用于左外连接和右外连接,而且如果WHERE 子句中包含多个条件,则必须在所有条件中包含(+)操作符。




Oracle连接<二>

原文:http://my.oschina.net/douxn/blog/493696

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!