SQL Format
以下のボックスに SQL を貼り付け、利用可能なオプションを使ってフォーマットしてください。SQL-Format はデータベース管理者が業界や大手テック企業の標準に基づいて作成しました。お楽しみください!
SQL Format とは何か、誰のためのものか
SQL Format は、詰め込まれた SQL、1 行に書かれた SQL、インデントが不揃いな SQL を、すっきりとした予測可能なレイアウトに整える無料のオンラインフォーマッターです。各句は新しい行から始まり、列リストは 1 行に 1 項目ずつ分割され、結合とその条件は所属するテーブルの下にインデントされ、ネストしたクエリは括弧の内側にインデントされます。
SQL を一日中読む人のために作られています。プルリクエストをレビューする開発者、ログから取り出した遅いクエリを解きほぐす DBA、共有前にレポートを整えるアナリスト、そして 1 行に書かれた 300 行分のステートメントを引き継いだことのあるすべての人です。レイアウトはデータベースチームで長く使われてきた慣例に従っており、下記のオプションでチーム独自のスタイルに合わせることができます。
フォーマッターの使い方
- エディタに SQL を貼り付けるか入力します。複数のステートメントをまとめて貼り付けることもでき、セミコロンで分割されて順番にフォーマットされます。
- 必要に応じてオプションを調整します:インデント幅、最大行幅、カンマの位置、キーワードの大文字・小文字、開き括弧を独立した行に置くかどうか。
- フォーマット をクリックするか、Ctrl + Enter(Mac では ⌘ + Enter)を押します。フォーマットされた SQL がエディタ内のテキストを置き換えます。
- コピー で結果をクリップボードにコピーし、クリア で最初からやり直せます。ステータスバーには行数と文字数、およびカーソル位置が表示されます。
書式オプション
出力は 5 つのオプションで制御します。デフォルト(インデント 4 スペース、120 列、末尾カンマ、キーワードは大文字、括弧は同じ行)はほとんどのチームに適しています。各オプションには、さらに多くの例を載せた専用ページがあります。
インデント幅
インデント幅 は、ネストの各レベルで使うスペースの数を 0 以上で設定します。デフォルトは 4 です。入力中のタブ文字は、文字列リテラルと引用符で囲まれた識別子の内部を除き、その数のスペースに置き換えられます。下の例では 2 を使用しています。
SELECT c.name,
SUM(o.total) AS revenue
FROM customers c
JOIN orders o
ON o.customer_id = c.id
WHERE o.status = 'PAID'
GROUP BY c.name最大列数
最大列数 は、フォーマッターが目標とする行幅です(デフォルトは 120)。長い式はこの幅に収まるよう複数行に分割されます。0 にすると折り返しは無効になります。
SELECT order_id,
quantity * unit_price * (1 - discount_rate) * (1 +
tax_rate) + shipping_fee - loyalty_credit AS
amount_due
FROM order_lines
WHERE order_id = 42カンマ
カンマ では、末尾カンマ(各項目の後ろ。デフォルト)と先頭カンマ(次の行の先頭)のどちらかを選びます。先頭カンマにすると列を簡単にコメントアウトでき、末尾に列を追加したときの差分も小さくなります。
SELECT id
,email
,country_code
,created_at
FROM customersキーワード
キーワード は、SELECT、FROM、JOIN などの SQL キーワードを大文字(デフォルト)または小文字に切り替えます。文字列リテラルとコメントは書いたとおりに残ります。
select id,
name
from products
where price > 100
order by name括弧を新しい行に
括弧を新しい行に は、IN の後のサブクエリ、CTE の本体、複数行に分割されたリストなど、ブロックの開き括弧を前の行末に残さず、独立した行に移動します。
SELECT name
FROM customers
WHERE id IN
(
SELECT customer_id
FROM orders
WHERE total > 500
)対応している SQL 方言
このフォーマッターは特定のデータベースに縛られません。主要なエンジンに共通する SQL を扱います:結合、サブクエリ、CASE を含む SELECT、INSERT、UPDATE、DELETE、CREATE TABLE や CREATE VIEW などの一般的な DDL、そして -- 形式と /* */ 形式の両方のコメント(コメントは保持されます)です。
PostgreSQL には追加のサポートがあります::: キャスト、$1 パラメーター、ドル引用符で囲まれた $$ … $$ 本体で、本体内の PL/pgSQL はブロックごとにレイアウトされます。MySQL のバッククォート識別子と SQL Server の [bracket] 識別子はそのまま保持されます。方言の切り替えはないため、SQL Server の GO バッチ区切りなど、特定のデータベースに固有のその他の構文は特別には扱われません。違いについては方言ガイドで説明しています。
入力した SQL の扱い
「フォーマット」をクリックすると、エディタ内の SQL は HTTPS 経由で当社のサーバーに送信され、メモリ上でフォーマットされて、そのままページに返されます。データベース、ファイル、ログに書き込まれることはなく、解析パートナーや広告パートナーと共有されることもありません。それでも、実際のパスワード、キー、個人データはどのオンラインツールにも貼り付けないでください。詳細はプライバシーページをご覧ください。
よくある質問
SQL はどこかに保存されますか?
いいえ。SQL はその 1 回のリクエストのためにサーバーのメモリ上でフォーマットされ、レスポンスとして返されます。データベース、ファイル、ログに保存されることはありません。
フォーマットによってクエリの動作が変わることはありますか?
変更するのは空白、改行、キーワードの大文字・小文字だけで、SQL の順序やロジックは決して変えないよう設計されています。コードを書き換えるツール全般と同様に、本番データベースで実行する前に結果を確認してください。なお、キーワードの大文字・小文字の設定は、SQL キーワードでもある名前(たとえば month という列)にも適用されます。
どのデータベースで使えますか?
PostgreSQL、MySQL、SQL Server、Oracle、Db2、SQLite に共通する SQL をフォーマットし、PostgreSQL のキャスト、パラメーター、PL/pgSQL 本体には追加の処理を行います。方言の選択機能はありません。
サイズの上限はありますか?
はい。1 回のリクエストに含められる SQL は最大 20,000 行です。
複数のステートメントをまとめてフォーマットできますか?
はい。セミコロンで区切ってください。各ステートメントは個別にフォーマットされ、元の順序が保たれます。
料金やアカウントは必要ですか?
いいえ。フォーマッターは無料で使え、登録も不要です。
ガイドとリファレンス
ツール本体に加えて、以下のガイドでは読みやすい SQL の背景にある慣例を解説しています: