整理一周 SQL 密集學習的關鍵收穫,涵蓋 DDL、DML、索引、交易、視圖、觸發器等核心領域。
INNER JOIN 只保留匹配行;LEFT JOIN 保留左表所有行,右表無匹配則 NULL。SELECT 非聚合欄位必須出現在 GROUP BY,否則語意模糊或報錯。WITH TIES (配合 TOP) 或視窗函數 RANK()/DENSE_RANK()。ORDER BY 預設 ASC,降序需明確 DESC。DISTINCT 作用於全欄位組合;單欄去重用 GROUP BY 或 ROW_NUMBER()。INSERT INTO ... SELECT ... UNION ALL ... 避免逐列 INSERT 往返開銷。UNION 去重 (排序/雜湊成本高);UNION ALL 保留重複,效能優。TRUNCATE 釋放頁面、重設識別欄、不可回滾 (隱含提交);DROP 刪除物件定義。DROP,需先移除 FK 或級聯刪除。CASE 條件聚合或 PIVOT 運算子實現。ALTER TABLE ADD CONSTRAINT 統一建立;插入時先置 NULL 再回填。BEGIN TRAN...COMMIT/ROLLBACK。INSERTED/DELETED 虛擬表捕捉變更,慎用 (除錯難、效能影響大)。NOT IN 遇 NULL → 改用 NOT EXISTS。SELECT * 生產禁用 → 明確列出欄位。sp_executesql,防注入、利用計畫快取。SQL 看似簡單,精通在於「集合思維」與「執行計畫閱讀能力」。持續練習、閱讀計畫、測量統計,方能寫出高效、穩健的 T-SQL。