学习笔记 | Ch11 使用子查询 subquery

第11课 使用子查询

  • 这一课学习了什么是子查询,如何使用它们。
  • 子查询常用于WHERE子句的IN操作符中,以及用来填充计算列。
11.1 子查询 subquery
  • 将一个查询块嵌套在另一查询块的where子句或from子句的查询称为一个子查询
  • 一个select-from-where语句称为一个查询块
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
11.2 利用子查询进行过滤
  • SELECT语句中,子查询总是从内向外处理。

  • 格式化SQL:把子查询分解为多行并进行适当的缩进,能极大简化子查询的使用。

  • 对于能嵌套的子查询的数目没有限制,不过在实际使用时由于性能的限制,不能嵌套太多的子查询。

  • 只能是单列作为子查询的SELECT语句只能查询单个列。企图检索多个列将返回错误。

子查询类别:
  • 标量子查询:返回单一值的标量,最简单的形式。
  • 列子查询:返回的结果集是N行一列。
  • 行子查询:返回的结果集是一行N列。
  • 表子查询:返回的结果集是N行N列。
子查询前的关键字:

=
Any、All
In、Not In
Exist、Not Exist
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

11.3 作为计算字段使用子查询
  • 用一个句点分割表名和列名,在有可能混淆列名时必须使用这种语法。
  • 完全限定列名:有时候,由于出现冲突列名而导致的歧义性,会引起DBMS抛出错误信息。如果在SELECT语句中操作多个表,就应使用完全限定列名来避免歧义。
优点
  • 逻辑清晰
  • 组织灵活
不足
  • 要创建临时表,撤销临时表,额外开销。
  • 数据量大时效率受影响。
子查询 -> 联表查询
参考资料
  • 《SQL必知必会》第11课
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值