素材阁

SQL 语句速查

共 44 条常用 SQL 语句,覆盖查询基础、聚合分组、连接查询、增删改、表与索引、进阶技巧六组场景, 逐条给出语句与说明。支持搜索与分类筛选,点击语句即可复制。

查询基础

SELECT 的常用子句与条件。

语句说明
查询表中的全部列
只查询指定列(推荐避免 SELECT *)
去重后返回唯一值
按条件过滤行
模糊匹配,% 匹配任意字符
匹配一组值
判断空值(必须用 IS NULL,不能用 = NULL)
按字段降序排序
分页:跳过 20 条取 10 条

聚合与分组

统计、分组与去重计数。

语句说明
统计行数
统计去重后的数量
求和与平均值
最大值与最小值
按字段分组统计
对分组结果再过滤(HAVING 用于聚合条件)
MySQL 把分组内值拼接成字符串

连接查询

多表关联的几种连接方式。

语句说明
内连接,只返回两表都匹配的行
左连接,保留左表全部行,右表无匹配为 NULL
右连接,保留右表全部行
笛卡尔积,返回所有组合
配合 LEFT JOIN 找出「没有关联记录」的行
合并两个结果集并去重
合并两个结果集但不去重(更快)

增删改

插入、更新与删除数据。

语句说明
插入一行数据
一次插入多行
更新满足条件的行(务必带 WHERE)
删除满足条件的行(务必带 WHERE)
清空整张表且不可回滚,比 DELETE 快
基于原值做增量更新

表与索引

建表、改表与索引管理。

语句说明
创建表并指定主键
新增列
修改列定义
删除整张表(含数据,慎用)
创建普通索引
创建唯一索引
删除索引

进阶技巧

子查询、窗口函数与事务。

语句说明
子查询作为条件
相关子查询
窗口函数:按分组排名
窗口函数:生成行号
条件表达式,实现分支逻辑
事务:把多条语句作为一个原子操作
回滚当前事务
查看执行计划,定位慢查询

使用说明

把 SQL 常用语句按场景整理成一张可搜索的对照表,覆盖查询基础、聚合分组、连接查询、增删改、表与索引、进阶技巧六组,逐条给出语句与说明。纯静态数据,页面在浏览器本地展示,点击语句即可复制。

  1. 用搜索框找语句,如 JOIN、GROUP BY、索引、事务、分页。
  2. 点分类按钮切到某一组,例如「连接查询」或「进阶技巧」。
  3. 点语句即可复制,替换表名与字段后执行。
  4. 写 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。

延伸阅读

相关工具