MySQLフォーマッター
MySQLのクエリやスクリプトを、バッククォート識別子、文字列内のバックスラッシュエスケープ、#コメント、DELIMITERブロックに対応したMySQLのルールで整形します。各句を独立した行に配置し、列と条件をインデントします。ON DUPLICATE KEY UPDATEのようなMySQL句は、まとめて配置されます。閉じられていない文字列、コメント、括弧は行番号と列番号とともに報告されるため、開発者がデータベースコードを読み、レビューしやすくなります。
よくある質問
フォーマッターはどのMySQL構文に対応していますか?
バッククォート識別子、バックスラッシュエスケープと二重引用符に対応した単一引用符・二重引用符の文字列、16進数・ビット・各国語文字列リテラル(X'FF'、B'101'、N'text'など)、_utf8mb4'text'のような文字セット導入子、@user変数を読み取ります。リテラル内の内容はすべて記述どおりに保持されます。
コメントはどのように扱われますか?
ハッシュコメント(#)と二重ダッシュコメント(--)はそのまま保持されます。MySQLと同様に、二重ダッシュの後に空白または改行が続く場合にのみコメントが始まるため、a--1は式のままです。実行可能なバージョンコメントは記述どおりに保持されます。
クエリはどのように整形されますか?
SELECT、FROM、WHERE、GROUP BY、HAVING、ORDER BY、LIMITなどの主要な句は、それぞれ独立した行に配置され、その内容は下の行にインデントされます。選択列は1行に1つずつ並び、ANDとORは新しい行から始まり、各JOINもそれぞれ独立した行に配置されます。
MySQL固有の句に対応していますか?
はい。ON DUPLICATE KEY UPDATE、LOCK IN SHARE MODE、FOR UPDATE、FOR SHAREは、複数行に分割されず、1つの句としてまとめて保持されます。
ストアドプロシージャやトリガーを整形できますか?
はい。DELIMITERコマンドは独立した行に残り、//や$$などのカスタム区切り文字でステートメントを終了します。IF、WHILE、LOOPを含むBEGINとENDのブロックはインデントされます。
キーワードの大文字と小文字は変わりますか?
いいえ。キーワード、関数名、識別子は入力時の大文字と小文字を保持するため、selectもSELECTもそのまま残ります。空白と改行だけが変わります。
フォーマッターはクエリの妥当性を確認しますか?
文字列、引用符付き識別子、ブロックコメントが閉じられていることと、括弧が対応していることを確認し、問題を行番号と列番号とともに報告します。クエリを実行したり、テーブル名やMySQLの文法全体を検証したりはしません。
インデントを変更できますか?
はい。各レベルのインデントに2つまたは4つのスペース、あるいはタブを選べます。短い括弧付きリストは1行に収まり、長いリストやサブクエリはインデントされたブロックになります。
入力の最大サイズはどれくらいですか?
リクエストごとに最大1 MBのSQLを処理でき、1つのステートメントは最大128 KBです。多数のステートメントを含むスクリプトは、ステートメントごとに整形され、空行で区切られます。
私のSQLは保存されますか?
いいえ。クエリはメモリ上で整形され、すぐに返されます。保存されることはなく、記録されるのはリクエストのサイズだけです。