SQL整形ツール(フォーマッター)
読みにくいSQLを貼り付けると、入力と同時にきれいに整形します。句ごとに改行し、列や条件をそろえ、サブクエリやCASE式をインデントし、CREATE TABLEは1列1行にします。方言(MySQL、PostgreSQL、SQL Server、Oracle、SQLite、BigQuery)を選べば、バッククォートや[角かっこ]、$$文字列、::キャストも正しく扱います。予約語の大文字・小文字、インデント幅、カンマを行頭に置くか行末に置くかも選べます。閉じていない引用符、かっこの対応ミス、WHEREのないDELETE・UPDATEを警告し、1行に圧縮したり、Python・JavaScript・Java・C#・PHPの文字列としてコピーしたりもできます。SQLはブラウザの外に出ません。
無料・登録不要
使い方
- SQLを貼り付けるか、.sqlファイルを開きます。
- データベースの方言、予約語の大文字・小文字、インデントを選びます。
- 整形されたSQLを確認し、下に表示された問題を直します。
- コピー、.sqlでダウンロード、またはコード用文字列としてコピーします。
このツールの特長
読みやすいレイアウト
句ごとの改行、列と条件の整列、サブクエリ・WITH句・CASE式のインデント。
7つの方言
MySQLのバッククォートと#コメント、PostgreSQLの$$と::、T-SQLの[ ]とGO、Oracle、SQLite、BigQuery。
社内ルールに合わせる
予約語の大文字・小文字、スペース2・4やタブ、カンマ前置・後置を選択。
エラーチェック
閉じていない引用符やコメント、かっこの対応ミス、WHEREなしのDELETE・UPDATEを検出。
圧縮(1行化)
SQLを1行にまとめます。コメントやオプティマイザヒントを残すこともできます。
コード用にコピー
Python、JavaScript、Java、C#、PHPの文字列としてそのまま貼れる形でコピー。
SQLを整形するメリット
ログやORM(MyBatis、Hibernateなど)、BIツールから取り出したSQLは、1行にずらっと並んでいることがよくあります。整形すると句ごとに行が分かれ、何を取得し、どのテーブルを結合し、どう絞り込んでいるかが一目でわかります。レビューがしやすくなり、Gitの差分も小さくなり、結合条件の書き忘れのようなミスにも気づきやすくなります。
日本でよく使われるSQLコーディング規約
日本の開発現場では、予約語を大文字、テーブル名や列名を小文字にし、SELECT句は1列1行で書くスタイルが一般的です。SIerの規約では、列をコメントアウトしやすく差分も見やすいことから「カンマ前置(行頭カンマ)」が採用されることも多くあります。このツールの「カンマの位置」を「行頭」にすれば、そのスタイルで整形できます。チームで規約を統一しておくと、レビューの手間がぐっと減ります。
方言の選び方
- MySQL / MariaDB:`バッククォート`の識別子、#コメント、文字列内のバックスラッシュ
- PostgreSQL:$$で囲んだ関数本体、::キャスト、$1パラメータ
- SQL Server:[角かっこ]の識別子、@変数、TOP、GOによるバッチ区切り
- Oracle:圧縮時も /*+ ヒント句 */ を残します
- BigQuery・SQLite:バッククォートの識別子、それ以外は標準SQL
実行前のチェックポイント
- WHEREのないUPDATE・DELETEは全件更新になります。先に同じWHEREでSELECTして件数を確認しましょう
- 危険な更新はトランザクション内で実行し、ROLLBACKできるようにする
- アプリのコードではSELECT *を避け、必要な列を書く
- ユーザー入力を文字列連結でSQLに入れず、プレースホルダ(?、$1、@id)を使う
よくある質問
無料で使えますか?
はい。登録不要で、ブラウザで扱える範囲ならサイズ制限もありません。
SQLはサーバーに送信されますか?
いいえ。整形はブラウザ内で行うため、テーブル名やクエリ内のデータが外部に出ることはありません。
整形するとSQLの動作は変わりますか?
変わりません。変わるのは空白、改行、予約語の大文字・小文字だけで、文字列・識別子・コメントはそのまま残ります。
対応しているデータベースは?
標準SQL、MySQL・MariaDB、PostgreSQL、SQL Server、Oracle、SQLite、BigQueryです。
ストアドプロシージャも整形できますか?
はい、文ごとに整形します。非常に複雑なPL/SQLやT-SQLの制御構文は、少し手直しが必要な場合があります。
SQLの文法チェックはできますか?
閉じていない引用符やかっこの対応ミスなど、よくある構文エラーは検出しますが、テーブル名や列名が実際に存在するかは確認しません。
関連ツール
作りたいものがありますか?
作りたい内容を教えてください。
シンプルなWebサイトから本格的なアプリ、AIソリューション、自動化、カスタムシステムまで、作りたいものをお聞かせください。