子查询概念及分类

子查询是指在一个查询语句中,还包含了多个其它的查询。其中,包含了其它查询的查询叫“父查询”,被包含的查询叫做“子查询”。

使用子查询有什么好处呢?先看一个小例子。
例如,从下面的成绩表中查询成绩最好的记录:
学号 科目 成绩
100   语文 90
101   数学 80
102   语文 90

不管用什么技术,思路是相同的。
先找出最高分:
select max(成绩) from 成绩表
返回:
90
然后再找出分数等于这个最高分的记录:
select * from 成绩表 where 成绩=90
返回:
学号 科目 成绩
100   语文 90
102   语文 90

但是如果用子查询,则只需要写一句,这显然要方便一些:
select * from 成绩表
where 成绩=(select max(成绩) from 成绩表)
返回结果同上。

其中,
主查询是:select * from 成绩表 where 成绩 = ?
子查询是:select max(成绩) from 成绩表

而理解子查询的关键就是理解多个查询运行的先后顺序。
本例显然是先执行括号中的子查询,再执行外部父查询。
先执行:select max(成绩) from 成绩表 返回 90
再执行:select * from 成绩表 where 成绩= ( 90 )
返回:
学号 科目 成绩
100   语文 90
102   语文 90

同时,从上面的例子也可以看出,使用子查询很方便、很强大。当然,这只是使用子查询其中的一个优点而已。

子查询我认为是数据库基础中是最令人头晕的章节。所以下面将根据由易到难的顺序列出各项知识点,然后再逐项进行讲解。
知识点:
1、子查询的分类:
从位置上分,有:计算列子查询,嵌套子查询,条件子查询。
从逻辑上分,有:相关子查询,非相关查询。
另外,两个查询还能进行集合运算(如并集),叫:组合查询。
2、先学习容易理解的子查询:非相关子查询、嵌套子查询和条件子查询。
3、再学习比较难理解的子查询:相关子查询,重点是理解相关子查询的执行流程,使用场合,以及性能优化的方法。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值