
データベース操作の基本であり最重要ともいえるのが「SELECT文」です。この記事では、SELECT文の基本構文から、WHERE句やGROUP BY、サブクエリやCASE式まで、実務で頻出する使い方を完全網羅。初心者にも分かりやすく、かつ実務に耐えうる応用例も豊富に紹介します。
目次
SELECT文とは?まずは基本構文を理解しよう
SELECT文は、データベースからデータを「取得する」ためのSQL文です。以下が最も基本的な構文です。
SELECT カラム名 FROM テーブル名;
例:usersテーブルから全件取得する
SELECT * FROM users;
例:特定のカラムのみ取得する
SELECT name, email FROM users;
WHERE句で条件を絞り込む
WHERE句を使うと、特定の条件を満たす行だけを取得できます。
SELECT * FROM users WHERE age >= 30;
複数条件の組み合わせ(AND / OR)
SELECT * FROM users WHERE age >= 30 AND gender = 'male';
ORDER BYで並び順を制御する
データの並び順を変更したい場合はORDER BY句を使用します。
SELECT * FROM users ORDER BY created_at DESC;
複数条件での並び替え
SELECT * FROM users ORDER BY gender ASC, age DESC;
LIMITとOFFSETで件数を制限する
大量のデータから一部だけ取得したいときにはLIMITとOFFSETを使います。
SELECT * FROM users ORDER BY id ASC LIMIT 10 OFFSET 20;
※ 21〜30件目を取得します。
GROUP BYとHAVING句で集計処理を行う
集計(件数や合計)を行いたい場合はGROUP BY句を使います。
SELECT gender, COUNT(*) FROM users GROUP BY gender;
HAVING句で集計結果にフィルタをかける
SELECT gender, COUNT(*) as cnt FROM users GROUP BY gender HAVING cnt >= 10;
サブクエリと相関サブクエリの使い分け
SELECT文の中にさらにSELECT文を書くことができます。
サブクエリの例
SELECT * FROM users WHERE id IN (SELECT user_id FROM orders);
相関サブクエリの例
SELECT name FROM users u WHERE EXISTS (
SELECT 1 FROM orders o WHERE o.user_id = u.id
);
CASE式で条件分岐を組み込む
SELECT文の中で条件分岐した値を表示したい場合はCASE式が便利です。
SELECT name,
CASE
WHEN age >= 65 THEN 'シニア'
WHEN age >= 20 THEN '成人'
ELSE '未成年'
END as age_group
FROM users;
テーブル結合(JOIN)の基本と応用
実務で非常によく使われるのが複数テーブルを結合してデータを取得する「JOIN」です。
INNER JOIN(内部結合)
SELECT users.name, orders.total
FROM users
INNER JOIN orders ON users.id = orders.user_id;
LEFT JOIN(左外部結合)
SELECT users.name, orders.total
FROM users
LEFT JOIN orders ON users.id = orders.user_id;
※ 注文がないユーザーも含まれます。
RIGHT JOIN(右外部結合)
SELECT users.name, orders.total
FROM users
RIGHT JOIN orders ON users.id = orders.user_id;
※ ユーザー情報が存在しない注文も取得したいときに使います。
複数のJOINを組み合わせる
SELECT u.name, o.total, p.name AS product_name
FROM users u
INNER JOIN orders o ON u.id = o.user_id
INNER JOIN products p ON o.product_id = p.id;
実務で役立つSELECT文の応用テクニック集
NULLを含めた条件判定
SELECT * FROM users WHERE email IS NULL;
DISTINCTで重複除去
SELECT DISTINCT gender FROM users;
日付関数を使った抽出
SELECT * FROM users WHERE DATE(created_at) = CURDATE();
別名(AS)で可読性を上げる
SELECT COUNT(*) AS total_users FROM users;
まとめ:SELECT文を武器にデータ操作を自在に
SELECT文を自在に扱えることは、すべてのデータ操作の出発点です。単純なデータ取得から始まり、条件分岐、集計、サブクエリ、テーブル結合を使った高度な分析まで、SELECT文の理解と実践が業務の効率化に直結します。ぜひ実際の業務データを使って試しながら習得していきましょう。

Contact
ウェブサイトの制作や運用に関わる
お悩みやご相談
お気軽にお問い合わせ下さい
ウェブサイトと一口に言っても、企業サイトやECサイト、ブログ、SNSなど、その“カタチ”は目的に応じてさまざまであり、構築方法や使用する技術も大きく異なります。株式会社コナックスでは、お客様のご要望やブランドの個性を丁寧に汲み取り、最適なウェブサイトの“カタチ”をご提案いたします。
デザイン、ユーザビリティ、SEO対策はもちろん、コンテンツ制作やマーケティング戦略に至るまで、あらゆるフェーズでお客様のビジネスに寄り添い、成果につながるウェブサイトづくりをサポートいたします。私たちは、ウェブサイトの公開をゴールではなくスタートと捉え、お客様のビジネスの成功に向けて共に伴走してまいります。