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 条件字段上有索引,避免全表扫描锁表。
posted @ 2026-08-31 23:06  IT_IOS_MAN  阅读(13)  评论(0)    收藏  举报