SQL整形ツール(ORM生成SQL・複雑なJOIN句にも対応)

SQL整形ツール

SQL

SQL整形ツールについて

概要

SQLフォーマッターは、読みにくいSQLクエリを整形・可読化するオンラインツールです。JOIN、WHERE、GROUP BYなどのキーワードを適切なインデントで整列させ、コードレビューやドキュメント作成を効率化します。

ORMやBIツールが自動生成するSQLは1行に連結されていることが多く、JOIN条件やサブクエリの入れ子構造を目で追うのが困難です。手作業でインデントを揃え直すのは時間がかかるうえ、SELECT句のカラム数が多いクエリでは特に骨が折れます。本ツールはそうした整形作業を数秒で終わらせ、レビューやチューニングに集中できるようにします。

使い方

  1. 1テキストエリアにSQLクエリを貼り付けます。
  2. 2「インデント」でスペース数を選択します。
  3. 3「モード」で整形方法(標準整形 / 右揃え/表形式 / 圧縮)を選択します。
  4. 4「予約語」・「識別子」で大文字 / 小文字 / 変更しない を選択します。
  5. 5「変換」ボタンをクリックすると整形結果が表示されます。

補足: 複数のSQL文をセミコロン区切りで一括貼り付けても整形できます。マイグレーションファイルなど、複数のCREATE TABLE文をまとめて確認したい場合に活用してください。

仕様・用語解説

  • 「モード」: 整形方法の選択
    • 「標準整形」: 各キーワードを改行・インデントして読みやすく整形します。
    • 「右揃え/表形式」: キーワードを右揃えでタブ状に整列し、SQLキーワードが縦に並びます。
    • 「圧縮」: 改行・余分なスペースを除去して1行に圧縮します。
  • 「予約語」: SQLキーワードの大文字/小文字変換
    • 「大文字」: SELECT、FROMなどのSQLキーワードをすべて大文字に変換します。
    • 「小文字」: SQLキーワードをすべて小文字に変換します。
    • 「変更しない」: 入力のケースをそのまま保持します。
  • 「識別子」: テーブル名やカラム名の大文字/小文字を変換します。大文字 / 小文字 / 変更しない から選択できます。
  • 「インデント」: 出力するSQLのインデントに使用するスペース数を設定します(例: 2スペース、4スペース)。
  • 対応SQL方言について: 本ツールはMySQL・PostgreSQL・SQLiteなど主要な方言に共通する標準的なSQL構文(SELECT / INSERT / UPDATE / DELETE / CREATE TABLE等)の整形に対応しています。ただし、PL/pgSQLのストアドプロシージャや、T-SQL固有のBEGIN...END構文など、方言に強く依存する拡張構文は整形結果が崩れる場合があります。
  • コメントの扱い: 行コメント(--)およびブロックコメント(/* */)は、位置情報を保持したまま整形後のクエリに引き継がれます。ORMが自動生成したクエリに付与されるバインドパラメータのコメントなどもそのまま残ります。

ユースケース

  • コードレビュー前にSQLを整理して可読性を向上させたい場合。
  • ORMが自動生成したクエリのデバッグ・解析時。
  • ドキュメント用に整形されたSQLスニペットを作成したい場合。
  • ORMが生成したSQLに混在するバインドパラメータやコメントが多く読みにくい場合の整理。
  • 複数テーブルを結合した「SELECT * FROM orders o JOIN users u ON o.user_id = u.id JOIN items i ON o.item_id = i.id WHERE...」のような1行クエリを整形し、JOIN条件の対応関係を確認しながらパフォーマンスチューニングを行う場合。
  • スロークエリログに出力された整形前のSQLを貼り付けて可読化し、実行計画(EXPLAIN)を確認する前の下調べとして使う場合。

よくある質問

MySQL・PostgreSQL・SQL Serverのどの方言に対応していますか
主要な方言に共通する標準SQL構文の整形に対応しています。方言固有の拡張構文(PL/pgSQLのプロシージャ、T-SQLのBEGIN...END、MySQLのバッククォート識別子など)は整形結果が意図と異なる場合があるため、整形後は必ず内容を確認してください。
貼り付けたSQLに含まれるテーブル名やデータはサーバーに送信されますか
いいえ。整形処理はブラウザ内で完結しており、入力したSQLが外部に送信されることはありません。本番データベースのスキーマ情報を含むクエリでも安心してご利用いただけます。
ストアドプロシージャやトリガーの定義も整形できますか
単純なDML/DDL文の整形を主眼としているため、ストアドプロシージャやトリガーに含まれる制御構文(IF、LOOP、CURSORなど)は正しく整形されない場合があります。SELECT文などクエリ本体部分のみを抜き出してご利用ください。
複数のSQL文をまとめて整形できますか
はい。セミコロンで区切られた複数のSQL文を一度に貼り付けると、それぞれが個別に整形されます。マイグレーションファイルのように複数のCREATE TABLE文が並んでいる場合にも利用できます。
「右揃え/表形式」モードはどのような場面で使うと便利ですか
SELECT・FROM・WHEREなどのキーワードを右揃えで縦に整列させるため、キーワードの位置が視覚的に揃い、条件句が多い長いクエリでも構造を把握しやすくなります。ドキュメントやプレゼン資料にSQLを掲載する際にもよく使われます。
整形結果の予約語が想定と異なる大文字/小文字になるのはなぜですか
「予約語」オプションが「大文字」または「小文字」に設定されている場合、SELECTやFROMなどのSQLキーワードが自動的に変換されます。入力時のケースをそのまま維持したい場合は「変更しない」を選択してください。