Update语句
- update语句用于修改表中已经存在的数据
- 单表修改语句结构
- 多表修改语句结构
- update语句的常规用法
update students set sname='abcd',gender='1' where sid=1;
update students,students2 set students.sname=students2.sname,students.gender=students2.gender where students.sid=students2.sid;
- 单表修改是指修改指定单个表中的已经存在数据的一个或多个列 的数值;set短语后面跟要修改的列和值;
- where子句表示限定要修改表中的哪些行数据,如果没有where子 句则表示所有行都要修改;order by子句表示update数据按照指定 的顺序进行;limit子句表示限定修改数据的行数
- 多表修改是指修改table_references指定的多个表中满足条件的行 数据,多表修改不允许使用order by和limit子句
- 执行update语句需要修改表的权限
- Low_priority关键词表示修改语句需要等待其他链接的读此表操作
- 结束后再执行,只作用在MyISAM, MEMORY, and MERGE存储引擎
- Ignore关键词表示当修改语句碰到违反唯一性约束条件等情况是, 语句不会报错回退而是报警告信息
update students set sname=‘abc’ limit 2; -- 只修改首先找到的两行 记录
Update students set sid=1 where sid=2; -- 执行失败,违反唯一性 约束
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
Update ignore students set sid=1 where sid=2; -- 执行成功但数据 不会修改
以下语句的col1只会比原值增加1
UPDATE t1 SET col1 = col1 + 1;
以下语句的col2和col1的结果是一样的
UPDATE t1 SET col1 = col1 + 1, col2 = col1;
Order by指定update数据的顺序
- 在某些情况下可以避免错误的发生,比如t 表中的id字段是有唯一约束的,则以下第一个语句执行会报错,而第二个语 句执行则正常
UPDATE t SET id = id + 1;
UPDATE t SET id = id + 1 ORDER BY id DESC;
mysql> update students2 set sid=sid+1;
ERROR 1062 (23000): Duplicate entry '2' for key 'PRIMARY'
mysql> update students2 set sid=sid+1 order by sid desc;
Query OK, 2 rows affected (0.04 sec)
Rows matched: 2 Changed: 2 Warnings: 0
多表修改举例(表之间通过where条件进行join操作)
UPDATE items,month SET items.price=month.price WHERE items.id=month.id;
练习
- 将所有学号小于等于100的学生的系改为education系
- 将姓名为ruth且id在100和200之间的老师的姓名改成carey
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!