zoukankan      html  css  js  c++  java
  • Oracle join连接的使用

    Oracle 中的JOIN

    1、概述

    1.1、所有的join连接,都可以加上类似where a.id='1000'的条件,达到同样的效果。

    1.2、除了cross join不可以加on外,其它join连接都必须加上on关键字,后都可加where条件。

    1.3、虽然都可以加where条件,但是他们只在标准连接的结果集上查找where条件。比如左外连接的结果没有class的三班,所以如果加 where class.id='C003'虽然在表中有,但在左连接结果集中没有,所以查询后,是没有记录的。

    2、实例,标准的join连接,(不加where条件的)

    2.1、设有表如下:

    学生表

          

    班级表,对应学生表中的classid

    2.2、自连接:join ,inner join

    1 --自连接  :只返回两张表连接列的匹配项。
    2 --以下三种查询结果一样。
    3 select * from student s inner join class c on s.classid=c.id;
    4 select * from student s join class c on s.classid=c.id;
    5 select * from student s,class c where s.classid=c.id;

    自连接结果:

    2.3、笛卡儿乘积:cross join

    1 --笛卡儿乘积连接 :即不加任何条件,达到 M*N 的结果集。
    2 --以下两种查询结果一样。
    3 select * from student s cross join class c;
    4 select * from student,class;

    笛卡尔结果:

    注意:如果cross join加上where s.classid=c.id条件,会产生跟自连接一样的结果:

    1 --加上条件,产生跟自连接一样的结果。
    2 select * from student s cross join class c where s.classid=c.id;

    自连接结果集的cross join连接结果

    2.3、左外连接:left join 

    1 --左连接 :列出左边表全部的,及右边表符合条件的,不符合条件的以空值代替。
    2 --在(+)计算时,哪个带(+)哪个需要条件符合的,另一个全部的。即放左即右连接,放右即左连接。
    3 --以下结果集相同。
    4 select * from student s left join class c on s.classid=c.id;
    5 select * from student s,class c where s.classid=c.id(+);

    左连接结果:

    2.4、右外连接:right join

    1 --右外连接 :与左连接一样,列出右边表全部的,及左边表符合条件的,不符合条件
    2 --的用 空值 替代。
    3 --(+)一样,它的位置与连接相反。
    4 select * from student s right join class c on s.classid=c.id;
    5 select * from student s,class c where s.classid(+)=c.id;

    右连接结果

    2.5、全连接:full join

    1 --全连接 :产生M+N的结果集,列出两表全部的,不符合条件的,以空值代替。
    2 select * from student s full join class c on s.classid=c.id;

    全连接结果集

     转自http://www.cnblogs.com/lovemoon714/archive/2012/03/02/2376782.html

  • 相关阅读:
    现代软件工程 第一章 概论 第4题——邓琨
    现代软件工程 第一章 概论 第9题——邓琨
    现代软件工程 第一章 概论 第7题——张星星
    现代软件工程 第一章 概论 第5题——韩婧
    hdu 5821 Ball 贪心(多校)
    hdu 1074 Doing Homework 状压dp
    hdu 1074 Doing Homework 状压dp
    hdu 1069 Monkey and Banana LIS变形
    最长上升子序列的初步学习
    hdu 1024 Max Sum Plus Plus(m段最大子列和)
  • 原文地址:https://www.cnblogs.com/KQNLL/p/8910683.html
Copyright © 2011-2022 走看看