多语言展示
当前在线:1122今日阅读:162今日分享:23

PostgreSQL 查询一个表

要从一个表中检索数据就是查询这个表。 SQL 的 SELECT 就是做这个用途的。 该语句分为选择列表(列出要返回的字段部分),表列表(列出从中检索数据的表的部分), 以及可选的条件(声明任意限制的部分)。比如,要检索表 weather 的所有行,键入:SELECT * FROM weather; 这里 * 是'所有字段' 的缩写。     [1]    因此同样的结果可以用下面语句获得: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在这个例子里,排序的顺序并非绝对清晰的,因此你可能看到 San Francisco 行随机的排序。    但是如果你使用下面的语句,那么就总是会得到上面的结果SELECT * FROM weather    ORDER BY city, temp_lo;    你可以要求查询的结果按照某种顺序排序, 并且消除重复的行输出:SELECT DISTINCT city    FROM weather;    city --------------- Hayward San Francisco (2 rows)再次声明,结果行的顺序可能是随机的。    你可以组合使用 DISTINCT 和 ORDER BY 来获取一致的结果:     [2]SELECT DISTINCT city    FROM weather    ORDER BY city;
推荐信息