zoukankan      html  css  js  c++  java
  • Oracle 内连接和外连接

    内连接用于返回满足连接条件的记录;而外连接则是内连接的扩展,它不仅会返回满足连接条件的所有记录,而且还会返回满足不满足连接条件的记录!从Oracle9i开始,可以在From 子句中指定连接语法。语法如下:

     SELECT table.column,table.column2 FROM table1 [INNER|LEFT|RIGHT|FULL] JOIN table2 ON table.column1=table.column2;

    INNER JOIN表示内连接,LEFT JOIN 表示左外连接,RIGHT JOIN表示右外连接,FULL JOIN表示完全外连接;ON 子句用于指定连接条件!

    下面我们来看下这些所谓的连接吧!

    1.内连接

       内连接用于返回满足连接条件的所有记录。默认情况下,在执行连接查询时如果没有指定任何连接操作符,那么这些连接查询属于内连接。 下面以显示部门10的部门名及其雇员名为例,说明使用内连接的方法。示例如下:

    SQL> select a.dname ,b.ename from dept a ,emp b where a.deptno=b.deptno and a.deptno=10;
     
    DNAME          ENAME
    -------------- ----------
    ACCOUNTING     CLARK
    ACCOUNTING     KING
    ACCOUNTING     MILLER

    工作中用这种连接查询很多,其实我一直不知道这就是内连接,在我的印象里面,用INNER JOIN连接语法的才是内连接,想想都可笑啊!

    所以在执行连接查询时,通过在FROM子句中指定INNER JOIN选项,也可以指定内连接,这是一种显示表示内连接的方式。示例如下:

    SQL> select a.dname,b.ename from dept a inner join emp b on a.deptno=b.deptno and a.deptno=10;
     
    DNAME          ENAME
    -------------- ----------
    ACCOUNTING     CLARK
    ACCOUNTING     KING
    ACCOUNTING     MILLER


     还有一种方式的内连接,不过我到现在也不怎么用到,这是从Oracle 9i开始执行的,如果主表的主键列和从表的外部键列名称相同,那么还可以使用NATURAL JOIN关键字自动执行内连接操作,示例如下:

    SQL> select dname ,ename from dept natural join emp;
     
    DNAME          ENAME
    -------------- ----------
    RESEARCH       SMITH
    SALES          ALLEN
    SALES          WARD
    RESEARCH       JONES
    SALES          MARTIN
    SALES          BLAKE
    ACCOUNTING     CLARK
    RESEARCH       SCOTT
    ACCOUNTING     KING
    SALES          TURNER
    RESEARCH       ADAMS
    SALES          JAMES
    RESEARCH       FORD
    ACCOUNTING     MILLER
     
    14 rows selected


    2.左外连接

    左外连接是通过指定 LEFT [OUTER] JOIN选项来实现的.当使用左外连接时,不仅会返回满足连接条件的所有记录,而且还会返回不满足连接条件的连接操作符左边表的其他行。下面以显示部门10的部门名、雇员名,以及其他部门名为例:

    SQL> select a.dname,b.ename from dept a left join emp b on a.deptno=b.deptno and a.deptno=10;
     
    DNAME          ENAME
    -------------- ----------
    SALES          
    ACCOUNTING     CLARK
    ACCOUNTING     KING
    ACCOUNTING     MILLER
    RESEARCH       
    SALES          
    OPERATIONS  

    右外连接、全外连接和左外连接很相似,就不多说了!
     

  • 相关阅读:
    第九十一天 how can I 坚持 技术-永远的技术
    第九十天 how can I 坚持
    Java控制台中输入中文输出乱码的解决办法
    【体系结构】转移预测器设计与比较1
    Ubuntu 13.04 用Sublime Text 2 编译运行 JAVA
    HDU 4605 Magic Ball Game (在线主席树|| 离线 线段树)
    个人重构机房收费系统之报表
    快速排序的递归和非递归实现
    HDU 3721 Building Roads (2010 Asia Tianjin Regional Contest)
    体验决定深度,知识决定广度。你的人生是什么呢? 操蛋和扯蛋没必要纠结 唯有继续
  • 原文地址:https://www.cnblogs.com/wuyida/p/6300411.html
Copyright © 2011-2022 走看看