他のバージョンの文書 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

2.5. テーブルへの問い合わせ

テーブルからデータを取り出すために、テーブルは問い合わせられます。 SQL SELECT 文がこのために使用されます。この文は選択リスト(返される列のリスト部分)とテーブルリスト(データを取り出すテーブルのリスト部分)、および、省略可能な条件(制限を指定する部分)に分けられます。例えば、weather の全ての行を取り出すには、以下を入力します。

SELECT * FROM weather;

(here * means "all columns") and the output should be:

     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;

This should give:

     city      | temp_avg |    date
---------------+----------+------------
 San Francisco |       48 | 1994-11-27
 San Francisco |       50 | 1994-11-29
 Hayward       |       45 | 1994-11-29
(3 rows)

AS 句を使用した出力列の再ラベル付けの部分に注意して下さい(省略することもできます)。

任意の論理演算子(ANDORNOT) を問い合わせの条件に使用することができます。例えば以下は、San Francisco の雨天時の気象データを取り出します。

SELECT * FROM weather
    WHERE city = 'San Francisco'
    AND prcp > 0.0;

Result:

     city      | temp_lo | temp_hi | prcp |    date
---------------+---------+---------+------+------------
 San Francisco |      46 |      50 | 0.25 | 1994-11-27
(1 row)

最後の注意事項として、SELECT の結果をソートした形、または、重複行を除いた形で返すように指定することができます(以下の例は混乱を招くかもしれませんので、念のためですが、DISTINCTORDER BY は単体で使用することができます)。

SELECT DISTINCT city
    FROM weather
    ORDER BY city;

     city
---------------
 Hayward
 San Francisco
(2 rows)