SQL113+114 更新记录(一)(二)+更新数据知识总结

MySQL 更新数据(知识点)

(1)根据条件更新值

根据指定条件更新(多列)(全部更新)

把表中 符合条件的行的 列名1字段中的值全部修改为值1 ,列名2字段中的值修改为值2

update 表名
set 列名1 = 值1 ,列名2=值2
where 条件;

替换指定值(多列)(部分更新)

把表中 符合条件的行的 列名1字段中的查找内容全部修改为替换内容 ,列名2字段中的查找内容全部修改为替换内容

update 表名
set 列名1 = replace(列名1, '查找内容', '替换内容') ,列名2 = replace(列名2, '查找内容', '替换内容')

where 条件;

(2)按照不同条件(批量)更新不同值

使用 if

把表中 符合条件的行的 列名1字段中符合条件1的内容修改为值1,否则修改为值2 ,列名2字段中符合条件2的内容修改为值3,否则修改为值4

update table
set

列名1 = if(条件1,值1,值2),

列名2 = if(条件2,值3,值4)

where 条件

使用 case when

把表中 符合条件的行的 列名1字段中符合条件1的内容修改为值1 ,符合条件2的修改为值2,... ,列名2字段中符合条件21的内容修改为值21,符合条件22的修改为值22,...

update table
set 列名1 =

case

when 条件1 then 值1

when 条件2 then 值2

when 条件3 then 值3

...

end,

列名2 =

case

when 条件21 then 值21

when 条件22 then 值22

when 条件23 then 值23

...

end

where 条件;


SQL113 更新记录(一)

  • 语义为『当tag为PYTHON时,修改tag为Python』

第一种:

复制代码
UPDATE examination_info
SET tag = "Python"
WHERE tag = "PYTHON";

第二种:

复制代码
UPDATE examination_info
SET tag = REPLACE(tag, "PYTHON", "Python")
WHERE tag = "PYTHON";

第二种本题语法上可以省略 WHERE 子句,但业务逻辑上通常不能省略,具体原因如下:
1. 省略 WHERE 的后果

UPDATE 语句如果不带 WHERE 子句,会对表中所有行执行 SET 操作。

原语句的 WHERE tag = "PYTHON" 是只更新那些 tag 字段完全等于 "PYTHON" 的行。

省略 WHERE 后,表中所有行的 tag 字段都会被执行 REPLACE(tag, "PYTHON", "Python"),哪怕 tag 里只是包含 "PYTHON" 子串(比如 "PYTHON基础"、"高级PYTHON"),都会被替换成 "Python",这会导致数据被意外修改。

2. 保留 WHERE 的意义

原语句中的 WHERE 子句是精准筛选,确保只修改符合条件的行,避免全表更新带来的风险。

例如:如果表中有一行 tag 是 "PYTHON数据分析",原语句不会修改它;但省略 WHERE 后,这行的 tag 会被改成 "Python数据分析",这通常不是预期结果。

思维扩展:

第二种方式不仅可用于整体替换,还能做子串替换,例如要实现将tag中所有的PYTHON替换为Python(如CPYTHON=>CPython)

复制代码
UPDATE examination_info
SET tag = REPLACE(tag, "PYTHON", "Python")
WHERE tag LIKE "%PYTHON%";

SQL114 更新记录(二)

复制代码
update exam_record
set submit_time='2099-01-01 00:00:00',score=0
where start_time<'2021-09-01 00:00:00' and score is null;
相关推荐
子兮曰1 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
小羊没烦恼!1 天前
微服务化的基石——持续集成
java·大数据·word·powerpoint·.net
子兮曰1 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
俊昭喜喜里1 天前
java中的继承和多态的区别
java
小羊没烦恼!1 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
前端小万1 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝1 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
譕痕1 天前
JSONObject与JSONArray封装数据格式区别
java·json
虎头金猫1 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
胡写代码1 天前
别再前后端各写一套表单校验了
java·后端