zoukankan      html  css  js  c++  java
  • Oracle连接查询语句

    一、内连接和外连接

    内连接用于返回满足连接条件的记录;而外连接则是内连接的扩展,它不仅会满足连接条件的记录,而且还会返回不满足连接条件的记录,语法如下:

    Oracle代码
    select table1.column,table2.column from table1 [inner|left|right|full]join table2 on table1.column=table2.column;

    inner join表示内连接、left join表示左外连接、right join表示右外连接、full join表示全连接;on用于指定连接条件。
    注意:如果使用form内、外连接,则必须使用on操作符指定连接条件;如果使用(+)操作符连接,则必须使用where指定连接条件。

    1、内连接
    内连接查询返回满足条件的所有记录,默认情况下没有指定任何连接则为内连接,例如:
    Oracle代码
    select t1.name,t2.name from cip_temps t1 inner join cip_tmp t2 on t1.ID=t2.id;

    2、左外连接
    左外连接查询不仅返回满足条件的所有记录,而且还会返回不满足连接条件的连接操作符左边表的其他行,例如:
    Oracle代码
    select t1.name,t2.name from cip_temps t1 left join cip_tmp t2 on t1.ID=t2.id;

    3、右外连接
    右外连接查询不仅返回满足调价的所有记录,而且还会返回不满足连接条件的连接操作符右边表的其他行,例如:
    Oracle代码
    select t1.name,t2.name from cip_temps t1 right join cip_tmp t2 on t1.ID=t2.id;

    4、全连接
    全连接查询不仅返回满足调价的所有记录,而且还会返回不满足连接条件的其他行,例如:
    Oracle代码
    select t1.name,t2.name from cip_temps t1 full join cip_tmp t2 on t1.ID=t2.id;

    5、(+)操作符
    在oracle9i之前,当执行外连接时,都是使用连接操作符(+)来完成的,尽管可以使用操作符(+)执行外连接操作,但是oracle9i开始oracle建议使用outer join执行外连接,使用(+)操作符执行外连接的语法如下:
    Oracle代码
    select table1.column,table2.column from table1,table2 where table1.column(+)=table2.column;


    注意:
    当使用(+)操作符执行外连接时,应当将该操作符放在显示较少行(完全满足连接条件行)一端。
    (+)操作符只能出现在where子句中,并且不能与outer join语法同时使用。
    当使用(+)操作符执行外连接时,如果在where语句中包含多个条件,则必须在所有的条件中都包含(+)操作符。
    (+)操作符只能适用于列,而不能适用于表达式。
    (+)操作符不能与or和in操作符一起使用。
    (+)操作符只能用于左外连接和右外连接,不能用于实现完全连接。

    (1)、使用(+)操作符执行左外连接
    当使用左外连接时,不仅会返回满足连接条件的所有行,而且还会返回不满足连接条件的左边边的其他行。因为(+)操作符要放到行数较少的一端,所以在where子句中应当将该操作符放到右边表的一端,示例如下:
    Oracle代码
    select t1.name,t2.name from cip_temps t1,cip_tmp t2 where t1.ID=t2.id(+);

    (2)、使用(+)操作符执行右外连接
    当使用右外连接时,不仅会返回满足连接条件的所有行,而且还会返回不满足连接条件的右边边的其他行。因为(+)操作符要放到行数较少的一端,所以在where子句中应当将该操作符放到左边表的一端,示例如下:
    Oracle代码
    select t1.name,t2.name from cip_temps t1,cip_tmp t2 where t1.ID(+)=t2.id;

  • 相关阅读:
    Codeforces 17.E Palisection
    poj4052 Hrinity
    bzoj2565 最长双回文串
    Java基础知识强化之集合框架笔记43:Set集合之TreeSet存储Integer类型的元素并遍历
    Java基础知识强化之集合框架笔记42:Set集合之LinkedHashSet的概述和使用
    Java基础知识强化之集合框架笔记41:Set集合之HashSet存储自定义对象并遍历练习
    Java基础知识强化之集合框架笔记40:Set集合之HashSet存储自定义对象并遍历
    TCP/IP协议原理与应用笔记13:底层网络技术之传输介质
    Java基础知识强化之集合框架笔记39:Set集合之HashSet存储字符串并遍历
    Java基础知识强化之集合框架笔记38:Set集合之Set集合概述和特点
  • 原文地址:https://www.cnblogs.com/wang150601/p/6377062.html
Copyright © 2011-2022 走看看