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

一周 SQL 學習精華總結:15 個核心知識點與避坑指南

     編輯:關於SqlServer

整理一周 SQL 密集學習的關鍵收穫,涵蓋 DDL、DML、索引、交易、視圖、觸發器等核心領域。

15 大核心知識點

  1. 型別一致性:建表型別與插入資料型別必須匹配,隱含轉換導致索引失效。
  2. JOIN 類型差異:INNER JOIN 只保留匹配行;LEFT JOIN 保留左表所有行,右表無匹配則 NULL。
  3. GROUP BY 鐵律:SELECT 非聚合欄位必須出現在 GROUP BY,否則語意模糊或報錯。
  4. 並列排名:相同名次用 WITH TIES (配合 TOP) 或視窗函數 RANK()/DENSE_RANK()。
  5. 排序預設:ORDER BY 預設 ASC,降序需明確 DESC。
  6. 去重:DISTINCT 作用於全欄位組合;單欄去重用 GROUP BY 或 ROW_NUMBER()。
  7. 批次插入:INSERT INTO ... SELECT ... UNION ALL ... 避免逐列 INSERT 往返開銷。
  8. UNION vs UNION ALL:UNION 去重 (排序/雜湊成本高);UNION ALL 保留重複,效能優。
  9. TRUNCATE vs DROP:TRUNCATE 釋放頁面、重設識別欄、不可回滾 (隱含提交);DROP 刪除物件定義。
  10. 外鍵與刪表:被參考表不可直接 DROP,需先移除 FK 或級聯刪除。
  11. 行轉列 (PIVOT):CASE 條件聚合或 PIVOT 運算子實現。
  12. 循環 FK 建表順序:先建表不加 FK → 再 ALTER TABLE ADD CONSTRAINT 統一建立;插入時先置 NULL 再回填。
  13. 交易經典模型:銀行轉帳 = 扣款 + 存入,全成全敗,BEGIN TRAN...COMMIT/ROLLBACK。
  14. 視圖本質:儲存的查詢定義,提供權限隔離、簡化複雜查詢、隱藏結構變更。
  15. 索架構:叢集索引 = 資料實體排序 (每表最多一個);非叢集索引 = 獨立 B-tree 指向叢集鍵/RID (可多個)。
  16. 觸發器本質:事件驅動的隱性邏輯,INSERTED/DELETED 虛擬表捕捉變更,慎用 (除錯難、效能影響大)。

進階補充:實戰避坑清單

  • NOT IN 遇 NULL → 改用 NOT EXISTS。
  • SELECT * 生產禁用 → 明確列出欄位。
  • 游標能不用就不用 → 集合式思維 / 視窗函數 / 暫存表 / Table-Valued Parameter。
  • 大量刪除/更新 → 分批循環,避免記錄檔爆滿、鎖升級。
  • 動態 SQL → 參數化 sp_executesql,防注入、利用計畫快取。

SQL 看似簡單,精通在於「集合思維」與「執行計畫閱讀能力」。持續練習、閱讀計畫、測量統計,方能寫出高效、穩健的 T-SQL。

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