長くなったSQLは、改行・インデント・キーワードの統一だけで驚くほど読みやすくなります。本記事では、現場で使える整形のコツとアンチパターンをまとめ、最後に無料のSQL整形ツールをご紹介します。
整形(フォーマット)のメリット
- 可読性が上がる:SELECT / FROM / WHERE などのブロックが一目で分かる
- レビュー効率UP:差分が見やすくなり、ミスの発見が早い
- 保守性向上:あとで自分や他人が読んでも迷わない
基本ルール(まずはこれだけ)
- 主要キーワードで改行:SELECT / FROM / WHERE / GROUP BY / HAVING / ORDER BY / JOIN
- 句内で整列:SELECT句のカラムは改行し、同じインデントに
- インデント幅を統一:2 or 4スペース。タブ混在は避ける
- キーワード表記を統一:大文字 or 小文字のどちらか
整形例(Before → After)
Before
select u.id,u.name,o.id as order_id,o.total
from users u inner join orders o on u.id=o.user_id
where o.status='PAID' and u.deleted_at is null
order by o.created_at desc;
After
SELECT
u.id,
u.name,
o.id AS order_id,
o.total
FROM
users u
INNER JOIN orders o ON u.id = o.user_id
WHERE
o.status = 'PAID'
AND u.deleted_at IS NULL
ORDER BY
o.created_at DESC;
JOINとサブクエリの整形
JOIN はテーブルごとに改行し、ON
条件は次行でインデント。サブクエリは括弧内をさらにインデントします。
SELECT
u.id,
sq.latest_total
FROM
users u
LEFT JOIN (
SELECT
user_id,
MAX(total) AS latest_total
FROM orders
GROUP BY user_id
) sq ON sq.user_id = u.id;
よくあるアンチパターン
- 1行に詰め込む:レビュー不能&差分が追えない
- インデントが崩れている:ネストの深さが分からずバグのもと
- キーワードの大小が混在:可読性低下(チームでルール化)
オンライン整形ツール(当サイト)
当サイトのSQL整形ツールは、主要キーワードでの改行・インデント・キーワード大小統一・1行圧縮(ミニファイ)に対応。オプションからインデント幅や小文字キーワードも選べます。
- ブラウザ上で動作(サーバー送信なし)
- スマホ・PC対応のシンプルUI
- コピー・再整形がワンクリック
ケース別テクニック
複雑なWHERE条件
WHERE
(status = 'PAID' OR status = 'SHIPPED')
AND created_at >= '2025-01-01'
AND (region = 'JP' AND channel IN ('web','app'))
キーワードを小文字に統一したい場合
select
u.id,
u.name
from
users u
where
u.active = true;
まとめ
- 主要キーワードで改行、句内整列、インデント統一が基本
- JOIN・サブクエリはネストで見通しを確保
- チームルール(インデント幅/大文字小文字)を決めて運用
コメント