SELECT文完全ガイド:基本から実務で使える応用テクニックまで

データベース操作の基本であり最重要ともいえるのが「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対策はもちろん、コンテンツ制作やマーケティング戦略に至るまで、あらゆるフェーズでお客様のビジネスに寄り添い、成果につながるウェブサイトづくりをサポートいたします。私たちは、ウェブサイトの公開をゴールではなくスタートと捉え、お客様のビジネスの成功に向けて共に伴走してまいります。