開発ツール
SQLフォーマッターの使い方・クエリを整形する方法
SQLクエリは書いているうちに長く複雑になりがちです。整形されていないSQLは読みにくく、バグの原因にもなります。この記事では、SQLフォーマッターを使ってクエリを読みやすく整形する方法と、整形のベストプラクティスを解説します。
SQLの整形とは
SQLの整形(フォーマット)とは、キーワードの大文字化、適切な改行・インデントの追加によってクエリの可読性を向上させることです。特にチーム開発では、統一されたフォーマットがコードレビューの効率を大幅に改善します。
整形前と整形後の比較
整形前
select u.id, u.name, u.email, o.order_id, o.total from users u inner join orders o on u.id = o.user_id where u.status = 'active' and o.created_at >= '2025-01-01' order by o.total desc limit 10;
整形後
SELECT
u.id,
u.name,
u.email,
o.order_id,
o.total
FROM
users u
INNER JOIN orders o ON u.id = o.user_id
WHERE
u.status = 'active'
AND o.created_at >= '2025-01-01'
ORDER BY
o.total DESC
LIMIT 10;SQLフォーマットの基本ルール
- キーワードは大文字:
SELECT、FROM、WHEREなどのSQLキーワードは大文字にする - 主要句で改行:SELECT、FROM、WHERE、ORDER BY、GROUP BYなどの主要句は新しい行に配置する
- カラム名はインデント:SELECTの各カラム、WHERE条件はインデントして一覧性を高める
- JOINは明示的に:暗黙のJOIN(カンマ区切り)より
INNER JOINやLEFT JOINを使う
整形が重要な3つの理由
1. バグの早期発見
整形されたSQLはWHERE条件やJOIN条件が一目で分かり、論理的なミスを見つけやすくなります。
2. コードレビューの効率化
統一されたフォーマットにより、レビュアーがクエリの意図を素早く把握できます。
3. メンテナンス性の向上
後から条件を追加・変更する際に、どこを修正すべきか明確になります。
サブクエリの整形
SELECT
u.name,
u.email,
(
SELECT COUNT(*)
FROM orders o
WHERE o.user_id = u.id
) AS order_count
FROM
users u
WHERE
u.created_at >= '2025-01-01';サブクエリは括弧で囲み、内部をさらにインデントして階層構造を明確にします。
よくある質問
SQLキーワードは大文字・小文字どちらが正しいですか?
SQL自体は大文字小文字を区別しませんが、慣習としてキーワードは大文字、テーブル名・カラム名は小文字が一般的です。
整形するとクエリの動作に影響しますか?
いいえ。整形は見た目のみの変更で、クエリの実行結果やパフォーマンスに影響はありません。
どのデータベースに対応していますか?
当ツールはMySQL、PostgreSQL、SQLite、SQL Server、Oracleなど主要なSQLデータベースの構文に対応しています。