7.1. 概述

  • 从数据库中检索数据的过程或命令叫做查询 。在 SQL 里SELECT命令用于指定查询。 SELECT命令的一般语法是:
    [WITH with_queries] SELECT select_list FROM table_expression [sort_specification]
    

下面几个小节描述选择列表、表表达式和排序声明的细节。WITH查询等高级特性将在最后讨论。

  • 一个简单类型的查询的形式:
    SELECT * FROM table1;
    

假设有一个表叫做table1,这条命令将table1中检索所有行和所有用户定义的列(检索的方法取决于客户端应用。例如,psql程序将在屏幕上显示一个 ASCII 形式的表格, 而客户端库将提供函数来从检索结果中抽取单个值)。 选择列表声明*意味着所有表表达式提供的列。 一个选择列表也可以选择可用列的一个子集或者在使用它们之前对列进行计算。

  • 例如,如果table1有叫做a、b和c的列(可能还有其他),那么你可以用下面的查询:
    SELECT a, b + c FROM table1;
    
  • (假设b和c都是数字数据类型)。 参阅 7.3. 选择列表 获取更多细节。
  • FROM table1是一种非常简单的表表达式:它只读取了一个表。通常,表表达式可以是基本表、连接和子查询组成的复杂结构。 但你也可以省略整个表表达式而把SELECT命令当做一个计算器:
    SELECT 3 * 4;
    
  • 如果选择列表里的表达式返回变化的结果,那么这就更有用了。例如,你可以用这种方法调用函数:
    SELECT random();
    
下一节:表表达式计算一个表。该表表达式包含一个FROM子句,该子句后面可以根据需要选用WHERE、GROUP BY和HAVING子句。最简单的表表达式只是引用磁盘上的一个表,一个所谓的基本表,但是我们可以用更复杂的表表达式以多种方法修改或组合基本表。

表表达式里可选的WHERE、GROUP BY和HAVING子句指定一系列对源自FROM子句的表的转换操作。所有这些转换最后生成一个虚拟表,它提供行传递给选择列表计算查询的输出行。