首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

好 SQL 長什麼樣?格式化規範提升效率與正確性

     編輯:關於SqlServer

核心理念:正確性優於美觀

資料庫不在乎逗號前置還是後置,但開發者需要清晰的結構來保證結果正確、易於除錯、維護。本文分享實戰驗證的格式化原則。

實戰場景:三表關聯銷售報表

  • 客戶表、銷售表、郵遞區號表
  • 需求:統計 2015/01 各郵遞區號的客戶數與銷售額
  • 資料品質挑戰:髒資料、缺失外鍵、郵遞區號表不完整

第一原則:建立基準查詢做驗證錨點

-- 基準:客戶總數(無 JOIN,無干擾)
SELECT COUNT(DISTINCT cust_id) AS count_customers FROM customers;
-- 結果:10 → 後續所有查詢的客戶數必須等於 10

推薦格式化風格

SELECT 
    0,                              -- 佔位符,方便註解首欄
    c.cust_post_code,
    p.location,
    COUNT(DISTINCT c.cust_id) AS number_customers,
    SUM(s.total_amount) AS total_sales
FROM customers c
JOIN post_codes p ON c.cust_post_code = p.post_code
JOIN sales s ON c.cust_id = s.cust_id
WHERE 1=1
  AND s.sales_date BETWEEN '2015-01-01' AND '2015-01-31'
-- AND s.order_id = 5
GROUP BY 
    c.cust_post_code,
    p.location;

五大格式化鐵律

1. 永遠使用表別名

防止未來加入同名欄位導致歧義錯誤。

2. 逗號前置

註解任一欄位時,無需調整其他行的逗號。適用於 SELECT 清單與 GROUP BY。

3. SELECT 0 佔位符

開發階段置頂,上線前刪除。配合逗號前置,首欄也能輕鬆註解。

4. JOIN 獨立成行

  • 一眼看清所有參與表
  • 邏輯集中,區別於 WHERE 篩選條件
  • 除錯時易於註解特定 JOIN 排查資料問題

5. 欄模式編輯

批次註解/取消註解多行欄位、GROUP BY 欄位、建立索引清單時極致高效。

驗證查詢正確性:外部連接 + 註解切換法

SELECT 
    0,
    c.cust_post_code,
    --,p.location,
    COUNT(DISTINCT c.cust_id) AS number_customers,
    SUM(s.total_amount) AS total_sales
FROM customers c
-- LEFT OUTER JOIN post_codes p ON c.cust_post_code = p.post_code
JOIN sales s ON c.cust_id = s.cust_id
WHERE 1=1
  AND s.sales_date BETWEEN '2015-01-01' AND '2015-01-31'
-- AND c.cust_post_code = 2000
-- AND p.post_code = 200
GROUP BY 
    c.cust_post_code
    --,p.location;

透過逐步加入/移除 JOIN 與欄位,持續對照基準查詢結果(客戶數=10),確保每一步邏輯正確。

總結

好的 SQL 格式不是為了好看,是為了可驗證、可除錯、可維護。建立基準查詢、逗號前置、JOIN 獨立行、善用欄模式編輯,這套工作流能顯著降低錯誤率並提升開發速度。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved