🗄️ SQL フォーマッター
SQL クエリをきれいに整形・ミニファイします。SELECT / INSERT / UPDATE / DELETE / JOIN / WITH 対応。
完全無料
登録不要
ブラウザ完結
5 言語対応
ダークモード
🔗 関連ツール
📖 つまずきやすいポイント
SQL を読みやすく整形します (逆にミニファイもできます)。処理はブラウザ内で完結し、クエリはどこにも送信されません。整形するのは見た目だけで、構文の妥当性は検証していません — 動かないクエリも整形されますし、方言 (MySQL / PostgreSQL / SQL Server など) の独自構文は、整形の結果が不自然になることがあります。実行して確かめるまでが 1 セットだと考えてください。
| ケース | 何が起きるか | どうする |
|---|---|---|
| 整形したら結果が変わった | 原因はほぼコメントと文字列リテラルの扱いです。-- 形式のコメントは行末までが対象なので、改行位置が変わると、コメントアウトされる範囲が変わります。整形で 1 行が複数行に分かれた瞬間、それまで生きていた条件が丸ごとコメントに入る、あるいは逆に外れる、という事故が起きます。文字列の中の改行やスペースが詰められた場合も、当然 LIKE の一致が変わります。 |
コメントは -- ではなく /* … */ で書いてください。範囲が明示されているので、改行位置が変わっても意味が変わりません。整形前と整形後で EXPLAIN の実行計画を比較すると、意図しない変化を確実に検出できます。実行計画が同じなら、少なくともオプティマイザから見て同じクエリです。 |
| 整形したクエリをそのままコードに埋める | 見やすくなった SQL を文字列としてコードに貼るとき、値を文字列連結で埋め込むと SQL インジェクションになります。整形の作業中はリテラルの値が入った状態のクエリを扱うため、そのまま "WHERE id = " + id の形にしてしまう流れが自然に生まれます。整形ツールを経由する作業は、この事故が起きやすい局面です。 |
値は必ずプレースホルダにしてください — WHERE id = ? や WHERE id = :id で、実際の値はドライバに渡します。プレースホルダを使えないのはテーブル名・カラム名・ORDER BY の方向で、これらは許可リストとの照合で解決します (ASC と DESC のどちらかだけを通す、など)。整形して読みやすくなった段階で、リテラルが残っていないかを目で確認するのを習慣にしてください。 |
| 遅いクエリを整形しても速くならない | 当然ですが、整形は実行計画に一切影響しません。読みやすくなったことで原因が見えるようになることはありますが、それは人間側の効果です。SQL が遅い原因の大半はインデックスが使われていないことで、書き方の綺麗さとは無関係です。 | EXPLAIN ANALYZE を実行して、実際に読んだ行数を見てください。返る行が 10 件なのに 100 万行スキャンしているなら、そこが原因です。よくあるのは、WHERE 句でカラムに関数を掛けている (WHERE DATE(created_at) = ...) パターンで、これはインデックスを無効化します。WHERE created_at >= ... AND created_at < ... と範囲で書き換えるだけで使えるようになります。SELECT * をやめて必要なカラムだけにすると、カバリングインデックスが効くこともあります。 |
チームで書式を揃えたいなら、この画面で毎回整形するのではなく、リンタをリポジトリに入れてください。sqlfluff のようなツールなら、書式だけでなく命名規則や危険な書き方 (SELECT *、WHERE の無い UPDATE など) も検出できます。マイグレーションファイルに対して CI で走らせておくと、レビューでの指摘が「読みやすさ」から「設計」に移ります。この画面が向くのは、他人から渡された読みにくいクエリを、その場で 1 回だけ読める形にする用途です。
📖 使い方
-
1
動作とオプションを設定整形(Beautify)またはミニファイ(Minify)を選択し、インデント幅とキーワードの大文字/小文字を設定します。
-
2
SQL を入力左側の入力欄に SQL クエリを貼り付けます。「サンプル」ボタンで SELECT を含む複雑なクエリを確認できます。
-
3
結果をコピー整形またはミニファイされた SQL が右側に表示されます。「コピー」ボタンでクリップボードにコピーします。
❓ よくある質問
どの SQL 方言に対応していますか?
標準 SQL および SELECT / INSERT / UPDATE / DELETE / WITH / JOIN などの主要な構文をサポートします。ストアドプロシージャなどの方言固有の構文は部分的なサポートとなります。
コメントは保持されますか?
整形モードではコメント(-- と /* */)を保持します。ミニファイモードではコメントは削除されます。
文字列リテラル内の内容は変更されますか?
いいえ。文字列リテラル(シングルクォートで囲まれた値)の内容はキーワード変換の対象外です。
🐛 このツールで問題が発生しましたか?
完全無料・登録不要。再現手順だけでも結構です。届いたご報告は運営者に直接届き、修正の参考にします。
✅
ご報告ありがとうございます!
運営者に届きました。改善の参考にさせていただきます。