📌 結論から理解する
SELECT文=「どの列を・どのテーブルから・どんな条件で取得するか」
SELECT文はDMLの中で最も重要な命令です。データの取得(参照)に使います。
基本的なSELECT文
-- 全列を取得
SELECT * FROM products;
-- 特定の列だけ取得
SELECT product_id, product_name, price FROM products;
-- 別名(エイリアス)をつける
SELECT product_name AS 商品名, price AS 単価 FROM products;
-- 重複を除去する
SELECT DISTINCT category FROM products;
SELECT * FROM products;
-- 特定の列だけ取得
SELECT product_id, product_name, price FROM products;
-- 別名(エイリアス)をつける
SELECT product_name AS 商品名, price AS 単価 FROM products;
-- 重複を除去する
SELECT DISTINCT category FROM products;
計算式・文字列の使い方
-- 計算式を列として使う
SELECT product_name,
price * 1.1 AS price_with_tax
FROM products;
-- 定数を列として使う
SELECT product_name,
'JPY' AS currency
FROM products;
SELECT product_name,
price * 1.1 AS price_with_tax
FROM products;
-- 定数を列として使う
SELECT product_name,
'JPY' AS currency
FROM products;
DISTINCTの注意点
DISTINCTは複数列に適用すると「複数列の組み合わせ」の重複を除去します。
-- category と brand の組み合わせで重複除去
SELECT DISTINCT category, brand
FROM products;
SELECT DISTINCT category, brand
FROM products;
SELECT DISTINCT A, B は「A と B それぞれが一意」ではなく「A と B の組み合わせが一意」です。
試験でよく問われること
- SELECT * はすべての列を取得(本番では非推奨)
- AS は省略可能(スペースだけでもエイリアス設定できる)
- DISTINCT は SELECT の直後に書く
- 計算式・関数もSELECTリストに書ける
「DISTINCTを使って部門の一覧を取得する」「税込み価格を計算する列を追加する」などの基本SQLが午後問題の穴埋めとして出る。
🧠 確認クイズ
Q1. SELECT product_name, price * 1.1 AS price_with_tax FROM products; の説明として正しいのはどれか?
Q2. SELECT DISTINCT dept_id, job_title FROM employees; で重複除去の単位はどれか?
Q3. SELECT文でエイリアス(別名)を設定するキーワードはどれか?