SQL フォーマッター
読みにくい SQL を、主要な方言に合わせて一貫したインデントとキーワード表記に整えます。
キーワード
インデント
入力
出力
ここに結果が表示されます
SQL を整形する理由
SQL は 1 本の長い行で書くのは簡単ですが、そのままでは読むのが苦痛です。アプリケーションのログや ORM、同僚からコピーしたクエリは、しばしば大文字小文字が不揃いでインデントもない、切れ目のない文字列として届きます。整形は各句をそれぞれの行に置き、ネストした式をインデントして書き直すので、クエリの形 — 何を選び、どこで結合し、どう絞り込むか — がすぐに見えるようになります。おかげでクエリはレビュー・デバッグ・引き継ぎがしやすくなり、バージョン管理の差分もずっときれいになります。
整形はクエリの動作を決して変えません。空白と、任意でキーワードの大小を調整するだけです。返ってくる文は、貼り付けたものと等価です。
方言と、それが重要な理由
SQL は単一の言語ではなく、密接に関連する言語の一族です。各データベースエンジンは、標準の上に独自のキーワード・関数・構文を加えます。お使いのデータベースに合う方言を選ぶと、フォーマッターはそのエンジン固有の構文を認識し、正しく配置できます。このツールは次に対応しています:
- 標準 SQL — 移植性のあるクエリに適した既定の選択です。
- PostgreSQL — Postgres 固有の構文と関数です。
- MySQL — MySQL と MariaDB の慣習を含みます。
- SQL Server (T-SQL) — Microsoft SQL Server です。
- BigQuery — Google BigQuery の標準 SQL です。
- SQLite — モバイルやアプリで広く使われる組み込みデータベースです。
- Oracle (PL/SQL) — Oracle Database です。
キーワードの大小の慣習
古くからの慣習では、SQL のキーワード (SELECT、FROM、WHERE、JOIN) を大文字で、識別子 (テーブル名や列名) を小文字で書き、構造を表す語をデータから際立たせます。キーワードの大小のコントロールで、それをワンクリックで適用できます:
- 大文字 — キーワードを大文字にします。最も一般的なスタイルです。
- 小文字 — キーワードを小文字にします。一部のチームやスタイルガイドが好みます。
- そのまま — 書いたとおりの大小を残します。
インデントのコントロール (スペース 2 個、4 個、タブ) は、ネストした句やサブクエリをどれだけ深くインデントするかを決めるので、チームの既存のスタイルに合わせられます。
読みやすい SQL のためのヒント
- コードレビューの前に整形する — 一貫して配置されたクエリは、レビュアーにとってはるかに考えやすくなります。
- キーワードの大小を一つに決め、コードベース全体で守る — 差分が一貫します。
- 本番に合う方言を使う — エンジン固有の構文が壊れずに済みます。
- 整形は安全で機械的な手順です: 動作を決して変えないため、まだ完全には理解していないクエリにも気軽に適用できます。
よくある質問
- どの SQL 方言に対応していますか?
- 標準 SQL に加えて、PostgreSQL、MySQL、SQL Server (T-SQL)、BigQuery、SQLite、Oracle (PL/SQL) です。お使いのデータベースに合うものを選ぶと、方言固有の構文が正しく整形されます。
- 整形するとクエリの動作が変わりますか?
- いいえ。整形は空白と、選べばキーワードの大小を調整するだけです。クエリのロジックと結果は変わりません。
- 私の SQL はサーバーに送られますか?
- いいえ。整形は完全にブラウザ内で動きます。貼り付けた内容はアップロードされないため、機密のスキーマやデータを参照するクエリでも安全に整形できます。
- 整形されずにエラーが表示されるのはなぜですか?
- フォーマッターはまず SQL を解析するため、本当に不正な構文 — 対応の取れていない括弧や不完全な文 — は配置できず、代わりに報告されます。構文を直して再度整形してください。
- 複数の文を一度に整形できますか?
- はい。セミコロンで区切った複数の文を貼り付ければ、それぞれ順に整形されます。
- テーブル名や列名まで大文字にされますか?
- いいえ。キーワードの大小の選択は予約された SQL キーワードにのみ影響します。識別子 — テーブル名・列名・別名 — は書いたとおりに残されます。