SELECT文はSQLにおいて、テーブルから取り出すデータを指定する重要な命令です。
このページでは、SQLにおけるSELECT文の操作について解説します。
SELECT文
SQLで使用するSELECT文は、テーブルやビューの中から必要な列を抽出して参照する命令です。
データ操作言語(DML, Data Manipulation Language)の中で最も使用頻度が高い命令です。
SELECT文の基本構文は以下の通りです。
SELECTの後に参照するカラム名をカンマ区切りで並べ、FROMの後に参照するテーブルやビューの名前を持ってきます。
SELECT COL1, COL2, COL3 FROM TABLE_NAME
テーブルの全カラムを参照する際はカラム名の代わりにアスタリスク(*)を使います。
SELECT * FROM TABLE_NAME
SELECT文で使用できる演算子
SELECT文で選択するカラムには、演算子を使用して元のカラムの値を加工したカラムを使用できます。
四則演算:算術演算子(加算(+)、減算(-)、乗算(*)、除算(/))
SELECT 商品名, 価格*1.08 FROM 商品マスタ
複数の列を1つにまとめる:連結演算子(||)(CONCATでも代替可能)
別名(相関名)の指定:AS
SELECT '商品名:', || 品目 AS 商品名 FROM 商品マスタ
重複削除:DISTINCT
SELECT DISTINCT 商品名 FROM 購買トランザクション
NULL値制御:COALESCE
SELECT 顧客氏名, COALESCE(固定電話番号, 携帯電話番号, 勤務先電話番号, '電話番号不明') AS 登録電話番号 FROM 顧客マスタ
COALESCE(コウアレス)は、引数を前から順に評価し、最初の非NULL値を返します。
上記の例では、顧客マスタの登録電話について、固定電話の登録がある場合は、固定電話の番号を返します。
固定電話がない場合は携帯電話の番号、それも無ければ勤務先電話番号を返し、全てNULLの場合は「電話番号不明」と返します。
全角/半角スペースをNULL扱いする場合は、NULLIFを使います。
SELECT 顧客氏名, COALESCE(NULLIF(登録住所, ' ') '不明') AS 顧客住所 FROM 顧客マスタ
CASE WHENを使うことで返値を条件分岐で指定できます。
数値をカテゴリに区切ったカラムを作成できます。
SELECT 入場ID, 訪問月,
CASE WHEN 訪問月 <= 4 OR 訪問月>=11 THEN '冬期営業'
WHEN 訪問月 BETWEEN 5 AND 10 THEN '夏期営業'
ELSE '不明'
END AS 営業期間区分
FROM 入場記録トランザクション
ウィンドウ関数
カラム名だけではなく、ウィンドウ関数(分析関数)を使って、元のカラムの値に何らかの処理をした値を直接返すこともできます。
一例として、行数を返すCOUNT関数や当該カラムの平均値を返すAVG関数などがあります。
SELECT COUNT(*), AVG(COL1) FROM TABLE_NAME
射影と選択
射影や選択はSQLでテーブルやビューから必要な行や列を抽出する操作です。
射影はテーブルから特定の列、選択は特定の行を抽出します。
演算 | 式 | 説明 | 備考 |
射影 | R[A1, A2, …] | テーブル等から列を選択してタプルを取得 | 重複するタプルは排除 |
選択 | R[X 比較演算子 Y] | テーブル等から条件に合致する行を取得 | WHERE文で取得 |
射影はSELECT文の処理に対応しますが、厳密には重複する列は1つにまとめられるため、SELECT DISTINCTの操作に対応します。
SELECT DISITINCT COL1, COL2, COL3 FROM TABLE_NAME
選択はSELECT文と組み合わせて使用するWHERE文の処理に対応します。
SELECT * FROM TABLE_NAME
WHERE COL1='2025-01-01'
参考文献
三好 康之「情報処理教科書 データベーススペシャリスト 2025年版」 翔泳社
coalesceの意味・使い方 英辞郎 株式会社アルク 2025/6/2閲覧