从数据库中检索提取数据的操作过程或对应命令被称为查询(query)。在 SQL 语言中,通过 SELECT 命令声明查询。其通用语法骨架为:
[WITHwith_queries] SELECTselect_listFROMtable_expression[sort_specification]
后续各节将逐一深入说明选择列表(select list)、表表达式(table expression)以及排序规范(sort specification)。WITH 公用表表达式由于属于进阶高级特性,放在本章末尾专门讨论。
最简单的基础查询形式如下:
SELECT * FROM table1;
假设数据库中已创建名为 table1 的表,该命令将检索并返回 table1 中的全部数据行以及全部用户自定义字段列(结果集具体的呈现格式取决于所用的客户端应用程序:例如命令行工具 psql 会在终端屏幕上绘制 ASCII 格式的对齐表格,而编程语言驱动库则提供专有函数供遍历提取各个单元格数值)。选择列表中的星号 * 代表直接输出表表达式所能提供的全部字段。选择列表也可以仅筛选目标字段的子集,或在列值之上执行数学运算:
SELECT a, b + c FROM table1;
详见 Section 7.3。
FROM table1 属于最简略形态的表表达式,仅扫描单张物理表。在实际工程中,表表达式可以是极其复杂的基表、连接(JOIN)与子查询的复合构造。在计算纯数学常量时甚至可以彻底省略 FROM 子句,直接将 SELECT 当作计算器使用:
SELECT 3 * 4; SELECT random();