SQL 速查表
按任務分組的核心 SQL 陳述式,用於查詢和修改資料。確切語法在不同資料庫(PostgreSQL、MySQL、SQLite、SQL Server)間略有差異,但下面的基礎幾乎通用。要整理雜亂的查詢,用 SQL 格式化工具。
更新 2026-07-06
查詢(SELECT)
| 陳述式 | 作用 |
|---|---|
| SELECT * FROM t | 回傳表 t 的每一欄每一列 |
| SELECT a, b FROM t | 只回傳欄 a 和 b |
| SELECT DISTINCT a FROM t | 回傳 a 的唯一值 |
| ... WHERE a = 5 | 過濾 a 等於 5 的列 |
| ... ORDER BY a DESC | 依 a 降序排序 |
| ... LIMIT 10 | 最多回傳 10 列 |
| ... OFFSET 20 | 跳過前 20 列(分頁) |
| SELECT COUNT(*) FROM t | 統計列數 |
| SELECT SUM(a), AVG(a) FROM t | 彙總:a 的總和與平均 |
| ... GROUP BY category | 依類別分組以彙總 |
| ... HAVING COUNT(*) > 5 | 過濾分組(用於彙總的 WHERE) |
過濾(WHERE)
| 陳述式 | 作用 |
|---|---|
| WHERE a IN (1, 2, 3) | 比對清單中的任意值 |
| WHERE a BETWEEN 1 AND 9 | 比對一個範圍(含兩端) |
| WHERE name LIKE 'A%' | 模式比對:以 A 開頭(% = 任意字元) |
| WHERE name LIKE '_at' | _ 恰好比對一個字元 |
| WHERE a IS NULL | 比對 a 沒有值的列 |
| WHERE a > 5 AND b < 10 | 用 AND / OR 組合條件 |
連接資料表
| 陳述式 | 作用 |
|---|---|
| INNER JOIN u ON t.id = u.tid | 兩表都有相符的列 |
| LEFT JOIN u ON t.id = u.tid | 左表的所有列(無論是否相符) |
| RIGHT JOIN u ON t.id = u.tid | 右表的所有列 |
| FULL JOIN u ON t.id = u.tid | 兩表的所有列 |
修改資料
| 陳述式 | 作用 |
|---|---|
| INSERT INTO t (a, b) VALUES (1, 2) | 新增一列 |
| UPDATE t SET a = 5 WHERE id = 1 | 修改既有列(注意 WHERE!) |
| DELETE FROM t WHERE id = 1 | 刪除列(注意 WHERE!) |
結構(資料表與索引)
| 陳述式 | 作用 |
|---|---|
| CREATE TABLE t (id INT, name TEXT) | 建立一張新資料表 |
| ALTER TABLE t ADD col TEXT | 新增一欄 |
| DROP TABLE t | 刪除一張資料表及其所有資料 |
| CREATE INDEX idx ON t (a) | 新增索引以加快對 a 的查找 |
值得保持的安全習慣:先寫 UPDATE 或 DELETE 的 WHERE 子句。不帶 WHERE 執行會修改或刪除表中的每一列。
相關工具