概要: このチュートリアルでは、SQL SELECT
文を使用して単一テーブルからデータを照会する方法を学習します。
SQL SELECT 文の概要
SQL SELECT
文は、1つ以上のテーブルからデータを選択します。以下は、単一テーブルからデータを選択する SELECT
文の基本構文を示しています。
SELECT
select_list
FROM
table_name;
Code language: SQL (Structured Query Language) (sql)
この構文では
- まず、
SELECT
句にテーブルからのカンマ区切りの列のリストを指定します。 - 次に、
FROM
句にテーブル名を指定します。
SELECT
文を評価する場合、データベースシステムは最初に FROM
句を評価し、次に SELECT
句を評価します。テーブルからこれらの列のデータを選択するようなものです。
セミコロン(;)はクエリの 一部ではありません。データベースサーバーは、2つの SQL 文を区切るために使用します。
たとえば、2つの SQL SELECT
文を実行する場合、セミコロン(;
)を使用してそれらを区切る必要があります。詳細はSQL 構文をご覧ください。
テーブルのすべての列からデータを照会する場合は、すべての列名を指定する代わりにアスタリスク(*)演算子を使用できます。
SELECT * FROM table_name;
SQL は大文字と小文字を区別しません。したがって、SELECT
と select
キーワードは同じ意味を持ちます。
慣例により、SELECT
や FROM
などの SQL キーワードには大文字を使用し、テーブル名や列名などの識別子には小文字を使用します。この慣例により、SQL 文がより読みやすくなります。
SQL SELECT 文の例
デモンストレーションのために、サンプルデータベースの employees
テーブルを使用します。

1) SQL SELECT – すべての列からデータを選択する例
次の例では、SQL SELECT
文を使用して、employees
テーブルのすべての行と列からデータを取得します。
SELECT * FROM employees;
Code language: SQL (Structured Query Language) (sql)
以下は、データベースサーバーによって返された結果セットを示しています。見出し付きの行と列を含むスプレッドシートのようなものです。
+-------------+-------------+-------------+-----------------------------------+--------------+------------+--------+----------+------------+---------------+
| employee_id | first_name | last_name | email | phone_number | hire_date | job_id | salary | manager_id | department_id |
+-------------+-------------+-------------+-----------------------------------+--------------+------------+--------+----------+------------+---------------+
| 100 | Steven | King | [email protected] | 515.123.4567 | 1987-06-17 | 4 | 24000.00 | NULL | 9 |
| 101 | Neena | Kochhar | [email protected] | 515.123.4568 | 1989-09-21 | 5 | 17000.00 | 100 | 9 |
| 102 | Lex | De Haan | lex.de [email protected] | 515.123.4569 | 1993-01-13 | 5 | 17000.00 | 100 | 9 |
| 103 | Alexander | Hunold | [email protected] | 590.423.4567 | 1990-01-03 | 9 | 9000.00 | 102 | 6 |
| 104 | Bruce | Ernst | [email protected] | 590.423.4568 | 1991-05-21 | 9 | 6000.00 | 103 | 6 |
| 105 | David | Austin | [email protected] | 590.423.4569 | 1997-06-25 | 9 | 4800.00 | 103 | 6 |
| 106 | Valli | Pataballa | [email protected] | 590.423.4560 | 1998-02-05 | 9 | 4800.00 | 103 | 6 |
| 107 | Diana | Lorentz | [email protected] | 590.423.5567 | 1999-02-07 | 9 | 4200.00 | 103 | 6 |
| 108 | Nancy | Greenberg | [email protected] | 515.124.4569 | 1994-08-17 | 7 | 12000.00 | 101 | 10 |
...
Code language: plaintext (plaintext)
SELECT *
は、セレクトスターと読みます。セレクトスターは、アドホッククエリにのみ役立ちます。
アプリケーション開発では、以下の理由により、セレクトスターの使用は避ける必要があります。
select * は、テーブルのすべての列からデータを返します。多くの場合、アプリケーションはすべての列ではなく、1つまたはいくつかの列のデータのみを必要とします。
select * を使用すると、データベースはディスクからデータを読み取ってアプリケーションに転送するのにより多くの時間を必要とします。テーブルに大量のデータを含む多くの列が含まれている場合、これはパフォーマンスの低下につながることがよくあります。
2) SQL SELECT – 特定の列からデータを選択する
特定の列からデータを選択するには、SELECT
文の SELECT
句の後に列リストを指定します。
たとえば、employees
テーブルのすべての行の従業員 ID、名、姓、および雇用日からのデータを選択するには、次のようにします。
SELECT
employee_id,
first_name,
last_name,
hire_date
FROM
employees;
Code language: SQL (Structured Query Language) (sql)
これで、結果セットには、SELECT
句で指定された4つの列のみが含まれます。
+-------------+-------------+-------------+------------+
| employee_id | first_name | last_name | hire_date |
+-------------+-------------+-------------+------------+
| 100 | Steven | King | 1987-06-17 |
| 101 | Neena | Kochhar | 1989-09-21 |
| 102 | Lex | De Haan | 1993-01-13 |
| 103 | Alexander | Hunold | 1990-01-03 |
| 104 | Bruce | Ernst | 1991-05-21 |
| 105 | David | Austin | 1997-06-25 |
| 106 | Valli | Pataballa | 1998-02-05 |
| 107 | Diana | Lorentz | 1999-02-07 |
| 108 | Nancy | Greenberg | 1994-08-17 |
| 109 | Daniel | Faviet | 1994-08-16 |
| 110 | John | Chen | 1997-09-28 |
...
Code language: plaintext (plaintext)
3) SQL SELECT – 簡単な計算を実行する
次の例では、SELECT
文を使用して、名、姓、給与、および新しい給与を取得します。
SELECT
first_name,
last_name,
salary,
salary * 1.05
FROM
employees;
Code language: SQL (Structured Query Language) (sql)
式 salary * 1.05
は、すべての従業員の給与に 5%
を加算します。デフォルトでは、SQL は式を列見出しとして使用します。
+-------------+-------------+----------+---------------+
| first_name | last_name | salary | salary * 1.05 |
+-------------+-------------+----------+---------------+
| Steven | King | 24000.00 | 25200.0000 |
| Neena | Kochhar | 17000.00 | 17850.0000 |
| Lex | De Haan | 17000.00 | 17850.0000 |
| Alexander | Hunold | 9000.00 | 9450.0000 |
| Bruce | Ernst | 6000.00 | 6300.0000 |
| David | Austin | 4800.00 | 5040.0000 |
| Valli | Pataballa | 4800.00 | 5040.0000 |
| Diana | Lorentz | 4200.00 | 4410.0000 |
| Nancy | Greenberg | 12000.00 | 12600.0000 |
...
Code language: plaintext (plaintext)
式または列にエイリアスを割り当てるには、AS
キーワードの後に列エイリアスを次のように指定します。
expression AS column_alias
Code language: SQL (Structured Query Language) (sql)
たとえば、次の SELECT
文では、salary * 1.05
式の列エイリアスとして new_salary
を使用しています。
SELECT
first_name,
last_name,
salary,
salary * 1.05 AS new_salary
FROM
employees;
Code language: SQL (Structured Query Language) (sql)
出力
+-------------+-------------+----------+------------+
| first_name | last_name | salary | new_salary |
+-------------+-------------+----------+------------+
| Steven | King | 24000.00 | 25200.0000 |
| Neena | Kochhar | 17000.00 | 17850.0000 |
| Lex | De Haan | 17000.00 | 17850.0000 |
| Alexander | Hunold | 9000.00 | 9450.0000 |
| Bruce | Ernst | 6000.00 | 6300.0000 |
| David | Austin | 4800.00 | 5040.0000 |
| Valli | Pataballa | 4800.00 | 5040.0000 |
| Diana | Lorentz | 4200.00 | 4410.0000 |
| Nancy | Greenberg | 12000.00 | 12600.0000 |
まとめ
- SQL
SELECT
文を使用して、テーブルからデータを選択します。 - テーブルからデータを選択するには、
FROM
句にテーブル名、SELECT
句に列のリストを指定します。 SELECT *
は、テーブルのすべての列を選択するSELECT
の省略形です。