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

SELECT文は、数あるSQL文の中で最も多用され、かつ最も基本となるSQL分です。SELECT文をマスターすることは、SQLをマスターすることに直接つながります。

SELECT文の基本構文
SELECT <列名>, …… FROM <テーブル名>;

このSELECT文には、SELECT句とFROM句という2つの「句(clause)」があります。句はSQL文を構成する要素で、SELECTやFROMなどのキーワードからはじまるフレーズです。
SELECT句には、テーブルから出力したい列の名前を書き並べます。一方、FROM句には、データを取り出すテーブルの名前を指定します。

例として以下の表に対してSELECT文を発行してみます。

idnameage
0001山田太郎28
0002佐藤達弘34
0003木村幸平50
0004神埼恵美22

今回は、id列とname列を出力してみます。

SELECT id, name
FROM staff;
実行結果
id | name
------+----------
0001 | 山田太郎
0002 | 佐藤達弘
0003 | 木村幸平
0004 | 神埼恵美
(4 行)

SELECT文の1行目にある「SELECT id, name」がSELECT句です。出力する列の順番や数は自由に決められます。複数の列を出力するときには、カンマ(,)で区切って書き並べます。このとき、結果の列はSELECT句と同じ順番で並びます。

すべての列を出力する

すべての列を出力したいときには、すべての列を意味するアスタリスク(*)を使うことができます。

すべての列を出力
SELECT * FROM <テーブル名>;

例えば、staffテーブルのすべての列を出力する場合は、以下のように書くことができます。

SELECT *
  FROM staff;

これは、以下のように書いたSELECT文と同じ結果を得られます。

SELECT id , name, age
FROM staff;

実行結果
id | name | age
------+----------+-----
0001 | 山田太郎 | 28
0002 | 佐藤達弘 | 34
0003 | 木村幸平 | 50
0004 | 神埼恵美 | 22
(4 行)

ただし、アスタリスクを使うと、結果の列の並び順を指定することはできません。このときには、CREATE TABLE文で定義したときの順番で列が並びます。

列に列名をつける

SQL文では、ASキーワードを使って、列に別名をつけることができます。

SELECT id    AS staff_id,
name AS staff_name
FROM staff;

実行結果
staff_id | staff_name
----------+------------
0001 | 山田太郎
0002 | 佐藤達弘
0003 | 木村幸平
0004 | 神埼恵美
(4 行)

別名には日本語を使うこともできます。その場合には、ダブルクォーテーション(“)で囲みます。シングルクォーテーション(‘)ではないことに注意しましょう。

SELECT id    AS "社員ID",
name AS "名前" FROM staff;
実行結果
社員ID | 名前
--------+----------
0001 | 山田太郎
0002 | 佐藤達弘
0003 | 木村幸平
0004 | 神埼恵美
(4 行)

実行結果が見やすくなりました。このように、別名はSELECT文の実行結果をより見やすくしたり、扱いやすくするために使います。

定数の出力

SELECT句には、列名だけでなく定数を書くこともできます。1列目に’A株式会社’という文字列の定数(文字列定数)を、2列目には225という数値の定数(数値定数)、3列目に’2005-11-15’という日付の定数(日付定数)をSELECT句に記述して、id列とname列と一緒に出力しています。

SELECT 'A株式会社'   AS company,
225 AS code,
'2005-11-15' AS es_date,
id,
name
FROM staff;
実行結果
company | code | es_date | id | name
-----------+------+-----------+------+----------
A株式会社 | 225 | 2005-11-15 | 0001 | 山田太郎
A株式会社 | 225 | 2005-11-15 | 0002 | 佐藤達弘
A株式会社 | 225 | 2005-11-15 | 0003 | 木村幸平
A株式会社 | 225 | 2005-11-15 | 0004 | 神埼恵美
(4 行)