嵌套查询-数据库


定义:将一个查询块嵌套在另一个查询块的WHERE子句或HAVING短语的条件中的查询
查询块:一个SELECT-FROM-WHERE语句
一些概念:外层查询/父查询,内层查询/子查询
小提示:子查询不能使用ORDER BY语句,ORDER BY语句只能对最终结果进行排序

select sno, Sname
from student
where sno in (select sno 
              from sc
              where Cno='2');

1  带有IN谓词的子查询 

子查询的查询条件不依赖于父查询,叫不相关子查询
子查询的查询条件依赖于父查询,叫相关子查询,整条查询语句叫相关嵌套查询
有些嵌套查询可以被连接查询替代,有些不能

2  带有比较运算符的子查询——子查询返回单值 

定义:查询结果是父查询与子查询用比较运算符连接的结果
当用户知道子查询结果为某个值时,可以用比较运算符

3  带有ANY(SOME)或ALL谓词的子查询——子查询返回多值 

/*语法
>ANY    大于子查询结果中的某个值
>ALL    大于子查询结果中的所有值
<ANY    小于子查询结果中的某个值
<ALL    小于子查询结果中的所有值
>=ANY    <=ANY    =ANY    !=ANY
>=ALL    <=ALL    =ALL    !=ALL
*/聚焦函数效率较高

4  带有EXISTS谓词的子查询(NOT EXISTS) 

不返回任何数据,只产生逻辑的真假
由EXISTS引出的子查询,目标列表达式通常用*,因为EXISTS的子查询只返回逻辑真假
一些EXISTS谓词的子查询不能被其他子查询等价替代,但所有带有IN、比较运算符、ANY、ALL的子查询都能用EXISTS谓词的子查询等价替代

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值