SELECT 選擇清單
FROM 表來源
WHERE 搜尋條件
ORDER BY 排序規則
SELECT *:所有欄位SELECT col1, col2:指定欄位與順序SELECT 別名 = 欄位 或 SELECT 欄位 別名:自訂標題 (含中文需加引號)SELECT DISTINCT:移除重複列SELECT TOP n [PERCENT]:限制回傳筆數或百分比table.column。FROM tableA a, tableB b。FROM (SELECT ... FROM ...) AS t。| 類別 | 運算符 | 範例 |
|---|---|---|
| 比較 | =, <>, >, >=, <, <=, !>, !< | age > 20 |
| 範圍 | BETWEEN ... AND ... | age BETWEEN 10 AND 30 |
| 列表 | IN / NOT IN | country IN ('DE','CN') |
| 模式 | LIKE / NOT LIKE | name LIKE '張%', code LIKE '[A-C]%' |
| 空值 | IS NULL / IS NOT NULL | age IS NULL |
| 邏輯 | AND, OR, NOT (優先序:NOT > AND > OR) | age>20 AND city='Taipei' |
%:任意長度字串 (中文建議 %%)_:單一任意字元[...]:指定字元集合/範圍[^...]:排除字元集合ORDER BY col1 DESC, col2 ASC -- 多欄位混合排序
ORDER BY (col1 + col2) -- 運算式排序
不支援 ntext/text/image 排序。
SELECT ... FROM table1
UNION [ALL]
SELECT ... FROM table2
[UNION [ALL] SELECT ... FROM table3] ...
SELECT 欄位數、資料類型需相容 (自動提升精度)。UNION 移除重複列;UNION ALL 保留所有列 (效能較佳)。SELECT;排序需用第一個查詢的欄位名/別名/序號。Q1 UNION (Q2 UNION Q3)。FROM table1 join_type table2 ON (join_condition)
| 類型 | 關鍵字 | 行為 |
|---|---|---|
| 內連接 | INNER JOIN | 僅回傳符合連接條件的配對列 |
| 外連接 | LEFT/RIGHT/FULL OUTER JOIN | 保留左/右/雙邊所有列,無配對處補 NULL |
| 交叉連接 | CROSS JOIN | 笛卡兒積,無 ON 子句,列數 = 左列數 × 右列數 |
ON a.id = b.id,結果含重複欄位。>, <, >=, <=, <> 等非等號運算子。-- 左外連接:保留左表所有論壇貼文,右表無作者資料則補 NULL
SELECT a.*, b.* FROM luntan a LEFT JOIN usertable b ON a.username = b.username
-- 全外連接:城市表與使用者表雙向保留
SELECT a.*, b.* FROM city a FULL OUTER JOIN usertable b ON a.username = b.username
-- 6 類圖書 × 8 家出版社 = 48 列組合
SELECT type, pub_name FROM titles CROSS JOIN publishers ORDER BY type
text/ntext/image 不可直接連接,需轉換或使用 DATALENGTH() 等函數間接比對。