SQLフォーマット完全ガイド:整形・圧縮・デバッグのコツ
ユーティリティ(更新: 2026年5月31日)
なぜ SQL を整形するか
-- ❌ 1行に潰されて読みにくい
SELECT u.id,u.name,o.total FROM users u JOIN orders o ON u.id=o.user_id WHERE o.status='paid' AND o.created_at>'2024-01-01' ORDER BY o.total DESC LIMIT 10;
-- ✅ 整形後は構造が明確
SELECT
u.id,
u.name,
o.total
FROM users u
JOIN orders o ON u.id = o.user_id
WHERE o.status = 'paid'
AND o.created_at > '2024-01-01'
ORDER BY o.total DESC
LIMIT 10;
整形すると SELECT → FROM → JOIN → WHERE → ORDER BY の流れが一目で分かります。
ToolsKu の SQL フォーマッター
手順
- SQL フォーマットツール を開く
- SQL を貼り付け
- 自動整形(キーワード大文字、インデント揃え)
- 圧縮モードに切り替えて空白を除去も可能
対応 SQL 方言
| 方言 | 説明 |
|---|---|
| SQL | 標準 SQL |
| MySQL | MySQL 固有構文 |
| PostgreSQL | PG 固有構文 |
| SQLite | 軽量 DB |
| T-SQL | SQL Server |
| PL/SQL | Oracle |
整形の規約
キーワードは大文字
SELECT, FROM, WHERE, JOIN, ON, AND, OR, ORDER BY, GROUP BY, HAVING, LIMIT
インデント規則
SELECT
column1,
column2,
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
ELSE default_result
END AS calculated
FROM table1
JOIN table2 ON table1.id = table2.ref_id
WHERE status = 'active'
AND created_at >= '2024-01-01'
GROUP BY column1, column2
HAVING COUNT(*) > 5
ORDER BY column1 DESC;
サブクエリのインデント
SELECT *
FROM (
SELECT
user_id,
SUM(amount) AS total
FROM orders
WHERE status = 'paid'
GROUP BY user_id
) AS user_totals
WHERE total > 1000;
実践シーン
1. ログ内 SQL のデバッグ
本番ログは圧縮された SQL を出力することが多い:
[2024-06-01 10:00:00] QUERY: SELECT * FROM users WHERE email='test@example.com' AND deleted_at IS NULL
SQL フォーマットツール にコピーして整形・分析。
2. ORM が生成した SQL
// Sequelize / TypeORM の SQL は未整形のことが多い
console.log(query.getSql());
// → SELECT `User`.`id`, `User`.`name` FROM `users` AS `User` WHERE ...
整形して ORM が実際に実行するクエリを把握。
3. JSON から SQL へ
API が JSON 配列を返し、INSERT が必要な場合:
[
{"name": "Alice", "age": 30},
{"name": "Bob", "age": 25}
]
JSON から SQL で自動生成:
INSERT INTO users (name, age) VALUES ('Alice', 30);
INSERT INTO users (name, age) VALUES ('Bob', 25);
4. SQL を圧縮(転送量削減)
整形版は読む用、圧縮版は転送用:
-- 整形: 15 行, 380 文字
-- 圧縮: 1 行, 195 文字 (49% 削減)
よくある SQL 整形の問題
文字列内のキーワードは大文字化されない
-- ✅ 正しい:文字列内の 'select' はそのまま
SELECT * FROM logs WHERE message LIKE '%select%'
コメントは保持
SELECT id, name -- ユーザー名
FROM users /* アクティブユーザー数 */
WHERE status = 1
-- 行コメントと /* */ ブロックコメントは保持されます。
まとめ
SQL 整形は DB 開発者の効率的な習慣です。ToolsKu の SQL フォーマットツール は複数方言に対応し、ブラウザ内で処理。JSON から SQL と組み合わせれば、データから SQL までのワークフローが完結します。
#SQL#格式化#数据库#查询优化#开发