SQLフォーマッター
乱雑なSQLを読みやすいクエリに整えます。
ブラウザ内で動作します。入力した内容はどこにも送信されません。
- 6つのSQL方言
- 大文字・小文字のキーワード
- アップロードなし
SQLの整形方法
- SQLクエリを貼り付けます。
- 方言、キーワードの大文字・小文字、インデント幅を選びます。
- 整形したSQLをコピーまたはダウンロードします。
対応している方言ごとの違い
| 方言 | 考慮している特徴 |
|---|---|
| MySQL | バッククォートで囲む識別子 |
| PostgreSQL | ダブルクォートの識別子と::型キャスト |
| SQL Server | 角括弧の識別子とLIMITの代わりのTOP |
| SQLite | より緩やかなクォートのルール |
| BigQuery | project.dataset.tableのようなバッククォート付きテーブルパス |
| 標準SQL | ANSI形式のダブルクォート識別子、デフォルトの対象 |
整形が変えるもの、変えないもの
- 変わるもの:キーワードの大文字・小文字、句やJOINのインデント、SELECT、FROM、WHERE、JOINの前の改行位置。
- 変わらないもの:テーブル名や列名、文字列リテラルの内容、クエリ内のコメント。
- --や/* */で書かれたコメントは、同じ行やブロックに付いたまま、元の位置を保ちます。
SQLを整形するコツ
- セミコロンで区切った複数のステートメントを貼り付ければ、それぞれがその場で整形されます。
- 実際に使っているデータベースの方言を選ぶと、出力の識別子のクォートがサーバーの想定と一致します。
- 方言のクォート形式がデータベースでエラーになる場合は、標準SQLを試して識別子を手動で調整してください。
- インデント幅を大きくすると、各ネスト階層が際立つため、JOINの多い長いクエリが見やすくなります。
SQLフォーマッターのFAQ
どのSQL方言に対応していますか?
標準SQL、MySQL、PostgreSQL、SQL Server、SQLite、BigQueryに対応しています。それぞれクォートや関数の扱いが少しずつ異なります。
SQLが正しいかどうかをチェックしますか?
いいえ。読みやすいようにクエリを整形するだけです。データベースへの接続やテーブル名・列名の検証は行いません。
クエリが複数入ったファイル全体を一度に整形できますか?
はい。セミコロンで区切られた複数のステートメントを貼り付ければ、それぞれがその場で整形されます。
インデント幅は何を制御しますか?
ネストの各階層に何個のスペースを使うかを設定します。コンパクトなクエリなら2、深くネストしたJOINやサブクエリなら8までです。
SQLはどこかにアップロードされますか?
いいえ。整形はブラウザ内で行われるため、クエリやその中のデータは端末にとどまります。
整形するとクエリの順序が変わりますか?
いいえ。句、JOIN、サブクエリは書いた順序のまま変わりません。変わるのはインデント、改行、キーワードの大文字・小文字だけです。
ストアドプロシージャや変数を含むスクリプトも整形できますか?
通常のSELECT、INSERT、UPDATE、DELETE文はきれいに整形されます。T-SQLの制御構文やPL/pgSQLブロックのような方言固有の手続き型構文は、フォーマッターが標準的なクエリ構文を対象としているため、きれいにインデントされないことがあります。
CTE(WITH句)やウィンドウ関数にも対応していますか?
はい。共通テーブル式やウィンドウ関数も、内部で使用しているsql-formatterライブラリが理解する他の構文と同様に、それぞれのインデントを含めて整形されます。