码迷,mamicode.com
首页 > 数据库 > 详细

oracle中 常用的 join on 相关和 集合运算的总结

时间:2017-09-18 18:56:20      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:比较   相关   运算   bsp   rac   ora   join   结果   strong   

sql常用联合查询的 join on 、 left join(左连接) 、 right join (右连接)、inner join (等值连接)以及常用的集合运算有:union、unionall、minus、intersect的效果和总结

首先接着用上一篇的book表和pbook表:
技术分享技术分享

首先把join on和inner join 放在一起:

select  * from   book a    join  ( select id,name,price from   pbook) b on   a.id=b.id;
select  * from   book a    inner join  ( select id,name,price from   pbook) b on   a.id=b.id;

技术分享技术分享

 相比较这结果一模一样,只返回两个表中联结字段id相等的行

接着我们看左、右连接比较:

select  * from   book a    left join  ( select id,name,price from   pbook) b on   a.id=b.id;
select  * from   book a    right join  ( select id,name,price from   pbook) b on   a.id=b.id;

技术分享技术分享

明显能看出,左连接以左表为主,左表全部显示,右表只显示关联的,其余为空,总行数是左表的行。右连接是以右表为主,显示右边所有行,左表关联的行显示,其余为空
下面 常用的集合运算的比较:

首先我们比较一下union 和union all 结果比较

select   * from  book      union  select id,name,price from   pbook;
select   * from  book      union all select id,name,price from   pbook;

技术分享技术分享

这里能够看出:union 和union all 把相同列合并了,union对合并的数据去掉了重复行并且进行了排序。而union all 则是把2个表合起来,没有排序或者去重。

提示:1.表面上看union对数据进行排序,但是不能保证排序一定正确。(在oralce10之前是排序去重,之后是Hash UNIQUE运算去重,而它只比较散列值不进行排序)

           2.当数据量很大时,速率上来讲,union all 会比union 快很多。 

下一组比较:minus,intersect

select   * from  book      minus select id,name,price from   pbook;
select   * from  book  intersect   (select id,name,price from   pbook)

技术分享技术分享

很明显:minus是把2个表冲突数据提出来,而intersect是把2个表的相同数据提出来

 

oracle中 常用的 join on 相关和 集合运算的总结

标签:比较   相关   运算   bsp   rac   ora   join   结果   strong   

原文地址:http://www.cnblogs.com/mobeisanghai/p/7544544.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!