SQL文を見やすく整形・インデント
SQL文を見やすくインデント整形する無料ツールです。SELECT・JOIN・WHERE・GROUP BY・ORDER BY等のキーワードを適切に改行・インデントし、複雑なクエリの可読性を大幅に向上させます。
複数テーブルのJOINやサブクエリを含むSQLは、1行で書くと構造を把握するのが困難です。このツールで整形することで、テーブル間の関係、フィルタ条件、集計方法が一目でわかるようになります。コードレビュー時のミス発見にも役立ちます。
標準SQL(ANSI SQL)に対応しています。MySQL、PostgreSQL、SQLite、SQL Serverなど、主要なRDBMSのSQLを整形できます。
SQLフォーマット(整形)とは、1行や不揃いに書かれたSQL文に対し、SELECT・FROM・WHERE・JOIN・GROUP BY・ORDER BYといった主要キーワードの前で改行を入れ、節(句)ごとにインデントを付けて構造を見やすくする処理です。SQLは改行や空白の有無に関係なく同じ結果を返すため、整形してもクエリの意味や実行結果は変わりません。あくまで「人間が読みやすい形」に整える、見た目だけの調整です。
整形が役立つ場面は主に3つあります。1つ目は可読性です。複数テーブルのJOINや長いWHERE条件、サブクエリを含むSQLは、1行のままだとどこからどこまでが1つの節なのか把握しづらく、整形によってクエリ全体の骨格が一目で追えるようになります。2つ目はコードレビューです。節ごとに改行・インデントされていると、JOINの結合条件の抜けやWHERE句の論理ミス、不要なカラムの混入などを発見しやすくなり、レビューの質と速度が上がります。3つ目はデバッグです。意図しない結果を返すクエリを調べる際、整形されたSQLは条件を1つずつコメントアウトして切り分けるといった作業がしやすく、原因の特定が容易になります。
このツールはブラウザ内のJavaScriptだけで整形を行うため、入力したSQLは外部に送信されません。整形結果はコピーボタンでそのまま取得でき、エディタやSQLクライアントに貼り付けて利用できます。
本ツールは、あらかじめ登録された主要なSQLキーワードを検出し、その直前で改行します。検出したキーワードは入力時の大文字・小文字にかかわらずすべて大文字へ統一されます。また、カンマ区切りのカラムリストはカンマの後で改行し、インデントを付けて並べます。代表的なキーワードの扱いは次のとおりです。
| キーワード | 整形時の扱い | 役割 |
|---|---|---|
| SELECT | 直前で改行・大文字化 | 取得するカラムの指定 |
| FROM | 直前で改行・大文字化 | 対象テーブルの指定 |
| WHERE | 直前で改行・大文字化 | 絞り込み条件 |
| INNER / LEFT / RIGHT JOIN | 直前で改行・大文字化 | テーブルの結合 |
| ON | 直前で改行・大文字化 | 結合条件の指定 |
| AND / OR | 直前で改行・大文字化 | 条件の連結 |
| GROUP BY | 直前で改行・大文字化 | 集計のグループ化 |
| HAVING | 直前で改行・大文字化 | 集計後の絞り込み |
| ORDER BY | 直前で改行・大文字化 | 並び順の指定 |
| LIMIT | 直前で改行・大文字化 | 取得件数の制限 |
| , (カンマ) | 直後で改行+インデント | カラムリストの区切り |
このほか INSERT INTO・VALUES・UPDATE・SET・DELETE FROM・CREATE TABLE・UNION・CASE / WHEN / THEN / ELSE / END・DISTINCT・IN・LIKE・BETWEEN・EXISTS などのキーワードも検出・大文字化の対象です。テーブル名・カラム名・文字列リテラルといったキーワード以外の部分は、入力した大文字・小文字がそのまま保持されます。
特定の方言専用ではなく、標準SQL(ANSI SQL)の共通キーワードを基準に整形するため、主要なRDBMSのクエリに利用できます。
| SQL方言 / RDBMS | 整形の可否 | 備考 |
|---|---|---|
| MySQL / MariaDB | 対応 | SELECT・JOIN等の共通キーワードを整形 |
| PostgreSQL | 対応 | 標準SQLベースのクエリを整形 |
| SQLite | 対応 | SELECT中心のクエリに有効 |
| SQL Server (T-SQL) | 対応 | 共通キーワードの範囲で整形 |
| Oracle (PL/SQL) | 対応 | 共通キーワードの範囲で整形 |
いずれも、各方言に固有の構文を解析するわけではなく、共通するキーワードへの改行・インデント・大文字化を行う点にご留意ください。