Chapter 7. 查询

Table of Contents
7.1. 概述
7.2. 表表达式
7.2.1. FROM 子句
7.2.2. WHERE 子句
7.2.3. GROUP BYHAVING 子句
7.3. 选择列表
7.3.1. 选择列表项
7.3.2. 字段标签
7.3.3. DISTINCT
7.4. 组合查询
7.5. 行排序
7.6. LIMITOFFSET

前面的章节解释了如何创建表,如何用数据填充它们, 以及如何操作那些数据。现在我们终于可以讨论如何从数据库中检索数据了。

7.1. 概述

从数据库中检索数据的过程或命令叫做查询。 在 SQL 里 SELECT 命令用于声明查询。 SELECT 命令的通用语法是

SELECT select_list FROM table_expression [sort_specification]

下面几节描述选择列表,表表达式,和排序声明的细节。

简单的查询的形式如下

SELECT * FROM table1;

假设有一个表叫做table1,这条命令将从table1中检索所有行和所有字段。 (检索的方法取决于客户端应用。比如,psql 程序将在屏幕上显示一个 ASCII 艺术构成的表格, 客户端库将提供检索独立行和字段的函数。) 选择列表声明 * 意味着所有表表达式提供的字段。 一个选择列表也可以选择可用字段的一个子集或者在检索它们之前对字段进行计算; 比如,如果table1有叫做ab,和c的字段(可能还有其他),那么你可以用下面的查询:

SELECT a, b + c FROM table1;

(假设bc都是数字数据类型)。 参阅 Section 7.3 获取更多细节。

FROM table1 是一种非常简单的表表达式:它只读取了一个表。 通常,表表达式可以是基本表,连接,和子查询的复杂构造。 但你也可以省略表表达式记录而用SELECT命令当做一个计算器:

SELECT 3 * 4;

如果选择列表里的表达式返回变化的结果,那么这个东西就更有用了。 比如,你可以用这个方法调用函数:

SELECT random();