SQL 语句速查
共 44 条常用 SQL 语句,覆盖查询基础、聚合分组、连接查询、增删改、表与索引、进阶技巧六组场景, 逐条给出语句与说明。支持搜索与分类筛选,点击语句即可复制。
查询基础
SELECT 的常用子句与条件。
| 语句 | 说明 |
|---|---|
| 查询表中的全部列 | |
| 只查询指定列(推荐避免 SELECT *) | |
| 去重后返回唯一值 | |
| 按条件过滤行 | |
| 模糊匹配,% 匹配任意字符 | |
| 匹配一组值 | |
| 判断空值(必须用 IS NULL,不能用 = NULL) | |
| 按字段降序排序 | |
| 分页:跳过 20 条取 10 条 |
聚合与分组
统计、分组与去重计数。
| 语句 | 说明 |
|---|---|
| 统计行数 | |
| 统计去重后的数量 | |
| 求和与平均值 | |
| 最大值与最小值 | |
| 按字段分组统计 | |
| 对分组结果再过滤(HAVING 用于聚合条件) | |
| MySQL 把分组内值拼接成字符串 |
连接查询
多表关联的几种连接方式。
| 语句 | 说明 |
|---|---|
| 内连接,只返回两表都匹配的行 | |
| 左连接,保留左表全部行,右表无匹配为 NULL | |
| 右连接,保留右表全部行 | |
| 笛卡尔积,返回所有组合 | |
| 配合 LEFT JOIN 找出「没有关联记录」的行 | |
| 合并两个结果集并去重 | |
| 合并两个结果集但不去重(更快) |
增删改
插入、更新与删除数据。
| 语句 | 说明 |
|---|---|
| 插入一行数据 | |
| 一次插入多行 | |
| 更新满足条件的行(务必带 WHERE) | |
| 删除满足条件的行(务必带 WHERE) | |
| 清空整张表且不可回滚,比 DELETE 快 | |
| 基于原值做增量更新 |
表与索引
建表、改表与索引管理。
| 语句 | 说明 |
|---|---|
| 创建表并指定主键 | |
| 新增列 | |
| 修改列定义 | |
| 删除整张表(含数据,慎用) | |
| 创建普通索引 | |
| 创建唯一索引 | |
| 删除索引 |
进阶技巧
子查询、窗口函数与事务。
| 语句 | 说明 |
|---|---|
| 子查询作为条件 | |
| 相关子查询 | |
| 窗口函数:按分组排名 | |
| 窗口函数:生成行号 | |
| 条件表达式,实现分支逻辑 | |
| 事务:把多条语句作为一个原子操作 | |
| 回滚当前事务 | |
| 查看执行计划,定位慢查询 |
使用说明
把 SQL 常用语句按场景整理成一张可搜索的对照表,覆盖查询基础、聚合分组、连接查询、增删改、表与索引、进阶技巧六组,逐条给出语句与说明。纯静态数据,页面在浏览器本地展示,点击语句即可复制。
- 用搜索框找语句,如 JOIN、GROUP BY、索引、事务、分页。
- 点分类按钮切到某一组,例如「连接查询」或「进阶技巧」。
- 点语句即可复制,替换表名与字段后执行。
- 写 UPDATE / DELETE 前,先想好 WHERE 条件,避免误改全表。
常见问题
- WHERE 和 HAVING 有什么区别?
- WHERE 在分组前过滤单行,不能使用聚合函数;HAVING 在 GROUP BY 之后过滤分组结果,可以使用 COUNT、SUM 等聚合函数。
- 为什么改了 WHERE 还是把所有行都更新了?
- 多半是 WHERE 条件写错(如恒真、字段名拼错、隐式类型转换)。执行前先把它改写成 SELECT 预览命中的行,确认无误再执行 UPDATE / DELETE,必要时用事务包起来。
- INNER JOIN 和 LEFT JOIN 怎么选?
- 只想保留两表都能匹配的行用 INNER JOIN;希望保留左表全部行、右表无匹配时留空则用 LEFT JOIN。想找“没有关联记录”的行,用 LEFT JOIN 后加 WHERE 右表主键 IS NULL。