p>本記事は、実務と試験双方で混乱しやすいSQLの“細かい書き方”を、共通原則 → 句・構文ごとのルール → 覚え方 → すぐ使える例の順で整理した総まとめです。WordPressコードエディタにそのまま貼り付けて使えます。
🧱 1. データ定義(DDL:CREATE / ALTER / DROP)
区分 |
構文 |
書き方・覚え方 |
例 |
テーブル作成 |
CREATE TABLE |
型には() 、文字列は'' 、関数は素 |
CREATE TABLE users (id INT, name VARCHAR(50)); |
主キー |
PRIMARY KEY |
複数列可(PRIMARY KEY (a,b) ) |
PRIMARY KEY (id) |
外部キー |
FOREIGN KEY ... REFERENCES |
子→親を参照 |
FOREIGN KEY (dept_id) REFERENCES dept(id) |
制約名 |
CONSTRAINT 名 |
明示命名(管理に便利) |
CONSTRAINT fk_user FOREIGN KEY ... |
ON DELETE / UPDATE |
CASCADE / SET NULL / RESTRICT / NO ACTION / SET DEFAULT |
ドミノ/孤児/禁止/同義/初期化 |
— |
デフォルト値 |
DEFAULT 値 |
文字は'' 、関数は素書き |
DEFAULT 'A' , DEFAULT CURRENT_TIMESTAMP |
NOT NULL |
空値禁止 |
NULL は許可 |
— |
UNIQUE |
重複禁止 |
複合キー可 |
— |
CHECK |
値の範囲制約 |
条件式で指定 |
CHECK (age >= 0) |
AUTO INCREMENT系 |
DB依存 (SERIAL , IDENTITY , AUTO_INCREMENT ) |
整数主キー向け |
— |
ALTER TABLE |
列追加・削除・制約変更 |
ALTER TABLE ... ADD COLUMN ... |
— |
DROP TABLE |
テーブル削除 |
IF EXISTS で安全化 |
— |
📦 2. データ操作(DML:SELECT / INSERT / UPDATE / DELETE)
操作 |
構文 |
覚え方・注意点 |
例 |
SELECT |
SELECT 列 FROM 表 WHERE 条件 |
クォートは文字だけ '...' |
— |
WHERE句 |
比較・論理式 |
AND / OR / NOT |
WHERE age >= 20 AND gender='M' |
LIKE |
あいまい検索 |
% =任意文字列、_ =1文字 |
LIKE 'A%' |
BETWEEN |
範囲指定(含む) |
A BETWEEN 10 AND 20 |
— |
IN |
複数一致 |
IN ('A','B') |
— |
IS NULL / IS NOT NULL |
NULL比較専用 |
= では判定不可 |
— |
ORDER BY |
並び替え |
ASC/ DESC省略可 |
ORDER BY age DESC |
GROUP BY |
集約単位 |
SELECT内に非集約列はNG |
— |
HAVING |
集約後の条件 |
WHEREの後のフィルタ |
— |
LIMIT / OFFSET |
件数・ページング |
MySQL/PG対応 |
LIMIT 10 OFFSET 20 |
INSERT |
INSERT INTO 表(列...) VALUES(...) |
列順と値順を一致 |
— |
UPDATE |
UPDATE 表 SET 列=値 WHERE 条件 |
WHERE省略=全更新注意 |
— |
DELETE |
DELETE FROM 表 WHERE 条件 |
WHERE省略=全削除注意 |
— |
⚙️ 3. データ制御(DCL:GRANT / REVOKE / TRANSACTION)
区分 |
構文 |
意味・覚え方 |
例 |
権限付与 |
GRANT 権限 ON 対象 TO ユーザ |
“贈る”→GRANT |
GRANT SELECT ON users TO user1; |
権限取り消し |
REVOKE 権限 ON 対象 FROM ユーザ |
“取り上げる”→REVOKE |
— |
再配布許可 |
WITH GRANT OPTION |
権限を他人にも与えられる |
— |
ロール付与 |
GRANT 役割 TO ユーザ |
管理単位 |
— |
トランザクション開始 |
BEGIN / START TRANSACTION |
一連の処理をまとめる |
— |
確定 |
COMMIT |
永続化 |
— |
取り消し |
ROLLBACK |
直前状態に戻す |
— |
SAVEPOINT |
部分戻し用ポイント |
ROLLBACK TO SAVEPOINT |
— |
🧮 4. 集約関数・ウィンドウ関数(OVER句)
分類 |
関数 |
意味 |
注意 |
集約関数 |
SUM() , AVG() , MAX() , MIN() , COUNT() |
集団計算 |
NULLは除外 |
ウィンドウ関数 |
RANK() , ROW_NUMBER() , LAG() , LEAD() , SUM() OVER() |
行単位集計 |
OVER() で範囲指定 |
OVER句 |
OVER (PARTITION BY ... ORDER BY ...) |
区切り+順序 |
ORDER BYが範囲定義 |
WINDOW句 |
WINDOW win AS (...) |
再利用可能なウィンドウ定義 |
SELECT句の後で定義 |
🔸 覚え方:「OVERは窓」「PARTITIONでグループ」「ORDERで並べ替え」
🔗 5. 結合・副問合せ
区分 |
構文 |
意味 |
ポイント |
INNER JOIN |
両方に存在するデータのみ |
最も一般的 |
ON で結合条件 |
LEFT JOIN |
左を全残し |
NULL埋め |
— |
RIGHT JOIN |
右を全残し |
— |
|
FULL JOIN |
両方全残し |
DB依存(MySQL非対応) |
— |
CROSS JOIN |
全組み合わせ |
条件なし結合 |
— |
UNION / UNION ALL |
結果セット結合 |
ALLは重複許可 |
— |
EXISTS |
サブクエリ存在確認 |
EXISTS (SELECT ...) |
— |
ANY / ALL |
比較サブクエリ |
=ANY(...) , >ALL(...) |
— |
FROM (SELECT...) AS 別名 |
派生表 |
サブクエリを仮テーブルに |
— |
🧩 6. その他の構文・関数・修飾句
キーワード |
意味 |
注意・覚え方 |
DISTINCT |
重複除去 |
集約時の平均で注意 |
CASE WHEN THEN ELSE END |
条件分岐 |
IFの代わり |
CAST / CONVERT |
型変換 |
'2025-01-01'::DATE (PG) |
COALESCE / NVL |
NULL置換 |
COALESCE(a,b) |
ISNULL() |
NULL判定関数(DB依存) |
— |
EXPLAIN / EXPLAIN ANALYZE |
実行計画確認 |
性能チューニング用 |
TRUNCATE TABLE |
全削除(ログ残らず高速) |
WHERE不可 |
COMMENT ON |
コメント付加(PG) |
COMMENT ON COLUMN users.name IS 'ユーザ名'; |
INDEX |
インデックス作成 |
CREATE INDEX idx_name ON table(column) |
VIEW |
仮想テーブル |
CREATE VIEW v AS SELECT ... |
MATERIALIZED VIEW |
実体を持つビュー |
更新必要 |
SEQUENCE |
自動採番オブジェクト |
PG専用 |
🧠 7. 書き方ルール・括弧/クォーテーションの法則
種類 |
記号 |
用途 |
例 |
( ) |
括弧 |
関数・型サイズ・サブクエリ・条件 |
COUNT(*) , VARCHAR(50) , (SELECT...) |
' ' |
シングルクォート |
文字列リテラル |
'abc' |
" " |
ダブルクォート |
識別子(列・表名)※SQL標準 |
"user" |
|
バッククォート |
MySQL固有識別子 |
`user` |
; |
ステートメント終端 |
コマンド区切り |
— |
. |
スキーマ・表・列の階層指定 |
schema.table.column |
|
:: |
明示型変換(PostgreSQL) |
'100'::INTEGER |
|
--, // ** |
コメント |
-- 行コメント , /* ブロック */ |
|
🔥 8. 丸暗記系フレーズで整理(直感イメージ)
意味 |
フレーズ |
型定義 |
「型に()、値に''、関数は素で」 |
制約削除 |
「CASCADEで巻き添え、RESTRICTで止める」 |
権限 |
「GRANTで贈る、REVOKEで奪う」 |
比較 |
「LIKEでゆるく、%で無限、_で1文字」 |
NULL処理 |
「IS NULLは=じゃない、COALESCEで代入」 |
集約 |
「GROUPでまとめ、HAVINGで絞る」 |
トランザクション |
「BEGINしてCOMMIT、失敗はROLLBACK」 |
JOIN |
「INNERが通常、LEFTで全残し」 |
デフォルト |
「静的値は''、動的は素」 |
ORDER句 |
「昇順ASC、降順DESC、複数可」 |
🗂️ 9. 覚える優先度(試験・実務別)
レベル |
優先キーワード |
⭐初級 |
SELECT / WHERE / ORDER / INSERT / UPDATE / DELETE / LIKE / IN / IS NULL |
⭐⭐中級 |
JOIN / GROUP / HAVING / CASE / DEFAULT / FOREIGN KEY / ON DELETE |
⭐⭐⭐上級 |
WINDOW句 / TRANSACTION制御 / GRANT / REVOKE / VIEW / INDEX / CASCADE / SUBQUERY |
✅ 10. まとめ:SQL記述ルールの黄金律(語感で暗記)
型に()、値に''、関数は素。
止める(RESTRICT)、流す(CASCADE)。
贈る(GRANT)、奪う(REVOKE)。
LIKEは曖昧、%は自由、_は1文字。
IS NULLは特別、=ではない。
OVERは窓、PARTITIONは部屋。
ROLLBACKは時間を戻す魔法。
関連