列を出力する

テーブルからデータを取り出すときはSELECT文を使う。またSELECT文で必要なデータを検索して、取り出すことを「問い合わせ」、「クエリ」と呼ぶ。

SELECT <列名>, ...... FROM <テーブル名>;

# SELECT句にはテーブルから出力したい列名
# FROM句にはデータを取り出すテーブル名を指定

実際にテーブルから指定した列のデータを出力してみました。出力する列の順番や数は自由に決められる。

postgres=# SELECT shohin_id, shohin_mei, shiire_tanka FROM Shohin;
 shohin_id |   shohin_mei   | shiire_tanka 
-----------+----------------+--------------
 0001      | Tシャツ        |          500
 0002      | 穴あけパンチ   |          320
 0003      | カッターシャツ |         2800
 0004      | 包丁           |         2800
 0005      | 圧力鍋         |         5000
 0006      | フォーク       |             
 0007      | おろしがね     |          790
 0008      | ボールペン     |             
(8 rows)

全ての列を出力したいときは、*を使う。(アスタリスクは全列を意味する!

アスタリスクを使うと結果の列を並び替えることはできない。

postgres=# SELECT * FROM Shohin;
 shohin_id |   shohin_mei   | shohin_bunrui | hanbai_tanka | shiire_tanka |  torokubi  
-----------+----------------+---------------+--------------+--------------+------------
 0001      | Tシャツ        | 衣服          |         1000 |          500 | 2009-09-20
 0002      | 穴あけパンチ   | 事務用品      |          500 |          320 | 2009-09-11
 0003      | カッターシャツ | 衣服          |         4000 |         2800 | 
 0004      | 包丁           | キッチン用品  |         3000 |         2800 | 2009-09-20
 0005      | 圧力鍋         | キッチン用品  |         6800 |         5000 | 2009-01-15
 0006      | フォーク       | キッチン用品  |          500 |              | 2009-09-20
 0007      | おろしがね     | キッチン用品  |          880 |          790 | 2008-04-28
 0008      | ボールペン     | 事務用品      |          100 |              | 2009-11-11
(8 rows)

列に別名をつける

ASキーワードを使って、列に別名をつけることができる。別名は日本語を使うこともできるが、ダブルクォーテーションで囲む必要がある。(スペースを含む別名をつけることもできる)

postgres=# SELECT shohin_id AS id,
shohin_mei AS "商品名" 
FROM Shohin;
  id  |     商品名     
------+----------------
 0001 | Tシャツ
 0002 | 穴あけパンチ
 0003 | カッターシャツ
 0004 | 包丁
 0005 | 圧力鍋
 0006 | フォーク
 0007 | おろしがね
 0008 | ボールペン
(8 rows)

定数の出力

SELECT句には列名だけでなく定数を書くこともできる。文字列定数、数値定数、日付定数がある。(文字列や日付はシングルクォーテーションで囲む。)

postgres=# SELECT '商品' AS mojiretsu, 38 AS kazu, '2022-03-01' AS hizuke,
postgres-# shohin_id, shohin_mei
postgres-# FROM Shohin;
 mojiretsu | kazu |   hizuke   | shohin_id |   shohin_mei   
-----------+------+------------+-----------+----------------
 商品      |   38 | 2022-03-01 | 0001      | Tシャツ
 商品      |   38 | 2022-03-01 | 0002      | 穴あけパンチ
 商品      |   38 | 2022-03-01 | 0003      | カッターシャツ
 商品      |   38 | 2022-03-01 | 0004      | 包丁
 商品      |   38 | 2022-03-01 | 0005      | 圧力鍋
 商品      |   38 | 2022-03-01 | 0006      | フォーク
 商品      |   38 | 2022-03-01 | 0007      | おろしがね
 商品      |   38 | 2022-03-01 | 0008      | ボールペン
(8 rows)

結果から重複行を省く