weva

SQLフォーマッター

🔎Webアプリを探す

SQLを読みやすく整形・圧縮

SQLを貼り付けて「整形」または「圧縮」を実行すると、読みやすい形に変換します。処理はブラウザ内で完結し、入力内容は送信しません。

0ステートメント0JOINなしCTE-メイン命令0入力行数
入力SQL複数ステートメントにも対応
出力コピー・ダウンロード対応
出力なし
パフォーマンスヒント実行計画はDB・インデックスに依存します

SQLだけから推測できる範囲の注意点を表示します。

ヒントはありません。
SQL学習カード基本構文をサンプルで確認

サンプルを入力欄に挿入して、整形や圧縮を試せます。

SELECT / WHERE

基本の抽出 + 絞り込み

必要な列だけを選び、WHEREで条件を絞り込む基本形です。

  • SELECT * は避けて列を指定する
  • ORDER BY と LIMIT を併用して件数を制御する
SELECT id, name, status
FROM users
WHERE status = 'active'
ORDER BY created_at DESC
LIMIT 20;
JOIN

テーブル結合の基本

LEFT JOIN を使うと主テーブルの行を保ったまま関連データを取得できます。

  • JOIN条件は必ずON/USINGで明示
  • 結合キーにインデックスがあると高速化しやすい
SELECT o.id, u.name, o.total
FROM orders o
LEFT JOIN users u ON u.id = o.user_id
WHERE o.created_at >= DATE '2024-01-01';
GROUP BY

集計とHAVING

GROUP BY は集計、HAVING は集計結果に対する条件です。

  • HAVING は集計後の条件
  • ORDER BY でランキングを作れる
SELECT user_id, COUNT(*) AS orders, SUM(total) AS amount
FROM orders
GROUP BY user_id
HAVING SUM(total) >= 10000
ORDER BY amount DESC;
WITH

CTEで読みやすく分割

CTE(Common Table Expression: 共通テーブル式)は、WITH句で一時的な名前付き結果を作る仕組みです。

  • 複雑な条件を先に切り出す
  • 同じサブクエリを再利用できる
WITH recent_orders AS (
  SELECT *
  FROM orders
  WHERE created_at >= CURRENT_DATE - INTERVAL '30 days'
)
SELECT user_id, COUNT(*) AS orders
FROM recent_orders
GROUP BY user_id;
WINDOW

ウィンドウ関数

集計を行単位で保持したいときに便利な構文です。

  • PARTITION BY で集計単位を指定
  • ORDER BY で累計や順位付けが可能
SELECT user_id, created_at, total,
  SUM(total) OVER (PARTITION BY user_id ORDER BY created_at) AS running_total
FROM orders;
EXISTS

EXISTSで存在確認

関連データの有無を確認する方法で、サブクエリ結果の存在をチェックします。

  • 必要な列は返さなくてよい
  • IN より効率的な場合がある
SELECT u.id, u.name
FROM users u
WHERE EXISTS (
  SELECT 1
  FROM orders o
  WHERE o.user_id = u.id
);

フォーマットのヒント

  • 大きなSQLは「コメント保持」をOFFにすると軽量化できます。
  • WHERE / ON 句の条件を見やすくしたい場合は AND/OR 改行をONにしてください。
  • 句ごとに改行したい場合はインデントとカンマ改行を併用すると整います。
weva
Webアプリを探す利用規約プライバシーポリシー© 2025 Weva.dark_typeA_115x57.png