SQL SELECT

概要: このチュートリアルでは、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 は大文字と小文字を区別しません。したがって、SELECTselect キーワードは同じ意味を持ちます。

慣例により、SELECTFROM などの SQL キーワードには大文字を使用し、テーブル名や列名などの識別子には小文字を使用します。この慣例により、SQL 文がより読みやすくなります。

SQL SELECT 文の例

デモンストレーションのために、サンプルデータベースemployees テーブルを使用します。

employees_table

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_aliasCode 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 の省略形です。
このチュートリアルは役に立ちましたか?