跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

如何在mysql中更新数据_mysql update语句基础讲解

MySQL更新数据需用UPDATE语句,必须配合WHERE条件定位行,否则将全表误更新;语法为UPDATE表名SET列=值,...WHERE条件。 在 MySQL 中更新数据,核心就是使用 UPDATE 语句。它能修改表中已存在的一行或多行记录,但必须配合 WHERE 条件使用,否则会误改整张表——这是新手最容易踩的坑。 UPDATE 语句基本语法结构 标准写法如下:
UPDATE 表名 SET 列名1 = 新值1, 列名2 = 新值2 WHERE 条件;
说明: SET 后面跟的是“列 = 值”的赋值对,多个用英文逗号分隔 WHERE 是关键,用于定位要更新的行;没有 WHERE 就是全表更新,风险极高 条件支持比较运算符(=、!=、>、 安全更新前的三个习惯 避免误操作,建议养成以下操作习惯: MySQL(Linux) MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。 下载 先用 SELECT 语句查出目标数据,确认 WHERE 条件是否准确。例如:
SELECT * FROM users WHERE id = 105;
在执行 UPDATE 前,开启事务(
START TRANSACTION;
),更新后用
SELECT
验证,没问题再
COMMIT;
,出错就
ROLLBACK;
生产环境尽量避免直接在命令行执行无备份的 UPDATE,优先走带审核的运维平台或脚本 常见更新场景示例 假设有一张
orders
表,含字段
id
、
status
、
amount
、
updated_at
: 更新单条订单状态:
UPDATE orders SET status = 'shipped' WHERE id = 2001;
批量更新多条(如所有待支付订单改为已取消):
UPDATE orders SET status = 'cancelled', updated_at = NOW() WHERE status = 'pending';
基于其他列计算更新:
UPDATE products SET price = price * 0.9 WHERE category = 'clearance';
(打九折) 用子查询更新(需注意 MySQL 版本限制):
UPDATE users SET city_id = (SELECT id FROM cities WHERE name = 'Beijing') WHERE city = 'Beijing';
容易忽略的关键细节 这些点不注意,可能让更新“看似成功”却没达到预期: 字符串值要用单引号包裹,数字不用,比如
SET name = 'Alice', age = 28
NULL 值要写成
NULL
(不加引号),不是
'NULL'
时间字段推荐用
NOW()
或
CURRENT_TIMESTAMP
,而不是手动拼日期字符串 如果 WHERE 条件没匹配到任何行,MySQL 会返回 “0 rows affected”,这不是错误,只是没更新成功

相关文章