Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

SELECT

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

構文
-- 指定した列を取得します。
SELECT 列名1, 列名2 FROM テーブル名;

-- すべての列を取得します。
SELECT * FROM テーブル名;

-- 列に別名(エイリアス)を付けて取得します。
SELECT 列名 AS 別名 FROM テーブル名;

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

-- 社員テーブルのすべての列を取得します。
SELECT * FROM employees;

-- 列に別名を付けて取得します。
SELECT name AS 氏名, salary AS 月給 FROM employees;

-- 部署名の重複を除外して一覧を取得します。
SELECT DISTINCT department FROM employees;

-- 計算式にも別名を付けられます。
SELECT name, salary * 12 AS 年収 FROM employees;
実行結果
-- SELECT name AS 氏名, salary AS 月給 FROM employees; の結果例
-- +----------+--------+
-- | 氏名     | 月給   |
-- +----------+--------+
-- | 田中太郎 | 300000 |
-- | 鈴木花子 | 280000 |
-- | 佐藤一郎 | 320000 |
-- +----------+--------+
データベース別の書き方

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

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

SQL Server では『TOP』を使って取得件数を制限できます(MySQLの『LIMIT』に相当)。

SELECT TOP 10 name, 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)で囲みます。

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

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