核心心法
SQL 技能的提升不在於「刷題量」,而在於「真實場景建模」與「執行計劃分析」的雙重訓練。每天 3 條有難度的語句,勝過百條 SELECT * FROM dual。
分階段練習資源推薦
階段一:基礎語法與單表查詢(1-2 週)
- LeetCode Database:Easy/medium 題單,覆蓋 JOIN、子查詢、聚合、窗口函數。
- SQLZoo:交互式教程,適合碎片時間刷關。
- Oracle 官方 Sample Schemas (HR, OE, SH):安裝數據庫自帶,表結構規範、數據真實,最適合練手。
階段二:多表關聯、分析函數、性能優化(3-6 週)
- 《Oracle SQL 性能優化指南》:重點掌握
EXPLAIN PLAN、索引原理、綁定變量窺探。
- HackerRank SQL (Advanced):含分層查詢、轉置、側向視圖等硬核題目。
- 實戰專題:在 HR schema 上完成「月度銷售同比增長」、「連續登錄天數統計」、「Top-N 分組查詢」三個專題。
階段三:高級特性與架構級應用(持續)
- 分區表、物化視圖、結果緩存、SQL Plan Management (SPM)。
- 研讀 AskTOM (asktom.oracle.com) 經典案例,學習 Tom Kyte 的思維模型。
- 參與開源項目(如
ora2pg、dbt-oracle)的 SQL 審查。
每日練習模板(建議收藏)
-- 1. 明確業務目標:例如「查詢每個部門薪資前 3 的員工」
-- 2. 編寫多種實現方式
-- 方式 A: ROW_NUMBER() 窗口函數
-- 方式 B: 相關子查詢 + ROWNUM
-- 方式 C: LATERAL JOIN (12c+)
-- 3. 對比執行計劃、一致性讀、CPU 時間
-- 4. 記錄最優寫法及優化理由
避坑清單
- ❌ 只練
SELECT,不練 INSERT/UPDATE/MERGE 與事務控制。
- ❌ 忽視
DBMS_XPLAN.DISPLAY_CURSOR 輸出的 E-Rows vs A-Rows 偏差分析。
- ❌ 不在真實數據量(百萬級+)下驗證語句性能。
- ❌ 依賴圖形化工具生成 SQL,不理解底層邏輯。
「SQL 寫得快不算本事,寫得對、寫得快、敢上線、好維護,才是高手。」—— 致正在練習的你