首页/数据/SQL 速查/UPDATE 基础与安全边界
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条函数速查60 条
变更与事务52 条
性能与执行计划72 条

UPDATE 基础与安全边界

更新满足条件的行:SET 支持多列赋值与表达式;漏写 WHERE 会更新全表,是生产事故的高频来源。

SQL 速查数据更新于 2026-10-12

示例

示例
UPDATE orders
SET status = 'paid', paid_at = NOW()
WHERE id = 100 AND status = 'pending';
SET 多列逗号分隔;右侧表达式可引用当前行的旧值
WHERE控制影响范围;上线变更前先用同条件 SELECT 预估行数
护栏MySQL 可开 sql_safe_updates;PostgreSQL 可依赖事务 + 先查后改流程
UPDATE 不带 WHERE 会更新全表:执行前把 WHERE 子句先跑一遍 SELECT COUNT(*),再包进事务确认。

易错点

  • 把 UPDATE 写成不带 WHERE 的全表更新(含把 WHERE 写在错误的分支里)是典型事故,务必在事务内执行并核对行数
  • SET 里的子查询如果写错关联条件,会把所有行更新成同一个值,先在只读环境验证结果集

数据来源与参考

  • MySQL 8.0 Reference Manual · UPDATE
  • PostgreSQL Documentation · UPDATE
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌