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;
相关推荐
派小心.17 分钟前
网站统计采样数据的误差核对
大数据·服务器·前端·数据库·人工智能·小程序·数据分析
SL_staff30 分钟前
低代码选型避坑指南:为什么‘能拖拽’不等于‘能交付’?——基于JVS八大引擎的四维交付能力评估框架
java·低代码·spring cloud
李福春1 小时前
技术思考问题6:技术演讲该晒成功架构,还是交代失败与取舍?
java·开发语言·架构·computer use·深圳同盟·腾讯云架构师技术同盟·反演思维
变与不变8061 小时前
防抖节流详解
开发语言·前端·javascript
A心有千千结1 小时前
通过 SSH 反向代理让服务器借用本机网络访问 GitHub 的最佳实践
linux·服务器·网络·git·ssh·github
用户7771298509121 小时前
equals和==的区别
java
用户72526496629691 小时前
浏览器为什么加载不了超大图片
前端·javascript
fengkai45451 小时前
十三、Zabbix 监控
运维·服务器·zabbix·监控·网络设备