この記事に関連するツール
ブラウザ上ですぐに試せます。記事の内容を確認しながら使うと、作業の流れをつかみやすくなります。
SQLは動けばよい、で済ませるとレビューが重くなります。
特にJOINやサブクエリが入ると、整形されていないSQLは条件の見落としにつながります。
SQL Formatterを使うと、クエリの構造を先に整えてからレビューできます。
こんなSQLを読むとき
select users.id, users.name, count(orders.id) as order_count from users left join orders on users.id = orders.user_id where users.status = 'active' group by users.id, users.name order by order_count desc;
整形すると、読みたい単位が分かれます。
SELECT
users.id,
users.name,
COUNT(orders.id) AS order_count
FROM users
LEFT JOIN orders
ON users.id = orders.user_id
WHERE users.status = 'active'
GROUP BY
users.id,
users.name
ORDER BY order_count DESC;
この形なら、JOIN条件、絞り込み条件、集計条件を別々に確認できます。
実例:APIデバッグとSQL確認をつなげる
APIのレスポンスが想定と違うときは、ブラウザのNetworkタブからリクエストをCurlとしてコピーし、再現コードを作ってからSQLログを確認する流れがよくあります。
curl 'https://example.com/api/users?status=active' \
-H 'Authorization: Bearer token'
リクエスト条件を再現できたら、サーバーログに出たSQLを整形します。
select * from users where status = 'active' and deleted_at is null order by created_at desc;
APIの入力条件とSQLの WHERE が対応しているかを見比べることで、フロントエンドのパラメータ漏れなのか、バックエンドのクエリ条件漏れなのかを切り分けやすくなります。
レビュー前に見るポイント
- SELECT句に不要な列が入っていない
- JOIN条件が意図したキーになっている
- WHERE句で除外しすぎていない
- GROUP BYの列がSELECT句と対応している
- ORDER BYが期待する並び順になっている
整形はSQLを正しくする作業ではありません。
ただし、正しくない箇所を見つけやすくする作業としてかなり有効です。
SQL Builderとの使い分け
SQL Builderでクエリの骨組みを作り、SQL Formatterで最終確認する流れにすると、作成とレビューの役割を分けられます。
SQLを書き慣れていない人の学習にも、レビュー前のセルフチェックにも使いやすい流れです。
Curlコマンド変換ツールを併用すると、API再現コード、SQL整形、レビューコメントを同じ流れで作れます。再現条件を先に固定してからSQLを見ると、調査の前提がずれにくくなります。
チームで整形ルールをそろえる
レビューが重くなる原因のひとつに、人によってSQLの書き方がバラバラ、という問題があります。インデントの幅、キーワードの大文字小文字、カンマを行頭に置くか行末に置くか——こうした差は、本質的でない部分でレビュアーの注意を奪います。
整形ツールを「コミット前に必ず通す」と決めておくと、SQLの見た目が一定になり、差分レビューでも変更の中身だけに集中できます。とくに複数人が同じクエリを触るプロジェクトでは、整形済みを前提にするだけでPullリクエストのノイズがはっきり減ります。
整形は機械的な作業なので、書く人の好みやスキルに依存しません。「読みやすさを人に求めず、ツールに任せる」という割り切りが、レビュー全体の速度を底上げします。
よくある質問
整形でSQLの意味が変わることはありますか?
ありません。空白・改行・キーワードの大文字小文字を整えるだけで、句の順序や条件、JOINの関係は変更しません。実行結果は同じまま、読みやすさだけが上がります。
MySQL や PostgreSQL など方言ごとに整形できますか?
はい。主要な方言に対応しており、方言を選べばその固有キーワードも崩さずに整形します。バッククォートやダブルクォートなど、識別子の引用符の扱いも方言に合わせられます。
コメント付きのSQLでも崩れませんか?
-- や /* */ のコメントは保持されます。レビュー用に残したメモや、一時的に外した条件のコメントアウトをそのままにして整形できます。
入力したSQLは外部に送信されますか?
いいえ。整形はすべてブラウザ内で完結します。本番のテーブル名・カラム名・条件値が含まれていても、サーバーへ送られることはありません。