今回やること
この記事では、小さな users テーブルを使って、SELECT、WHERE、ORDER BY、LIMIT を練習します。
目的は、SQLを暗記することではなく、条件を少しずつ足して結果がどう変わるかを確認することです。
前提条件
- PostgreSQL、SQLite、MySQLなどSQLを実行できる環境がある
SELECTがデータを取得する命令だと知っている- 学習用の空テーブルで試す
この記事のSQLは標準的な書き方に寄せています。日時型などは使うデータベースによって細部が異なる場合があります。
Step 1: 練習用テーブルを作る
まず、ユーザー情報を入れるテーブルを作ります。
CREATE TABLE users (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
email TEXT NOT NULL,
active BOOLEAN NOT NULL,
age INTEGER NOT NULL,
created_at DATE NOT NULL
);
ここでは、名前、メール、アクティブ状態、年齢、作成日を持たせます。
Step 2: 練習データを入れる
少ない件数で結果を見やすくします。
INSERT INTO users (id, name, email, active, age, created_at) VALUES
(1, 'Sato', 'sato@example.com', true, 18, '2026-01-10'),
(2, 'Suzuki', 'suzuki@example.com', true, 22, '2026-02-15'),
(3, 'Tanaka', 'tanaka@example.com', false, 17, '2025-12-20'),
(4, 'Yamada', 'yamada@example.com', true, 31, '2026-03-01'),
(5, 'Kato', 'kato@example.com', false, 25, '2026-01-25');
Step 3: 全件を取得する
まずは、テーブル全体を確認します。
SELECT *
FROM users;
目的は、入れたデータが想定通りに入っているか確認することです。
Step 4: 必要な列だけ取得する
すべての列ではなく、必要な列だけを指定します。
SELECT id, name, email
FROM users;
実務では、まず必要な列だけをSELECTする癖を付けると、SQLの意図が読みやすくなります。
Step 5: WHEREで絞り込む
アクティブなユーザーだけを取得します。
SELECT id, name, active
FROM users
WHERE active = true;
年齢で絞り込むこともできます。
SELECT id, name, age
FROM users
WHERE age >= 20;
Step 6: 複数条件で絞る
AND を使うと、両方の条件を満たす行だけを取得します。
SELECT id, name, active, age
FROM users
WHERE active = true
AND age >= 20;
OR を使うと、どちらかの条件を満たす行を取得します。
SELECT id, name, active, age
FROM users
WHERE active = false
OR age < 20;
Step 7: ORDER BYで並び替える
作成日が新しい順に並べます。
SELECT id, name, created_at
FROM users
ORDER BY created_at DESC;
年齢が若い順にするなら ASC を使います。
SELECT id, name, age
FROM users
ORDER BY age ASC;
Step 8: LIMITで件数を制限する
新しいユーザーを3件だけ取得します。
SELECT id, name, created_at
FROM users
ORDER BY created_at DESC
LIMIT 3;
LIMITだけでは「新しい順」にはなりません。必ずORDER BYとセットで考えます。
よくあるエラー
| エラー | よくある原因 | 確認すること |
|---|---|---|
relation does not exist | テーブル名が違う | users を作成済みか |
column does not exist | 列名のタイプミス | SELECT の列名を確認 |
| 結果が0件 | WHERE 条件が厳しすぎる | 条件を1つずつ外す |
| 並び順が想定と違う | ORDER BY がない | 並び替え条件を明示する |
まとめ
SELECT は列を選び、FROM は対象テーブルを決め、WHERE は行を絞り、ORDER BY は並び替え、LIMIT は件数を制限します。最初は小さなテーブルで、条件を1つずつ足しながら結果を確認すると理解しやすいです。