SELECT・FROM・WHERE・JOINなどのキーワードを基準に自動で改行・インデントし、 読みにくいSQLを瞬時に整形します。インデント幅やキーワードの表記も自由にカスタマイズ可能。
SQLを入力
整形結果
文字数
299
行数
20
サイズ
299B
整形オプション
インデント(整形時)
キーワードの表記
例:SELECT / select / Select(入力のまま)
ADVICE
本ツールはキーワード単位でのシンプルな整形ルールを採用しています。複雑にネストしたサブクエリや特殊な構文では、意図した改行位置と異なる場合があります。整形後は必ず内容をご確認ください。
SQLフォーマッターとは?読みにくいSQLを自動で整形する仕組み
SQLフォーマッターは、1行にまとめて書かれたSQLや、インデントがバラバラなSQLを、SELECT・FROM・WHERE・JOIN・GROUP BYなどのキーワードを基準に自動改行・インデントし、読みやすい形に整えるツールです。
本ツールは完全にブラウザ内で処理が完結するため、社内システムのテーブル名やカラム名を含むSQLを貼り付けても、外部サーバーに送信される心配がありません。整形(フォーマット)と、逆に1行にまとめる圧縮(ミニファイ)の両方に対応しています。
インデント幅(スペース2・4/タブ)、キーワードの大文字・小文字、カラムの改行スタイル、カンマの位置など、チームのコーディング規約に合わせて細かくカスタマイズできる点も特長です。
こんなシーンで便利です
他の人が書いた読みにくいSQLをレビューする時に
1行にまとめて書かれたSQLや、インデントが統一されていないSQLを整形してから読むことで、条件やJOINの構造を素早く把握できます。
ログや管理画面からコピーしたSQLを解析したい時に
スロークエリログやDBの管理画面などからコピーした整形されていないSQL文を貼り付けて、構造を確認したい場合に活用できます。
アプリケーションのコードにSQLを埋め込む時に
整形して確認したSQLを、圧縮(1行化)機能でコンパクトな1行に変換し、そのままソースコードの文字列としてコピー&ペーストできます。
チームでSQLのコーディング規約を揃えたい時に
キーワードの大文字・小文字や、カンマを行頭に置くスタイルなど、チームのルールに合わせたオプションを選んで統一されたフォーマットに整えられます。
使い方は簡単 4ステップ
- テキストエリアにSQL文を貼り付けます(サンプルSQLで動作を確認することもできます)。
- 「整形」または「圧縮」のモードを選択します。
- インデント幅・キーワードの表記・カンマの位置などのオプションを必要に応じて調整します。
- 結果が自動で表示されるので、「コピー」ボタンまたは「.sqlで保存」からご利用ください。
※入力するたびに自動で再計算されるため、ボタンを押す手間なくリアルタイムに結果を確認できます。
ご利用時の注意点
- 本ツールはキーワード単位のシンプルな整形ルールに基づいており、完全な構文解析(パース)は行っていません。複雑にネストしたサブクエリでは意図と異なる改行になる場合があります。
- 整形・圧縮によってSQL文中の識別子や値、演算子の並び順が変更されることはありませんが、実行前には必ず内容をご確認ください。
- 文字列リテラル('...')内の空白や改行、コメント(--、/* */)の内容は変更されません。
- 完全無料・安全:入力したSQLは一切送信されない、通信が発生しないブラウザ完結型を採用しています。
主な整形ルール一覧
本ツールが自動で行う、代表的な整形ルールの一覧です。
| ルール | 整形前 | 整形後 |
|---|---|---|
| 主要キーワードの前で改行 | select id from users where id=1 | SELECT id FROM users WHERE id = 1 |
| カラムをカンマごとに改行 | select id, name, email | SELECT id, name, email |
| AND・ORの前で改行 | where a=1 and b=2 | WHERE a = 1 AND b = 2 |
| JOIN句を自動改行 | from a left join b on a.id=b.id | FROM a LEFT JOIN b ON a.id = b.id |
| サブクエリの中身をインデント | where id in (select id from x) | WHERE id IN ( SELECT id FROM x ) |
※上表は代表的なルールの一例です。実際の改行・インデント幅は選択したオプション(インデント幅・キーワード表記・カンマの位置など)によって変わります。
SQLを整形する理由と、覚えておきたい書き方の基本
なぜSQLの整形が重要なのか、実務でよく使われる書き方の考え方を解説します。
結論:SQLは「キーワードごとの改行」と「インデント」で劇的に読みやすくなる
1行に詰め込まれたSQLは、条件やJOINの数が増えるほど構造を追いにくくなります。
SELECT・FROM・WHERE・JOIN・GROUP BYなど主要なキーワードの前で改行し、条件やサブクエリを一段階インデントするだけで、どのテーブルを結合し、どの条件で絞り込んでいるかが一目でわかるようになります。
キーワードの大文字・小文字、どちらで書くべきか
多くの現場では、SQLキーワード(SELECT・FROM・WHEREなど)は大文字、テーブル名やカラム名などの識別子は小文字で書くスタイルが伝統的に広く使われています。
これは、キーワードと識別子を視覚的に区別しやすくするための慣習です。ただし近年は小文字統一のスタイルガイドを採用するチームも増えており、最終的にはチーム内のコーディング規約に従うことが重要です。
カラムを1行ずつ改行するメリットと、コードレビューでの読みやすさ
SELECT句のカラムを1行ずつ改行して書くと、Gitの差分(diff)でどのカラムが追加・削除されたかが一目でわかるという利点があります。1行にまとめて書かれていると、1つのカラムを追加しただけでも行全体が変更されたように表示されてしまい、レビューがしづらくなります。
SQLを1行に圧縮(ミニファイ)する場面とは
整形されたSQLは人間が読むには適していますが、アプリケーションのコード内に文字列として埋め込んだり、設定ファイルやログに記録したりする際は、改行やコメントを取り除いた1行のSQLのほうが扱いやすい場合があります。開発時は整形して読みやすく保ち、組み込み時は圧縮する、という使い分けがおすすめです。
よくある失敗と対策
1行に詰め込まれたSQLをそのままレビューし、条件の見落としに気づかない
長いWHERE句が1行にまとめられているSQLをそのまま読んでしまい、AND条件の一部を見落としたままレビューを承認してしまう失敗です。
💡 対策・解決策を見る▼
チーム内でSQLの書き方(大文字小文字・インデント)がバラバラになる
メンバーごとにキーワードの大文字・小文字やインデント幅の書き方が異なり、コードベース全体でSQLの見た目が統一されない失敗です。
💡 対策・解決策を見る▼
圧縮したSQLをそのまま本番コードに貼り付け、可読性が失われる
1行に圧縮したSQLをコードに貼り付けたまま放置してしまい、後から他のメンバーがそのSQLの意図を読み解けなくなる失敗です。
💡 対策・解決策を見る▼
サブクエリのネストが深く、どの括弧がどの条件に対応するか分からなくなる
サブクエリを含む複雑なSQLを1行のまま読み進め、括弧の対応関係を誤解してロジックを読み間違えてしまう失敗です。
💡 対策・解決策を見る▼
カンマの付け忘れ・余分なカンマに気づかず構文エラーになる
SELECT句のカラムを手作業で編集した際にカンマを付け忘れたり、最後のカラムに余分なカンマを残したまま実行してエラーになる失敗です。
💡 対策・解決策を見る▼
よくある質問(FAQ)
Q.このSQLフォーマッターはどのようなデータベースのSQLに対応していますか
A. MySQL・PostgreSQL・SQL Server・SQLiteなど、一般的なSELECT・INSERT・UPDATE・DELETEを中心とした標準的なSQL構文の整形に対応しています。キーワード(SELECT、FROM、WHERE、JOIN、GROUP BYなど)を基準に改行・インデントを行うシンプルなルールベースの整形のため、データベース製品ごとの特殊な構文(ストアドプロシージャの独自構文など)は完全には対応していない場合があります。
Q.整形結果のインデント幅やキーワードの大文字・小文字は変更できますか
A. はい、変更できます。インデントは「スペース2つ」「スペース4つ」「タブ」の3種類から選択でき、キーワードの表記も「大文字(SELECT)」「小文字(select)」「そのまま(入力時の表記を維持)」の3種類から選べます。さらに、カラムを1行ずつ改行するかどうかや、カンマを行頭に置くスタイルにも切り替え可能です。
Q.「圧縮(1行化)」機能とは何ですか、どのような場面で使いますか
A. 「圧縮(1行化)」は、整形された(または改行の多い)SQLを不要な空白・改行を取り除いて1行にまとめる機能です。アプリケーションのソースコード内にSQL文字列として埋め込む場合や、ログ・設定ファイルに1行で記録したい場合などに便利です。コメントを削除するかどうかも切り替えられます。
Q.入力したSQLの内容が外部に送信されることはありませんか
A. ありません。本ツールはすべての整形・圧縮処理をブラウザ内のJavaScriptだけで完結する設計になっており、入力したSQL文をサーバーに送信することは一切ありません。社内システムのテーブル名やカラム名を含むSQLでも、外部に情報が漏れる心配なくご利用いただけます。
Q.整形すると、SQLの実行結果や意味が変わってしまうことはありますか
A. 本ツールは改行・インデント・キーワードの大文字小文字・空白の調整のみを行い、SQL文中の識別子(テーブル名・カラム名)や値、演算子の並び順自体は変更しません。そのため通常は実行結果に影響しませんが、整形は必ずしも完全な構文解析に基づくものではないため、整形後は目視での確認をおすすめします。
Q.サブクエリやJOINを含む複雑なSQLもきれいに整形できますか
A. サブクエリは括弧の中がSELECTまたはWITHで始まる場合に自動でインデントを1段階深くして整形します。JOIN句(LEFT JOIN、INNER JOINなど)やAND・OR条件も自動で改行されます。ただし非常に複雑にネストしたクエリでは、意図した改行位置と異なる場合があるため、整形後に内容をご確認いただくことをおすすめします。
Q.コメント(-- や /* */)が含まれるSQLを整形するとどうなりますか
A. 整形モードでは、行コメント(--)・ブロックコメント(/* */)はそのまま保持されます。圧縮モードでは、初期設定でコメントを削除する設定になっていますが、オプションのトグルをオフにすることでコメントを保持したまま1行化することも可能です。
あなたの声で、
このツールをより鋭く。
「こんな機能が欲しい」「ここを直してほしい」といったご意見や、新しいツールのリクエストを募集しています。エンジニアが直接目を通し、開発の参考にさせていただきます。