資料查詢是資料庫操作的核心功能,其效能優劣直接決定系統運行效率,甚至影響資料庫選型決策。本文不談空泛理論,僅針對日常開發中易被忽視的五個查詢小技巧進行總結,助您提升 SQL 撰寫品質與報表可讀性。
在員工基本資料表中,若需將「職位」、「姓名」、「出生日期」合併顯示為「經理 Victor 出生於 1976 年 5 月 3 日」這樣的單一欄位,只需在 SELECT 語句中使用雙管線符(||)串接即可:
SELECT 員工職位 || ' ' || 員工姓名 || '出生於' || 出生日期 AS 員工出生資訊
FROM 員工基本資料表;
此技巧在報表設計中極具價值。筆者早年設計圖書館管理系統時,即利用連接符將出版社、出版序列號等欄位合併列印,並穿插說明性文字,大幅提升報表閱讀體驗。連接符不僅能融合欄位,更能靈活嵌入格式化字串,是資料庫視圖設計的利器。
查詢「公司實際配置人員的部門與職位」時,直接查部門表會包含無人員的空缺職位;查員工表又會因多人同部門同職位產生重複列。解決之道是加上 DISTINCT:
SELECT DISTINCT 部門資訊, 職位資訊
FROM 員工基本資料表;
此語句既能確保查詢結果皆有實際人員對應,又能自動過濾重複資料,兼顧業務邏輯與可讀性。
針對大型表查詢,善用 WHERE 子句限制掃描範圍,能指數級提升回應速度。以圖書館系統為例,查詢「註冊會計師輔導用書」若無 WHERE 過濾,需全表掃描再人工篩選,極其低效。正確做法是:
SELECT * FROM 圖書資料表
WHERE 書名 LIKE '%註冊會計師%' OR 類別 = '財經類';
許多報表平台在「大表查詢」模式下會自動注入 WHERE 條件,正是基於此原理。開發者應養成「有條件必加 WHERE」的習慣。
COUNT 看似簡單,實則大有講究:
COUNT(員工姓名) 或 COUNT(員工編號),避免用序號欄位(可能含空值導致統計偏差)。COUNT(DISTINCT 部門) 可直接得知「有編制部門數」,省去子查詢,簡化邏輯並提升效能。同一張員工表,HR 可能只需「合同到期名單」,財務只需「薪資欄位」。若統一視圖輸出所有欄位(含長文本地址等),將白白消耗 I/O 與網路頻寬。最佳實踐是:
這五個技巧——連接符整合、DISTINCT 去重、WHERE 精準過濾、COUNT 靈活統計、按需選欄——皆源自實戰經驗。掌握它們,能讓您的 Oracle 查詢語句更精準、報表更易讀、系統更高效。