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は時間を戻す魔法。
関連