SQL 格式化完全指南:美化、壓縮與除錯技巧
實用工具(更新於 2026年5月31日)
為什麼需要格式化 SQL?
-- ❌ 壓縮為一行,難以閱讀
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;
格式化讓 SQL 的 SELECT → FROM → JOIN → WHERE → ORDER BY 結構一目了然。
使用工具庫 SQL 格式化
操作步驟
- 開啟 SQL 格式化工具
- 貼上 SQL 語句
- 自動美化(關鍵字大寫、縮排對齊)
- 也可切換為壓縮模式(去除空白)
支援的 SQL 方言
| 方言 | 說明 |
|---|---|
| SQL | 標準 SQL |
| MySQL | MySQL 特有語法 |
| PostgreSQL | PG 特有語法 |
| SQLite | 輕量資料庫 |
| 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(節省傳輸)
格式化後的 SQL 用於閱讀,壓縮後的 SQL 用於傳輸:
-- 格式化: 15 行, 380 字元
-- 壓縮: 1 行, 195 字元 (減少 49%)
常見 SQL 格式化問題
字串中的關鍵字不會被大寫
-- ✅ 正確:'select' 在字串中保持不變
SELECT * FROM logs WHERE message LIKE '%select%'
註解保留
SELECT id, name -- 使用者名稱
FROM users /* 活躍使用者數 */
WHERE status = 1
格式化工具會保留單行 -- 和區塊 /* */ 註解。
總結
SQL 格式化是資料庫開發者的高效習慣。工具庫 SQL 格式化工具 支援多種 SQL 方言,瀏覽器本機處理,配合 JSON 轉 SQL 工具可以完成從資料到 SQL 的完整工作流。
#SQL#格式化#数据库#查询优化#开发