初心者向けSQLクエリパターン早見表

入門 | 8分 で読める | 2026.06.17

公式ドキュメント

概要

このチートシートでは、初心者が最初によく使うSQLの形だけをまとめます。高度なウィンドウ関数、CTE、複雑な最適化は扱いません。

まずはSELECT、WHERE、JOIN、GROUP BY、変更系SQLの安全な形を覚えます。

最初に覚える最小セット

目的基本形
全件を見るSELECT * FROM table_name;
列を選ぶSELECT col1, col2 FROM table_name;
条件で絞るSELECT * FROM table_name WHERE col = value;
並び替えるORDER BY col DESC
件数を絞るLIMIT 10
つなぐJOIN other ON a.id = b.a_id
集計するGROUP BY col

SELECT

必要な列だけ取得します。

SELECT id, name, email
FROM users;

学習中は SELECT * も便利ですが、慣れてきたら列を明示します。

WHERE

条件に合う行だけ取得します。

目的SQL
一致WHERE status = 'active'
不一致WHERE status <> 'deleted'
以上WHERE age >= 20
範囲WHERE price BETWEEN 1000 AND 5000
リストWHERE status IN ('paid', 'shipped')
NULLWHERE deleted_at IS NULL

NULL判定は = NULL ではなく IS NULL を使います。

ORDER BY / LIMIT

新しい順に10件取得します。

SELECT id, title, created_at
FROM posts
ORDER BY created_at DESC
LIMIT 10;

LIMIT だけでは順番は決まりません。必要なら ORDER BY を付けます。

JOIN

ユーザーと注文をつなぎます。

SELECT users.name, orders.total
FROM users
INNER JOIN orders ON users.id = orders.user_id;
JOIN使いどころ
INNER JOIN関連データがあるものだけ出す
LEFT JOIN左側の一覧を残したい

注文がないユーザーも表示したい場合は LEFT JOIN です。

SELECT users.name, orders.total
FROM users
LEFT JOIN orders ON users.id = orders.user_id;

GROUP BY

ユーザーごとの注文数を数えます。

SELECT user_id, COUNT(*) AS order_count
FROM orders
GROUP BY user_id;

集計後に絞る場合は HAVING を使います。

SELECT user_id, COUNT(*) AS order_count
FROM orders
GROUP BY user_id
HAVING COUNT(*) >= 2;

INSERT

行を追加します。

INSERT INTO users (name, email)
VALUES ('Sato', 'sato@example.com');

UPDATE

行を更新します。

UPDATE users
SET email = 'new-sato@example.com'
WHERE id = 1;

UPDATEの前には、同じWHERE条件でSELECTして対象を確認します。

DELETE

行を削除します。

DELETE FROM users
WHERE id = 1;

WHERE なしの DELETE は全行削除になります。

安全確認パターン

変更前に対象を確認します。

SELECT *
FROM users
WHERE id = 1;

問題なければ、同じ条件で更新します。

UPDATE users
SET active = false
WHERE id = 1;

まとめ

初心者が最初に覚えるSQLは、SELECTWHEREORDER BYLIMITJOINGROUP BYINSERTUPDATEDELETE です。変更系SQLは、必ず先に SELECT で対象を確認します。

参考リソース

← 一覧に戻る
PR
PR
PR
PR