SELECT 陳述式是 SQL Server 中最核心的資料查詢指令,掌握其各項功能能大幅提升開發效率。以下將詳細說明選取欄位、別名設定、計算值與條件篩選等實用技巧。
使用星號(*)可一次選取資料表中的所有欄位,無需逐一列出欄位名稱。欄位順序將依資料表定義順序呈現,語法簡潔直觀:
SELECT * FROM authors
當查詢結果包含重複資料時,可在 SELECT 子句後加入 DISTINCT 關鍵字以過濾重複列。需注意若選取多個欄位,DISTINCT 會針對所有欄位的組合進行去重,而非單一欄位。
SELECT DISTINCT city, state FROM authors
預設情況下結果欄位名稱同資料表定義,開發者可透過「別名 = 原欄位名」語法自訂顯示名稱,提升報表可讀性:
SELECT AuthorFirstName = au_fname FROM authors
SELECT 清單中可直接包含算術運算式或常數值,運算式可引用一個或多個資料表欄位,即時產生衍生資料:
SELECT totalSale = price * ytd_sales FROM titles
WHERE 子句透過比較與邏輯運算子,精準過濾符合條件的資料列,是資料查詢的關鍵機制。
支援數值、字串與日期資料類型比較,回傳 TRUE 或 FALSE。常用運算子包含:
| 運算子 | 功能說明 | 範例 |
|---|---|---|
| LIKE | 模式比對,支援萬用字元 | WHERE name LIKE 'New%' |
| BETWEEN | 範圍比對(含端點值) | WHERE price BETWEEN 10 AND 100 |
| IN | 清單比對,可搭配子查詢 | WHERE state IN ('CA', 'NY', 'TX') |
| AND / OR | 多條件邏輯組合 | WHERE type='novel' AND price>20 |
| NOT | 邏輯否定 | WHERE NOT (status = 'archived') |
| SOME | ANY | 符合任一比較條件即為真 | WHERE price > SOME (SELECT price FROM sales) |
| ALL | 需符合所有比較條件才為真 | WHERE price > ALL (SELECT price FROM discounts) |
LIKE 運算子搭配萬用字元可實現強大的模式比對:
'New%' 比對所有以 "New" 開頭的字串。'[A-F]%' 比對 A 到 F 開頭的字串。'[^0-9]%' 比對非數字開頭的字串。這些萬用字元可自由組合,滿足複雜查詢需求。