UPDATE
修改表中已存在的记录。务必注意使用 WHERE 子句,否则将更新整张表的数据。
基本语法
UPDATE table_name
SET column1 = new_value1, column2 = new_value2
WHERE condition;
示例
-- 将 id 为 101 的用户姓名改为 '孙悟空',年龄改为 500
UPDATE student
SET name = '孙悟空', age = 500
WHERE id = 101;
-- 批量更新:将所有数学成绩低于 60 分的标记为 '不及格'
UPDATE exam_result
SET status = '不及格'
WHERE math < 60;
特殊场景:JSON 字段
MySQL 5.7+ 支持 JSON 类型,可以直接对 JSON 内部字段进行局部更新,无需取出整个 JSON 修改后再存回。
- 修改 JSON 内部值
- 使用 JSON_SET、JSON_INSERT 或 JSON_REPLACE 函数
-- 假设 info 字段存储的是 JSON: {"name": "Laravel", "version": "8"}"
-- 将 name 修改为 "Lumen"
UPDATE apps
SET info = JSON_SET(info, '$.name', 'Lumen')
WHERE id = 1;
防止 SQL 注入
在代码层面(如 Java MyBatis, Python PyMySQL, Go GORM)执行 CIUD 时,永远不要拼接用户输入。
- ❌ 错误:"UPDATE users SET name = '" + userName + "'"
- ✅ 正确:使用预编译语句(Prepared Statements),例如 UPDATE users SET name = ? WHERE id = ?
性能优化
- 索引影响:频繁的 UPDATE 和 DELETE 会导致索引碎片,定期维护索引或使用 OPTIMIZE TABLE。
- Where 条件索引确保 UPDATE 和 DELETE 的 WHERE 条件字段上有索引,避免全表扫描锁表。

浙公网安备 33010602011771号