oracle中的集合操作符

oracle中有一类操作符是对集合进行操作的,我们称之为集合操作符(set operator),我们在前面已经分别介绍了每个集合操作符,这里简单总结一下,oracle中的集合操作符号主要有:

  1. union(all) 是用来将多个select语句的结果集合进行合并处理。其中union会压缩各个结果集中的重复数据,而union all则不会。
  2. intersect 是用来求两个集合的交集
  3. minus是用来从一个结果集中去除另一个集合中包含的部分

对与各个集合操作符, 需要注意的地方的如下:

  1. 除了union all之外的所有集合操作符号都会进行默认排序和去除重复行,这需要占用一定的资源,只有union all回将数据以原始的方式呈现出来。所以在对oracle中进行性能优化时尽量使用union all 而不是 union。
  2. 对于每一个查询中,必须要具有相同的列的数目和列的类型,但没有必要使列名相同。如果类型不一样,可以使用类型转换函数来转换。注意这里oracle不会进行隐式转换,必须进行手动转换,如果列的个数不一样,可以使用替代列的方式来充当。

    例如:
    select ename,sal from emp where sal > 2000
    union all
    select to_char(empno),0 from emp where sal >3500;
    这里我们使用了类型转换函数来to_char将empno转由数值型换为字符型,并给出了一个填充列0,来凑足和前一个查询的相同的列数。

  3. 可以使用order by 来进行手动的排序,但只能出现在最后一个查询的后面。而且order by 使用到的列只能使用第一个查询的列名或者别名,或者使用列的计数器。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzhdim

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值