Oracle 高级子查询

Oracle中使用子查询可以大大的提升查询的效率,子查询也叫做嵌套查询,也就是一个select语句中嵌套了另外的一个或者多个select语句。刚开始接触子查询的时候是在where字句那使用的,对于查询有莫大的帮助。再接下来对Oracle的深入接触子查询时,慢慢的发现了子查询的其他用法,并不是只能在where子句中使用,子查询可以在整个查询语法中使用:
SELECT (子查询)
FROM (子查询)
WHERE (子查询)
GROUP BY 子句
HAVING (子查询)
ORDER BY 子句
下面就先简单的介绍一下:子查询在主查询之前一次执行完成,子查询的结果被主查询使用。使用子查询的注意事项:子查询要写在括号内,还有就是单行操作符对应单行子查询,多行操作符对应多行子查询,不然会报语法的错误。。。
当子查询在select字句中出现的时候可当作是一个伪列来使用,当子查询在from字句中出现的时候可当作是一个伪表来使用,在where和having字句中都是作为查询条件来筛选,在order by 中用子查询时就是作为个条件来排序了。
简单的子查询都是比较好理解,我在这就不说了,就说一些高级一点点的子查询吧!下面直接上例子
题目:查询学号为006或者学号为007的学生的score(成绩)和class(班级)相同的同学的Num(学号)
题目可能有点绕口啊,这个题目用了一张成绩表。
一般的子查询是这样的:
在这里插入图片描述
有木有觉得写的有点多啊,感觉就有点冗余,这时我们就可以用上比较高级一点的子查询啦:
在这里插入图片描述
这个查询进行了成对比较来查询,也就是把某个表中列名放在一起,后面在加上你所需要的条件,但要注意的是- 这些列要前后要一一对应,简化了查询的过程,可以节省不少的时间呢!
我们知道一般的子查询是先于主查询独立执行,返回明确结果供主查询使用,而且只查询一次就没了,感觉有一定的局限性。但下面这个就有点不同了,这个就是相关子查询:它在执行过程中需要用到主查询的相关结果,也就是子查询在主查询返回的结果集上执行(针对主查询的每一行结果,子查询都要执行一次)。子查询和主查询在执行过程中相互依赖。
例子:查询学生中成绩大于本班平均成绩的学生的信息
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值