要从表中检索数据,就需要对该表进行*查询*。使用SQL SELECT
语句来完成此操作。该语句分为一个选择列表(列出要返回的列)、一个表列表(列出要从中检索数据的表)和一个可选的限定条件(指定任何限制条件)。例如,要检索 weather
表的所有行,可以键入
SELECT * FROM weather;
这里的 *
是“所有列”的简写。 [2] 因此,使用以下语句也会得到相同的结果:
SELECT city, temp_lo, temp_hi, prcp, date FROM weather;
输出应为:
city | temp_lo | temp_hi | prcp | date ---------------+---------+---------+------+------------ San Francisco | 46 | 50 | 0.25 | 1994-11-27 San Francisco | 43 | 57 | 0 | 1994-11-29 Hayward | 37 | 54 | | 1994-11-29 (3 rows)
您可以在选择列表中使用表达式,而不仅仅是简单的列引用。例如,您可以执行以下操作:
SELECT city, (temp_hi+temp_lo)/2 AS temp_avg, date FROM weather;
这应该会给出:
city | temp_avg | date ---------------+----------+------------ San Francisco | 48 | 1994-11-27 San Francisco | 50 | 1994-11-29 Hayward | 45 | 1994-11-29 (3 rows)
请注意,AS
子句用于重命名输出列。(AS
子句是可选的。)
可以通过添加 WHERE
子句来*限定*查询,该子句指定所需的行。 WHERE
子句包含一个布尔(真值)表达式,只有布尔表达式为真的行才会被返回。查询中的通常布尔运算符(AND
、OR
和 NOT
)是允许的。例如,以下查询检索在下雨天旧金山的天气信息:
SELECT * FROM weather WHERE city = 'San Francisco' AND prcp > 0.0;
结果
city | temp_lo | temp_hi | prcp | date ---------------+---------+---------+------+------------ San Francisco | 46 | 50 | 0.25 | 1994-11-27 (1 row)
SELECT * FROM weather ORDER BY city;
city | temp_lo | temp_hi | prcp | date ---------------+---------+---------+------+------------ Hayward | 37 | 54 | | 1994-11-29 San Francisco | 43 | 57 | 0 | 1994-11-29 San Francisco | 46 | 50 | 0.25 | 1994-11-27
在此示例中,排序顺序未完全指定,因此您可能会得到旧金山的行,但顺序可能不同。但如果您执行以下操作,则始终会得到上述结果:
SELECT * FROM weather ORDER BY city, temp_lo;
SELECT DISTINCT city FROM weather;
city --------------- Hayward San Francisco (2 rows)
同样,结果行的顺序可能会有所不同。您可以通过同时使用 DISTINCT
和 ORDER BY
来确保结果的一致性: [3]
SELECT DISTINCT city FROM weather ORDER BY city;
如果您在文档中看到任何不正确、与您对特定功能的体验不符或需要进一步说明的内容,请使用 此表格 报告文档问题。