SQL基础教程(第2版)第5章 复杂查询:5-2 子查询
Posted 绍耕
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL基础教程(第2版)第5章 复杂查询:5-2 子查询相关的知识,希望对你有一定的参考价值。
第5章 复杂查询:5-2 子查询
● 一言以蔽之,子查询就是一次性视图( SELECT语句)。与视图不同,子查询在SELECT语句执行完毕之后就会消失。
● 由于子查询需要命名,因此需要根据处理内容来指定恰当的名称。
● 标量子查询就是只能返回一行一列的子查询。
■ 子查询和视图
前一节我们学习了视图这个非常方便的工具,本节将学习以视图为基础的子查询。 子查询的特点概括起来就是一张一次性视图。
我们先来复习一下视图的概念,视图并不是用来保存数据的,而是通过保存读取数据的 SELECT 语句的方法来为用户提供便利。
反之,子查询就是将用来定义视图的SELECT语句直接用于FROM子句当中。
能够实现同样功能的子查询如代码清单 5-9 所示。
■ 增加子查询的层数
■ 子查询的名称
原则上子查询必须设定名称,因此请大家尽量从处理内容的角度出发为子查询设定恰当的名称。
■ 标量子查询
标量子查询则有一个特殊的限制,那就是必须而且只能返回 1 行 1 列的结果,也就是返回表中某一行的某一列的值。
■ 在WHERE子句中使用标量子查询
在 4-2 节中,我们练习了通过各种各样的条件从 Product(商品)表中读取数据。大家有没有想过通过下面这样的条件查询数据呢?
“查询出销售单价高于平均销售单价的商品。”
这样计算出的平均单价大约就是 2100 日元。不难发现,代码清单 5-11 中的 SELECT 语句的查询结果是单一的值(2097.5)。因此,我们可以直接将这个结果用到之前失败的查询之中。正确的SQL如代码清单5-12所示。
■ 标量子查询的书写位置
标量子查询的书写位置并不仅仅局限于 WHERE 子句中,通常任何可以使用单一值的位置都可以使用。
几乎所有的地方都可以使用。
■ 使用标量子查询时的注意事项
最后我们来介绍一下使用标量子查询时的注意事项,那就是该子查询
绝对不能返回多行结果。也就是说,如果子查询返回了多行结果,那么
它就不再是标量子查询,而仅仅是一个普通的子查询了。
以上是关于SQL基础教程(第2版)第5章 复杂查询:5-2 子查询的主要内容,如果未能解决你的问题,请参考以下文章
SQL基础教程(第2版)第5章 复杂查询:5-3 关联子查询
SQL基础教程(第2版)第2章 查询基础:2-2 算数运算符和比较运算符
SQL基础教程(第2版)第3章 聚合与排序:3-4 对查询结果进行排序