天天看点

《SQL初学者指南(第2版)》——2.6 预览完整SELECT语句

本节书摘来自异步社区出版社《sql初学者指南(第2版)》一书中的第2章,第2.6节,作者:【美】larry rockoff,更多章节内容可以访问云栖社区“异步社区”公众号查看。

本书大部分内容都与本章所介绍的select语句相关。从第3章到第15章,我们将扩展这条select语句,不断引入新的特性,直到你了解和理解select的全部潜力和功能。这里,我们只是简单介绍了select语句如下的这个部分:

为了不留悬念,我们先来预览一下完整的select语句,并且简单介绍一下其各个不同的组成部分。包含了全部子句的、完整的select语句如下所示:

我们已经介绍了select子句和from子句。让我们在这些子句基础上来进行一些扩展,介绍一下其他子句。select子句开始了整条语句,并且列出了将要显示的列。在后面的章节中,你会看到,columnlist不仅可以包含指定的表中的实际的列,而且可以包含计算的列,而这些计算的列通常由表中的一个或多个列派生而来。columnlist中的列还可以包含函数,而函数代表着添加常用方法以转换数据的一种特殊方式。

from子句指定了将要从中提取数据的数据源。大多数情况下,这些数据源是表。在后面的章节中,我们将了解到,这些数据源也可以是其他的select语句,它们表示的是数据的一种虚拟视图(view)。在本章中,tablelist是一个单个的表。在后边的章节中,我们将会介绍sql的一个关键特性,就是通过join关键字把多个表组合到一条select语句中。因此,你将会看到很多这样的例子:其中from子句中的tablelist是由多行语句组成的,这表示将这些表连接了起来。

where子句用来表示查询逻辑。我们使用该子句来确切地指定要获取哪些数据行。where子句可以使用基本的数学运算符,如等号(=)和大于号(>),以及布尔运算符,如or和and。

group by子句在汇总数据方面扮演了关键的角色。通过把数据组织到不同的组中,分析师不仅可以组织数据,而且可以使用诸如求和或者计数等不同的统计方法,来汇总每一个组中的数据。

当对数据分组的时候,选择标准变得多少有点复杂了。必然要搞清楚的一个问题是,这个选择标准是应用于单个的行,还是应用于整个组。例如,当按照所在的州来对客户分组的时候,某人可能只有在一个州之中所有客户的购买总量超过一定的数量时,才想要查看这个州中的单个客户的数据行。这个时候,having子句就派上用场了。having子句用于为整个一组的数据指定选择逻辑。

最后,使用order by子句按照升序或降序来排序数据。在后边章节中,我们会介绍到,如果select语句中的各种子句都存在的话,它们的顺序必须和前面给出的select语句一般格式中的顺序相同。例如,如果一条select语句中有一个group by子句,它必须出现在where子句之后,而位于having子句之前。

除了上述的子句,我们还会介绍编写select语句的一些其他方法,包括子查询和集合逻辑。子查询是把一条完整的select语句插入到另一条select语句中的一种方法,对于特定类型的选取逻辑往往很有用。集合逻辑是将多条查询并列地组合成一条单个的查询的一种方法。

继续阅读