常常使用的到了更新操作。学习后,知道了update还有其他一些用法,以前并不知道。现在进行总结

一、update后面使用order by的情况

什么时候有必要增加order by:假如一个表中有自增型或者唯一键id。当想实现对所有id都加一。就会用到类似如下的sql:

update teams set teamno=teamno+1
此时就会出现问题,假如有两行数据,一行的teamno=6,另一行的teamno=7。当执行teamno=teamno+1语句,6的值加上1变成7,但是还存在teamno=7的一行,那么就会出现重复而报错。解决办法是,
先让teamno=7的行执行更新,然后才让teamno=6的行执行更新。这样就不会出现重复冲突情况。使用 order by可以指定更新的顺序。

sql语句修改为:update teams set teamno=teamno+1 order by teamno desc

成功运行。

总结:因为主键,unique都会要求值是唯一的。更新会出现值重复错误。所以只有针对字段值限制是唯一的时候,使用update才有必要添加order by

二、update交换列值的测试:
sql语句  update teams set playerno=division,division=playerno where teamno=129

结果:两个字段的值变为一样了。

结论:按照顺序去执行,先执行了playerno=division。后面执行division=playerno的时候,因为前面playerno导致的值已经改变了,因而不是过去的值,将最新的playerno的值赋给了division。结果,我们

看到两个字段的值变成一样了。

三、update 更新多表的实践:

update players as p,teams as t set p.name='测试update更新多表',t.playerno='测试多表更新'  where p.name='个人各个' and t.playerno='jgjgg'

执行上面语句结果:由于 t.playerno='jgjgg'找不到对于的行,因而这个update语句没有执行set子句的操作。

是通过where条件来保证,两次update操作视为一个事务保持完整性。

完全可以分成两次update,如果分解成两个步骤就是:
update players as p set p.name='测试update更新多表'  where p.name='个人各个'

update teams as t set t.playerno='测试多表更新' where t.playerno='jgjgg'

也是可以完成上面的操作。

使用多表更新的方式有什么好处?

在多表更新语法中,多次update操作视为一个事务保持完整性,只要其中一个更新失败。那么其他的更新是不会执行的。比如上面的测试结果就说明这点了。

归纳为:sql语句更简洁。操作更加安全。

不正确之处,欢迎指正!

转载于:https://www.cnblogs.com/wangtao_20/archive/2011/02/23/1962148.html

深入update语句(延伸学习)相关推荐

  1. 零基础带你学习MySQL—Update语句以及注意事项(八)

    零基础带你学习MySQL-Update语句以及注意事项(八) 一.Update语句的基本语法 二.Update语句的注意事项

  2. 零基础学习数据库SQL教程(一)(简单的SELECT语句 简单的INSERT语句 简单的UPDATE语句 简单的DELETE语句)

    写在前面的话:本文章内容是自己在LintCode网站SQL教程学习过程中做的学习总结,以便自己复习和大家学习,如果去刷此网站的题,也可以把此文作为参考答案来使用.例题的答案是本人所写,并且已经运行成功 ...

  3. access update语句执行_SQL Server与Access数据库sql语法十大差异

    本文总结了SQL Server与Access数据库sql语法的十大差异. ACCESS结构简单容易处理,而且也能满足多数的应用程序要求,也是初学者的试牛刀. 随着时间的推移,大多数数据库应用程序都会发 ...

  4. mysql 合并两个update_如何将多条update语句合并为一条

    需求: 如何将多条update语句合并为一条update语句: 如,update table1 set col='2012' where id='2014001' update table1 set  ...

  5. SQL Server UPDATE语句用于更新数据

    SQL Server UPDATE语句用于更新数据,下面就为您详细介绍SQL Server UPDATE语句语法方面的知识,希望可以让您对SQL Server UPDATE语句有更多的了解. 现实应用 ...

  6. mysql update set_mysql update语句的用法详解

    本文详细介绍了,mysql中update语句的用法,系统全面的学习下update更新语句的用法,有需要的朋友可以参考下 首先,单表的UPDATE语句: UPDATE [LOW_PRIORITY] [I ...

  7. php update语句,php中update语句用法介绍

    php中update语句用法介绍 发布时间:2020-06-12 16:40:44 来源:亿速云 阅读:175 作者:小新 本篇文章和大家了解一下php中update语句用法介绍.有一定的参考价值,有 ...

  8. update语句的执行过程

    更多内容关注微信公众号:fullstack888 昨天很多同学在后台问,为什么Update是二阶段提交?紧接上文,我们了解了:深入理解Mysql执行过程及执行顺序.今天我们主要分析一下update语句 ...

  9. mysql的更新语句_IT大叔详谈mysql中update语句和delete语句及应用

    学习是一件枯燥的事,你要牺牲自己的业余时间,你要忍受孤独,坚持下来了你就胜利了,学习是一个过程,只要循序渐进,每天进步一点点,只有这样你才能提高进而成功.今天老韩来讲一讲mysql中的update语句 ...

最新文章

  1. Mysql高级调优篇——第二章:Explain执行计划深度剖析
  2. Emacs之爬坑日记(一)
  3. 用户登录验证(新增帐号错误重试)
  4. MySQL多对多创建表语句(防忘记)
  5. 一段字符串修改某一个位置的值
  6. 【GCN】从文本分类来看图卷积神经网络
  7. VirtualDub - 开源视频捕捉及线性处理软件
  8. python打包成exe文件
  9. kmeans算法c语言代码,ML算法与代码实现——Kmeans(案例)
  10. MySQL教程:MySQL数据库学习宝典(从入门到精通)
  11. acrobat PDF删除部分_【低碳环保打印四大金刚】四款优秀的专业PDF虚拟打印机分享...
  12. 国内镜像源的使用,提高下载速度
  13. 高绩效团队-VUCA时代的五个管理策略《一》—全书回顾
  14. ccid linux,在Linux环境下搭建CCID测试环境
  15. python实现转置矩阵_用Python转置矩阵?
  16. SDUT 3386 小雷的冰茶几
  17. 阿里云短信服务——短信发送验证码
  18. linux python2.7安装pymysql
  19. 淘宝sku API 接口(PHP示例)
  20. Metal Stack(Metal Scheme)

热门文章

  1. RxJava中的doOnSubscribe默认运行线程分析
  2. iOS设计模式 - 组合
  3. 【bzoj1597】 土地购买
  4. C++/C语言实现HTTP的GET和POST请求
  5. visualstudio2015无法打开包括文件stdio.h等
  6. C#复制和深度复制的实现方法
  7. IOS基础之打砖块项目演练
  8. object 'libproxychains.so.3' from LD_PRELOAD cannot be preloaded
  9. SQL注入-SQLMAP基础使用(十二)
  10. Android recyclerView/listview的点击变色、点击换背景颜色