MySQL 更新语句

一则或许对你有用的小广告

欢迎加入小哈的星球 ,你将获得:专属的项目实战 / 1v1 提问 / Java 学习路线 / 学习打卡 / 每月赠书 / 社群讨论

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/

截止目前, 星球 内专栏累计输出 66w+ 字,讲解图 2896+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 2300+ 小伙伴加入学习 ,欢迎点击围观

在 MySQL 中,UPDATE 语句用于修改表中已存在的数据。通过 UPDATE,我们可以更新特定行的数据、批量修改多行数据,甚至可以基于条件有选择性地更新数据。熟练掌握 UPDATE 语句及其使用技巧,可以帮助我们更高效地管理和维护数据库中的数据。

1. 基本语法

UPDATE 语句的基本语法如下:

UPDATE 表名
SET 列1 = 新值1, 列2 = 新值2, ...
[WHERE 条件];
  • 表名:需要更新数据的表。
  • SET:指定需要更新的列和相应的新值。
  • WHERE:可选项,用于指定更新的条件。如果没有 WHERE 条件,将更新表中的所有行。

2. 示例:更新单个列

假设有一个员工表 t_employee,包含员工的 ID、姓名、职位和薪资。我们希望将某个员工的职位更新为 "项目经理":

UPDATE t_employee
SET position = '项目经理'
WHERE employee_id = 101;

上述语句会将 employee_id101 的员工职位更改为 "项目经理"。注意:如果不加 WHERE 条件,将会更新 t_employee 表中的所有行。

3. 更新多个列

UPDATE 语句可以一次更新多个列的值。假设我们希望同时更新员工的职位和薪资:

UPDATE t_employee
SET position = '项目经理', salary = 7500
WHERE employee_id = 102;

此语句会将 employee_id102 的员工职位更新为 "项目经理",并将薪资更新为 7500。

4. 使用条件批量更新

在一些场景中,我们可能需要更新满足特定条件的多行数据。例如,我们希望将所有职位为 "中级工程师" 且薪资小于 5000 的员工薪资提高到 5500:

UPDATE t_employee
SET salary = 5500
WHERE position = '中级工程师' AND salary < 5000;

此语句会批量更新符合条件的所有行。

5. 使用子查询进行更新

我们可以在 UPDATE 语句中使用子查询来动态获取新值。假设有一个 departments 表,记录了每个部门的平均薪资。我们希望将 t_employee 表中所有员工的薪资更新为其部门的平均薪资:

UPDATE t_employee AS e
JOIN departments AS d ON e.department_id = d.department_id
SET e.salary = d.avg_salary;

此语句通过连接 departments 表,将 t_employee 表中员工的薪资更新为对应部门的平均薪资。

6. 使用 LIMIT 限制更新的行数

在更新大量数据时,可以使用 LIMIT 子句限制更新行数,防止影响过多的记录。假设我们希望将薪资低于 4000 的 5 名员工的薪资提高至 4000:

UPDATE t_employee
SET salary = 4000
WHERE salary < 4000
LIMIT 5;

此语句只会更新满足条件的前 5 行数据。

7. 事务与更新操作

在更新重要数据时,使用事务可以保证数据的安全性。事务允许我们在更新多个表或多行数据时,确保操作的原子性。假设我们需要同时更新两个表中的数据,可以使用事务:

START TRANSACTION;

UPDATE t_employee
SET salary = salary + 500
WHERE employee_id = 101;

UPDATE payroll
SET salary = salary + 500
WHERE employee_id = 101;

COMMIT;

通过 START TRANSACTIONCOMMIT,我们确保两个 UPDATE 语句都执行成功,否则可以通过 ROLLBACK 撤销更新。

8. 使用 ORDER BYLIMIT 更新特定行

有时我们需要基于特定条件只更新一部分数据,可以结合 ORDER BYLIMIT 使用。例如,我们希望将薪资最低的 3 名员工的薪资更新为 4500:

UPDATE t_employee
SET salary = 4500
ORDER BY salary ASC
LIMIT 3;

此语句会将薪资最低的 3 名员工的薪资更新为 4500。

9. 小结

UPDATE 语句是 MySQL 数据库中更新数据的重要工具。掌握 UPDATE 的用法,包括单列和多列更新、条件更新、使用子查询、事务、以及 ORDER BYLIMIT 的组合,可以帮助我们在实际项目中高效、安全地进行数据维护。合理使用 UPDATE 能优化数据操作的性能,同时保持数据的完整性与一致性。