MySQL实现数据更新的示例详解
作者:酸菜鱼土豆大侠 发布时间:2024-01-13 23:13:44
一般在更新时会遇到以下场景:
1.所有字段全部更新;
2.根据条件更新字段中的某部分内容;
3.根据不同的条件更新不同的值
以下是几种场景中常用的update方法。
一、方法分类
二、具体用法
(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 条件];
三、实例
students 表 (id表示主键,name是姓名,score是平均成绩)
id | name | score |
---|---|---|
1 | 李明 | 99 |
2 | 张三 | 74 |
3 | 孙华 | 59 |
(1)根据条件更新值
把 students 表中 name 为张三的 score 字段的值全部修改为100。
#使用where
update students
set score = 100
where name = '张三';
id | name | score |
---|---|---|
1 | 李明 | 99 |
2 | 张三 | 100 |
3 | 孙华 | 59 |
把 students 表中 id 大于等于2的所有行中 score 中59的部分全部修改为0,name 中三的部分全部修改为四。
#使用replace
update students
set score = replace(score,59,0),
name = replace(name,'三','四')
where id >= 2;
注意:张三替换之后是张四,并不是只有字段等于三时才能替换。
id | name | score |
---|---|---|
1 | 李明 | 99 |
2 | 张四 | 74 |
3 | 孙华 | 0 |
(2)按照不同条件更新不同值
请把students表中score小于60的score字段全部改为0,否则改为100,name字段中的名字改为不及格,否则改为及格。
#批量更新多值 + if
update students
set
score = if(score < 60,0,100),
name = if(score < 60,'不及格','及格');
id | name | score |
---|---|---|
1 | 及格 | 100 |
2 | 及格 | 100 |
3 | 不及格 | 0 |
注意:更新的值要满足建表时的字段类型。比如score是int类型就不能更新为char类型。
请把students表中score小于60的score字段全部改为0,name字段中的名字改为不及格;score大于等于90的score字段全部改为2,name字段中的名字改为优秀;score大于等于60小于90的score字段全部改为1,name字段中的名字改为良好。
#批量更新多值 + case when
update students
set
name = case
when score < 60 then '不及格'
when score >= 90 then '优秀'
else '良好'
end,
score = case
when score < 60 then 0
when score >= 90 then 2
else 1
end;
注意:更新的时候是按照代码语句的先后顺序更新的。可以尝试先更新score后更新name,结果是不一样的。
id | name | score |
---|---|---|
1 | 优秀 | 2 |
2 | 良好 | 1 |
3 | 不及格 | 0 |
来源:https://www.cnblogs.com/chengyj/p/17101282.html
猜你喜欢
- 一、PillowPIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但
- 前言相关性分析算是很多算法以及建模的基础知识之一了,十分经典。关于许多特征关联关系以及相关趋势都可以利用相关性分析计算表达。其中常见的相关性
- 代理模式Proxy模式是一种常用的设计模式,它主要用来通过一个对象(比如B)给一个对象(比如A) 提供'代理'的方式方式访问
- 最近在做编程练习,发现有些结果的值与答案相差较大,通过分析比较得出结论,大概过程如下:定义了一个计算损失的函数:def error(yhat
- 一、安装pip2pi工具:pip install pip2pi或:git clone https://github.com/wolever/
- 简介:上文中已经介绍如何安装Pycharm已经环境变量的配置。现在软件已经安装成功,现在就开始动手做第一个Python项目。第一个“Hell
- 1.创建数据库表--使用哪个数据库,如果不写这一句是默认的数据库,也可以用鼠标选当前数据库use testDB--创建表 Cre
- (一)、tf.train.Saver()(1). tf.train.Saver() 是用来保存tensorflow训练模型的,默认保存全部参
- 首先检查MySQL 服务没有启动》如果没有启动,则要启动这个服务。有时候安装mysql后使用mysql命令时报错 Can'
- 前言Python 的random模块包含许多随机数生成器。random是Python标准库之一,直接导入即可使用。本文介绍random中常用
- 本文实例讲述了ES6新特性中的let和const命令。分享给大家供大家参考,具体如下:1. let 命令① 在js中是没有块级作用域的,va
- 简介Button(按钮)组件用于实现各种各样的按钮。Button 组件可以包含文本或图像,你可以将一个 Python 的函数或方法与之相关联
- 这是我上一篇关于安全的文章的其中一节。这是一个众所周知的事实,对你运行中的网站的MySQL数据库备份是极为重要的只需按照下面3步做,一切都在
- Session作用Session的根本作用就是在服务端存储用户和服务器会话的一些信息。典型的应用有:1、判断用户是否登录。2、购物车功能。s
- 目录1. python内置方法(read、readline、readlines)2. 内置模块(csv)3. 使用numpy库(loadtx
- this 的定义表示当前执行代码的环境对象 因此可将 this 的剖析分为“全局环境” 和 “函数环境” 两种类型的环境对象全局环
- 在python中常看到在定义函数是使用@func. 这就是装饰器, 装饰器是把一个函数作为参数的函数,常常用于扩展已有函数,即不改变当前函数
- 本文实例讲述了C#操作SQLite数据库方法。分享给大家供大家参考,具体如下:SQLite介绍SQLite is a software li
- 本文实例讲述了php计算两个整数的最大公约数常用算法。分享给大家供大家参考。具体如下:<?php//计时,返回秒function&nb
- 生成txt文件:mesg = "hello world"with open("test.txt",