言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理にJavaScriptを使用しています。
より快適にご利用頂くため、JavaScriptを有効にしたうえで当サイトを閲覧することをお勧めいたします。

  1. トップページ
  2. SQL辞典
  3. SELECT

SELECT

対応: SQL-92(1992)

テーブルから行・列を取得する最も基本的なSQL文です。データベースに対する問い合わせ(クエリ)の起点となります。

構文

指定した列を取得します。

SELECT 列名1, 列名2 FROM テーブル名;

すべての列を取得します。

SELECT * FROM テーブル名;

列に別名(エイリアス)を付けて取得します。

SELECT 列名 AS 別名 FROM テーブル名;

重複行を除外して取得します。

SELECT DISTINCT 列名 FROM テーブル名;

構文一覧

構文概要
SELECT 列名指定した列のデータを取得します。複数列はカンマで区切ります。
SELECT *テーブルのすべての列を取得します。本番コードでは必要な列を明示的に指定することを推奨します。
AS 別名取得した列または式に任意の別名を付けます。結果セットの列ヘッダーに反映されます。
DISTINCT重複する行を除外して一意な値のみを取得します。

サンプルコード

以下の『employees』テーブルを例に説明します。

employees id name department salary 1 user_a org_a 300000 2 user_c org_b 280000 3 user_e org_a 320000 3 rows in set

社員テーブルから氏名と部署を取得します。

sample_select.sql
SELECT name, department FROM employees;
+--------+------------+
| name   | department |
+--------+------------+
| user_a | org_a      |
| user_c | org_b      |
| user_e | org_a      |
+--------+------------+
3 rows in set

社員テーブルのすべての列を取得します。

sample_select.sql
SELECT * FROM employees;
+----+--------+------------+--------+
| id | name   | department | salary |
+----+--------+------------+--------+
|  1 | user_a | org_a      | 300000 |
|  2 | user_c | org_b      | 280000 |
|  3 | user_e | org_a      | 320000 |
+----+--------+------------+--------+
3 rows in set

列に別名を付けて取得します。

sample_select.sql
SELECT name AS 氏名, salary AS 月給 FROM employees;
+--------+--------+
| 氏名   | 月給   |
+--------+--------+
| user_a | 300000 |
| user_c | 280000 |
| user_e | 320000 |
+--------+--------+
3 rows in set

部署名の重複を除外して一覧を取得します。

sample_select.sql
SELECT DISTINCT department FROM employees;
+------------+
| department |
+------------+
| org_a      |
| org_b      |
+------------+
2 rows in set

計算式にも別名を付けられます。

sample_select.sql
SELECT name, salary * 12 AS 年収 FROM employees;
+--------+---------+
| name   | 年収    |
+--------+---------+
| user_a | 3600000 |
| user_c | 3360000 |
| user_e | 3840000 |
+--------+---------+
3 rows in set

データベース別の書き方

『SELECT』『AS』『DISTINCT』の基本構文は主要なデータベースで共通して使用できます。

SELECT name AS 氏名, salary AS 月給 FROM employees;
SELECT DISTINCT department FROM employees;

PostgreSQL では『DISTINCT ON (列名)』で、指定した列の値ごとに最初の1行だけを取得できます。

部署ごとに給与が最も高い社員を1人ずつ取得します。

SELECT DISTINCT ON (department) name, department, salary
FROM employees
ORDER BY department, salary DESC;

概要

『SELECT』はSQLの中で最も頻繁に使用される命令で、テーブルからデータを読み取ります。取得する列を明示的に指定することで、ネットワーク転送量を削減しパフォーマンスを向上させることができます。

『AS』による別名は日本語でも使用可能ですが、プログラムからカラム名で参照する場合はスペースを含む名前には注意が必要です。スペースを含む場合はバッククォート(MySQL)またはダブルクォート(標準SQL)で囲みます。

MySQL(バッククォート)

SELECT name AS `氏 名` FROM employees;

標準SQL / PostgreSQL(ダブルクォート)

SELECT name AS "氏 名" FROM employees;

条件による絞り込みは『WHERE』、並び替えは『ORDER BY』、件数制限は『LIMIT』と組み合わせて使用します。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。