SQL フォーマッター — SQL クエリを整形・美化
カスタマイズ可能な indent、キーワードの大文字・小文字、方言サポートで SQL クエリを整形・美化できます。ブラウザ内で動作し、アップロードは不要です。
SQL Formatter
Format and beautify SQL queries. Works entirely in your browser — no uploads.
SQL は普遍的なクエリ言語ですが、整形されていない SQL は普遍的なコードレビューの不満です。サブクエリ、ウィンドウ関数、CTE を含む複数テーブルの JOIN は、統一された空白の規則がなく、UPPER、lower、Mixed が混在したキーワード表記のまま 30 行にも及ぶことがあります。フォーマッターはこの問題の機械的な部分、つまり SQL の解析、キーワード・識別子・リテラル・演算子の識別、一定の indent・改行・大文字・小文字への書き換えを解決します。整形後も同じクエリであり、データベースは同一に実行しますが、可読性が高く、diff に適し、スタイルガイドに準拠した形で貼り付けられます。フォーマッターはブラウザ内で実行されるため、SQL がデバイスから離れることはありません。クエリにビジネスロジックを示すテーブル名、列名、JOIN 条件が含まれる場合に特に役立ちます。
使い方
SQL を貼り付ける
SQL クエリ、スクリプト、または DDL 文を貼り付けます。フォーマッターが SQL を解析し、一定の indent、改行、キーワードの大文字・小文字で書き直します。
整形オプションを選択する
indent の幅、キーワードの大文字・小文字(upper / lower / capitalize)、カンマの位置(先頭 / 末尾)、方言のヒント(PostgreSQL、MySQL、SQLite、T-SQL、Standard SQL)を選択します。
整形済みの SQL をコピーする
整形結果をクリップボードにコピーします。コメント、文字列リテラル、クエリ構造は保持され、変更されるのは空白とキーワードの大文字・小文字だけです。
よくある質問
特定の SQL 方言に対応していますか?
PostgreSQL、MySQL、SQLite、Microsoft T-SQL、Standard SQL の方言ヒントに対応しています。方言によってキーワードの認識と関数名の大文字・小文字が変わりますが、構文は検証しません。構文の検証はパーサーの役割であり、フォーマッターの役割ではありません。
クエリの意味は変わりませんか?
いいえ。変更されるのは空白とキーワードの大文字・小文字だけです。文字列リテラル、識別子、数字、演算子はそのまま保持されます。コメントも変更されません。どのデータベースでも、整形前後のクエリは同じクエリプランを生成します。
サブクエリと CTE はどのように indent されますか?
サブクエリは親要素より 1 レベル深く indent されます。CTE(WITH 句)は CTE 名を 1 行に配置し、本体を indent して整形します。ネストされた CTE と深くネストされたサブクエリは、ネストの深さに応じて indent されます。
DDL 文を整形できますか?
はい。CREATE TABLE、ALTER TABLE、CREATE INDEX などの DDL 文を整形し、スキーマオブジェクトを揃えます。CREATE TABLE の列定義はテーブル名の下に indent されます。
制限事項
- 構文検証なしフォーマッターは空白とキーワードの大文字・小文字を書き換えます。SQL が有効か、参照されたオブジェクトが存在するかは確認しません。無効な SQL もエラーなく整形され、実行できない出力になる場合があります。
- クエリの最適化なし空白と大文字・小文字を除けば、出力される SQL は入力と構文的に同一です。フォーマッターはパフォーマンス向上のためにクエリを書き換えません。
- ストアドプロシージャ本体は未整形CREATE PROCEDURE、CREATE FUNCTION、匿名ブロックの本体は文字列リテラルとして扱われ、変更されません。外側の DDL 構造は整形されます。
プラットフォーム別の注意点
- macOS
- ターミナル、ログファイル、コードレビューコメントからコピーした SQL を一度だけ整形する場合は、ブラウザツールが便利です。
- Web
- クライアント側で実行されます。貼り付けた SQL がローカル環境の外へ送信されることはありません。