MySQL UPDATE 查询示例

⚡ 智能摘要

MySQL UPDATE 查询用于修改表中的现有行,可以在单个语句中更改一个或多个字段。本资源解释了 UPDATE 语法、WHERE 筛选条件、成员表的示例以及防止意外批量更新的安全措施。

  • ✏️ 核心声明: UPDATE `table_name` SET `column_name` = 'new_value' [WHERE condition] 会重写与筛选条件匹配的每一行中的值。
  • ⚠️ 省略了“地点”: 如果没有 WHERE 子句,UPDATE 语句会重写表中每一行的列。
  • 🔢 值格式化: 字符串和日期值需要用单引号括起来,数值不需要,日期格式为“YYYY-MM-DD”。
  • 🧩 多列: 用逗号分隔每个赋值语句,即可在一个语句中更新多个字段。
  • 🔍 验证步骤: 首先将 WHERE 子句作为 SELECT 语句运行,然后在 UPDATE 之后重复运行以确认新值。
  • 🛡️ 安全更新模式: MySQL Workbench 会拒绝任何 WHERE 子句未按关键列进行筛选的 UPDATE 操作。

什么是 UPDATE 查询?

更新 MySQL UPDATE 命令用于修改表中的行。UPDATE 查询可以同时更改单个字段或多个字段。它还可以用于更新…… MySQL 表格中的值取自另一个表格。

为什么要使用 UPDATE 查询? MySQL?

数据很少能永远保持正确。会员的电话号码会更改,价格会变动,订单状态也会从待处理变为已发货。删除旧行并插入新行会破坏主键和所有外键引用。UPDATE 语句会就地修改行,因此标识和关联关系不会因更改而改变。

在以下情况下,UPDATE 查询是正确的选择:

  • 数值有误或已过时: 更正拼写错误的姓名或刷新联系电话,而无需更改记录的其他部分。
  • 状态必须向前推进: 通过重写一列,将订单状态从“待处理”更改为“已发货”。
  • 多个领域同时发生变化: 一条语句可以在同一次传递中设置新名称和新地址。
  • 需要进行大规模修正: WHERE 子句如果匹配多行,则会对所有行一次性应用相同的编辑。

因为没有 WHERE 子句的 UPDATE 操作会重写每一行,所以过滤器可以将例行更正与意外覆盖区分开来。

MySQL 更新命令语法

确定了目标之后,下一步就是语法。UPDATE 查询的基本形式如下: MySQL 如下所示。

UPDATE `table_name` SET `column_name` = 'new_value' [WHERE condition];

位置:

  • 更新 `table_name` 是告诉的命令 MySQL 修改表格中的数据。
  • 设置 `column_name` = 'new_value' 指定要受 UPDATE 查询影响的字段的名称和值。设置值时,字符串数据类型必须用单引号括起来。数值不需要引号。日期值必须用单引号括起来,并采用“YYYY-MM-DD”格式。
  • [WHERE 条件] 此选项为可选参数,可用于应用筛选器,限制受 UPDATE 查询影响的行数。完整的选项列表请参见[此处]。 MySQL 更新声明手册.

现在让我们来看一个更新成员表中数据的实际例子。

更新 MySQL 例如:

假设会员编号为 1 和 2 的会员的记录需要进行以下更新。

会员号码 需要更新
1 将联系电话从999更改为0759 253 532
2 将姓名更改为 Janet Smith Jones,并将实际地址更新为 Melrose 123。

更新单列

我们从会员编号 1 开始。在进行任何更改之前,让我们先检索该记录。

SELECT * FROM `members` WHERE `membership_number` = 1;

执行上述脚本将得到以下结果。

会员号码 全名 性别 出生日期 实际地址 邮政地址 联系电话 电子邮件
1 珍妮特琼斯 (女) 21-07-1980 第一街 4 号地块 私人包 999 janetjones@yagoo.cm

现在让我们使用下面显示的脚本来更新联系电话。

UPDATE `members` SET `contact_number` = '0759 253 532' WHERE `membership_number` = 1;

执行上述脚本会将会员编号为 1 的联系电话从 999 更改为 0759 253 532。重新运行 SELECT 语句会确认新值。

会员号码 全名 性别 出生日期 实际地址 邮政地址 联系电话 电子邮件
1 珍妮特琼斯 (女) 21-07-1980 第一街 4 号地块 私人包 0759 253 532 janetjones@yagoo.cm

更新多列

会员编号 2 需要同时修改两个字段。这是更新前的记录。

会员号码 全名 性别 出生日期 实际地址 邮政地址 联系电话 电子邮件
2 史密斯·琼斯 (女) 23-06-1980 公园街 jj@fstreet.com

以下脚本使用一条语句更新两列数据。请注意,两个赋值语句之间用逗号分隔。

UPDATE `members` SET `full_names` = 'Janet Smith Jones', `physical_address` = 'Melrose 123' WHERE `membership_number` = 2;

执行上述脚本会将会员编号 2 的全名更新为 Janet Smith Jones,并将实际地址更新为 Melrose 123。

会员号码 全名 性别 出生日期 实际地址 邮政地址 联系电话 电子邮件
2 珍妮特·史密斯·琼斯 (女) 23-06-1980 梅尔罗斯 123 jj@fstreet.com

💡提示: “”WHERE 子句“”参数限制了受 UPDATE 查询影响的行数。如果省略此参数,则表中的每一行都会被重写。

常见问题

MySQL 返回“匹配行数”和“更改行数”。“匹配行数”显示 WHERE 子句选择的行数,而“更改行数”则排除新值与旧值相同的行。

是的。将 UPDATE 与 a 结合使用 注册 并在 SET 子句中引用第二个表。连接条件决定哪个源行为每个目标行提供新值。

将其封装在事务中。先执行 START TRANSACTION,再执行 ROLLBACK 即可恢复旧值。更改提交后,只能通过备份恢复先前的数据,因此请先使用 SELECT 语句测试 WHERE 子句。

是的。AI 助手会将描述的更改转换为 UPDATE 语法,并建议 WHERE 子句。请将表结构提供给模型,然后在运行生成的查询之前,使用 SELECT 语句验证筛选条件。

AI 模型无法看到您的实时数据行,因此 WHERE 子句稍有错误就可能在不知不觉中重写数千条记录。 Rev查看生成的每条语句,在暂存副本上运行它,并保留最新的备份。

总结一下这篇文章: