SELECT * FROM students; -- 所有欄位 (不建議生產用)
SELECT name, number FROM students; -- 指定欄位,效能佳
SELECT * FROM students; -- 單表
-- 多表查詢見 JOIN 章節
SELECT * FROM students WHERE name = '影子';
SELECT * FROM students WHERE name = '影子' AND number > 100;
SELECT * FROM students WHERE name = '影子' AND (number > 100 OR number < 50);
常用運算子:=, <>, >, <, >=, <=, BETWEEN, LIKE, IN
| 模式 | 說明 | 範例結果 |
|---|---|---|
| % | 任意 0 或多字元 | LIKE '%三%' → 張三、三腳貓、唐三藏 |
| _ | 單一任意字元 | LIKE '_三_' → 唐三藏 |
| [範圍] | 括號內任一字元 | LIKE '[張李王]三' → 張三、李三、王三 |
| [^範圍] | 非括號內字元 | LIKE '[^張李王]三' → 趙三、孫三 |
SELECT * FROM students WHERE name LIKE '%影%' ORDER BY number; -- 遞增
SELECT * FROM students WHERE name LIKE '%影%' ORDER BY number DESC; -- 遞減
SELECT TOP 3 * FROM students;
SELECT TOP 10 PERCENT * FROM students;
SELECT TOP 3 * FROM students ORDER BY number DESC; -- 取最大 3 筆
SELECT number AS 學號, name AS 姓名 FROM students;
SELECT * FROM students
UNION
SELECT * FROM students1; -- 預設去重
SELECT * FROM students
UNION ALL
SELECT * FROM students1; -- 保留重複
規則:欄位數、型別、順序必須一致;結果欄位名取自第一個 SELECT。
-- 內連接
SELECT t1.col, t2.col FROM table1 t1 INNER JOIN table2 t2 ON t1.id = t2.id;
-- 左外連接
SELECT t1.col, t2.col FROM table1 t1 LEFT JOIN table2 t2 ON t1.id = t2.id;
-- 右外連接
SELECT t1.col, t2.col FROM table1 t1 RIGHT JOIN table2 t2 ON t1.id = t2.id;
SELECT * FROM table1, table2 WHERE table1.id = table2.id; -- 內連接
-- 獨立標量子查詢
SELECT * FROM students WHERE class_id = (SELECT id FROM classes WHERE name = 'A班');
-- 獨立多值子查詢
SELECT * FROM students WHERE class_id IN (SELECT id FROM classes WHERE grade = 3);