Oracle 子集查询,Oracle子查询(单行、多行、关联子查询)、集合运算

1、单行子查询

查询工资比名字为ADAMS高的员工的名字和工资:

4e774b6958876015f9bcf6a49ebf2890.png

除了关联子查询以外,子查询都是先执行子查询再执行主查询。

36f2189266223f339bc4dc8711528385.png

2、在from后面使用子查询

4d47930574c4741ca0acd1dae607acdc.png

把子查询的查询的结果当作一个新的表。

3、sql优化

在子查询和多表查询都可以解决同一个问题的时候,尽量使用多表查询,因为子查询的方式需要访问数据库两次,查询效率更低。

4、多行子查询

(1)关键字in:

23351791412f9eb2700f634f541cb60a.png

(2)any(集合中的任意一个值)

341d96358db3ca3ef334a22e6d46eb7f.png

这里的大于any,即大于最小值。

(3)all(集合中的所有元素)

84a8572466bd31e424d24c6c53e51cba.png

这里大于all,即大于最大值。

5、rownum

查询全部的员工信息:

b914fa1bbdb53c1775d847da31040cb0.png

加上rownum属性后进行员工信息的查询:

d51f01c07208af0bb13d0436b7a7e62b.png

可以看出rownum属性是根据查询结果的先后顺序进行添加的。

d708e2fd1033baf14258df7d0ac17bcd.png

当按员工薪水进行员工信息的排序时,rownum属性依旧不变。

992849117e42fcf8ad84b7889b03455c.png

查询薪水最高的三个人的信息,第二行的select语句查询的数据是临时表。

6、关联子查询

f5958c8053ead960f69cf0753ad0a972.png

关联子查询中,外部查询返回的每一行数据,内部查询都要执行一次。上面的例子中,先取出emp表中的第一行数据,在内查询中查询该工作的平均工资,然后利用外查询,查询高于平均工资的员工信息。

7、UNION

(1)分别查询10号部门和20号部门的员工信息:

ea26fefacc1b69173dd9fbd38fe8576e.png

(2)使用集合运算的方式一次查询10号和20号部门的员工信息:

0e1f1ef880c8d4c4eeaa277b3294bbc6.png

(3)尽量不要使用UNION,因为查询效率会随着UNION使用的次数的增多(访问数据库的次数也会增多)而降低。

8、交集:INTERSECT

9、差集:MINUS

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值