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 执行会修改或删除表中的每一行。
相关工具