要從表中檢索資料,就需要對該表進行*查詢*。使用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;
如果您在文件中看到任何不正確、與您對特定功能的體驗不符或需要進一步說明的內容,請使用 此表格 報告文件問題。