データベース・SQLツール

SQL整形クエリの段落と構造を読み取る

クエリの段落と構造を読み取る

SQL整形

SQL入力

結果

ブラウザー内で処理します。データベースへの接続や履歴の保存はありません。

方言と表示

接続、スキーマ照会、権限確認、EXPLAINは行いません。整形できても構文が正しいとは限らず、ASTが得られても実際の環境で動くことは保証できません。 構造キーワードのみ大小文字を変えます。ACTIONやNOなど文脈依存の語は識別子を守るため元の表記を維持します。

入力は100,000 UTF-16単位、20,000トークン、括弧50階層、文200個まで。ASTは5,000トークンと30階層までです。出力は1,000,000単位までで、プレビューは20,000ずつ展開し、書き出しは全量です。

SQLを入力するかサンプルを選んでください。

SQL整形は、ログから取り出した長いクエリや、レビュー前の読みにくい文を確認するときに役立ちます。まず作成元の方言を選びます。同じ引用符でもデータベースによって意味が変わるためです。

SQLフォーマッターで結合や入れ子を見やすくし、SQL圧縮で外側の空白を減らせます。SQLフォーマットの成功と、実際のデータベースで実行できることは別に確認してください。

SQL整形を使う場面

句のつながりを追いやすく

SQL整形は句ごとに改行し、字下げをそろえます。文字列、数値の表記、コメントを元の入力と照合し、保持できない書き換えは出力せずにエラーとして扱います。

密集したクエリが字下げ付きの行へ変わり、文字列とコメントの色付き部分は保たれている。

見た目と構文木を分けて確認

ASTモードは別のパーサーで4方言の対応範囲を解析します。Oracleは整形のみ対応し、構文木は提供しません。構文木はパーサーの解釈であり、実行計画ではありません。

クエリから枝分かれした構文木と、独立した整形テキストが並んでいる。

方言から表示方法を決める

01

実際の方言を指定

MySQL、PostgreSQL、SQLite、SQL Server、Oracleでは引用規則が異なります。PostgreSQLを選んでもMySQLのクエリは翻訳されず、その操作の解析規則が切り替わります。

02

整形・圧縮・ASTを選ぶ

整形は読みやすさ、圧縮は空白削減、ASTはJSONでの構造確認に使います。字下げや大小文字は整形用です。構文木には数値と複雑さの制限があります。

03

置換はプレビューで確認

自動処理は350ミリ秒待って更新します。無効にするとボタンやCtrl/Cmd+Enterで実行できます。結果を入力に戻す操作は確認後に適用し、設定と結果ごと元に戻せます。

出力ごとの役割

5方言の整形

sql-formatterを使い、2スペース・4スペース・タブを選べます。キーワードは大文字・小文字・元の表記に対応し、識別子・関数・型名の大小文字は設定で維持します。 構造キーワードのみ大小文字を変えます。ACTIONやNOなど文脈依存の語は識別子を守るため元の表記を維持します。

コメントを残す圧縮

トークン外の空白を減らし、行コメント、ブロックコメント、実行用ヒントを残します。PostgreSQLで隣り合う文字列に必要な改行も維持します。

独立した構文木

node-sql-parserが対応するMySQL、PostgreSQL、SQLite、Transact-SQLの部分集合を解析します。JSONのエクスポートは現在の構文木のみで、編集履歴は含みません。

実行前に確認すべき境界

データベースでは実行しない
接続、スキーマ照会、権限確認、EXPLAINは行いません。整形できても構文が正しいとは限らず、ASTが得られても実際の環境で動くことは保証できません。
スクリプト全体には未対応
ストアドプロシージャ、トリガー、関数定義、BEGIN/DECLAREブロック、GOバッチ、独自DELIMITER、テンプレート、クライアントのメタコマンドは対象外です。OracleのASTはありません。
ASTの数値精度
十進整数と有効数字15桁までの通常の小数を受け付け、数値ノードを入力と照合します。指数・十六進表記はASTで拒否します。整形と圧縮は元の数値表記を残します。 小数点の前に数字が必要です(.5ではなく0.5)。
改行が必要なこともある
圧縮結果は必ずしも1行になりません。--の後の改行を消すと後続文までコメントになるためです。ヒントや実行コメントのサーバー上の効果は判定しません。
処理量の上限
入力は100,000 UTF-16単位、20,000トークン、括弧50階層、文200個まで。ASTは5,000トークンと30階層までです。出力は1,000,000単位までで、プレビューは20,000ずつ展開し、書き出しは全量です。

SQL整形についての質問

SQLクエリはどのように整形するとよいですか?

方言と字下げを統一すると、結合・条件・サブクエリを追いやすくなります。このSQL整形では表示と構文木を分離しているため、目的に合う結果を選び、実際のデータベースに照らして確認してください。

SQLのキーワードを大文字にする理由はありますか?

句を目立たせるための表記上の慣習です。プロジェクトが小文字を使うなら小文字か元の表記を選べます。文字列や引用された識別子を大文字にする設定ではありません。

行数を増やしすぎずにSQLを整理できますか?

圧縮モードを選ぶと、トークンやコメントを残して外側の空白を減らします。行コメントの後やPostgreSQLの隣接文字列に必要な改行は残るため、完全な1行化とは異なります。

MySQLのクエリを実行せずに妥当性を確認できますか?

ASTモードは、そのパーサーの文法が入力を受け付けるかを確認します。テーブル、列の型、権限、サーバー固有の動作は調べません。整形だけの成功はレイアウト処理の結果です。

メタコマンドがあると整形に失敗するのはなぜですか?

psqlのバックスラッシュコマンドなどは、通常のSQLではなくクライアントの命令です。元のスクリプトを別に保持し、整形したいSQL部分を取り出してください。

整形の問題を見つけましたか?

次のクエリを確認する

SQL整形で読みやすいテキスト、圧縮テキスト、対応する構文木を確認し、エディターに戻す内容を選んでください。