SQLを読みやすく整形するルール|インデント・改行・大文字小文字

1行に詰め込まれたSQL文は、条件が多くなるほど読みにくくなります。本記事では、SQLを読みやすく整形するための基本ルールを解説します。

主要な句は改行して始める

SELECT、FROM、WHERE、GROUP BY、ORDER BYといった主要な句は、それぞれ新しい行から書き始めます。これだけで、SQL文がどこで何をしているかが一目で分かるようになります。

-- 整形前
SELECT id, name, age FROM users WHERE age >= 20 AND status = 'active' ORDER BY id;

-- 整形後
SELECT id, name, age
FROM users
WHERE age >= 20
  AND status = 'active'
ORDER BY id;

WHEREの条件はANDごとに改行し、そろえてインデントする

条件が複数あるWHERE句は、ANDやORの前で改行し、条件の開始位置をそろえます。条件の数が一目で分かり、条件を追加・削除するときの差分も見やすくなります。

JOINは1つにつき1行

複数のテーブルを結合するJOINは、1つのJOINにつき1行で書きます。結合条件(ON句)も同じ行、または次の行にそろえて書くと、どのテーブル同士がどう結合されているかを追いやすくなります。

SELECT u.id, u.name, o.total
FROM users AS u
JOIN orders AS o
  ON u.id = o.user_id
WHERE o.status = 'paid';

キーワードの大文字・小文字は統一する

SELECTやFROMのような予約語を大文字にするか小文字にするかは、どちらでも動作上は問題ありません。ただし、チームやプロジェクト内で統一しないと、見た目がばらついて読みにくくなります。大文字で統一すると、テーブル名やカラム名(通常は小文字)と視覚的に区別しやすくなるため、大文字ルールが広く使われています。

サブクエリはインデントで階層を示す

サブクエリ(SELECT文の中にさらにSELECT文がある構造)は、外側のSQLより1段階深くインデントします。かっこの対応とインデントの深さが一致していれば、どこからどこまでが1つのサブクエリかが視覚的に分かります。

読みにくいSQLはバグの温床になる

整形されていないSQLは、見た目の問題だけでなく、条件の見落としや、意図しないJOINの範囲といった実害につながります。長いWHERE句の中でANDとORの優先順位を見誤ったり、複数行にまたがるはずの条件を1行の途中で見落としたりするミスは、整形されていれば防げることが多いです。

まとめ

SQLの整形は、句ごとの改行、条件のインデント、JOINの1行化、キーワードの大文字小文字の統一という、いくつかのルールの積み重ねです。手作業で整えるのは手間がかかるため、ツールに任せるのが効率的です。

SQL整形ツールでは、これらのルールに沿った整形と、1行への圧縮をその場で確認できます。

戻る