正确使用MySQL update语句


Posted in MySQL onMay 26, 2021

以下的文章主要介绍的是MySQL update 语句的实际用法,我们首先是以单表的UPDATE语句来引出实现MySQL update 语句的实际方案,以下就是文章的详细内容描述。

单表的MySQL UPDATE语句:

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name 
SET col_name1=expr1 [, col_name2=expr2 ...] 
[WHERE where_definition] 
[ORDER BY ...] 
[LIMIT row_count]

多表的UPDATE语句:

UPDATE [LOW_PRIORITY] [IGNORE] table_references 
SET col_name1=expr1 [, col_name2=expr2 ...] 
[WHERE where_definition]

UPDATE语法可以用新值更新原有表行中的各列。SET子句指示要修改哪些列和要给予哪些值。WHERE子句指定应更新哪些行。如果没有WHERE子句,则更新所有的行。如果指定了ORDER BY子句,则按照被指定的顺序对行进行更新。LIMIT子句用于给定一个限值,限制可以被更新的行的数目。

MySQL UPDATE语句支持以下修饰符:

如果您使用LOW_PRIORITY关键词,则UPDATE的执行被延迟了,直到没有其它的客户端从表中读取为止。

如果您使用IGNORE关键词,则即使在更新过程中出现错误,更新语句也不会中断。如果出现了重复关键字冲突,则这些行不会被更新。如果列被更新后,新值会导致数据转化错误,则这些行被更新为最接近的合法的值。

如果您在一个表达式中通过tbl_name访问一列,则UPDATE使用列中的当前值。例如,以下语句把年龄列设置为比当前值多一:

MySQL> UPDATE persondata SET ageage=age+1;

MySQL UPDATE赋值被从左到右评估。例如,以下语句对年龄列加倍,然后再进行增加:

MySQL> UPDATE persondata SET ageage=age*2, ageage=age+1;

如果您把一列设置为其当前含有的值,则MySQL会注意到这一点,但不会更新。

如果您把被已定义为NOT NULL的列更新为NULL,则该列被设置到与列类型对应的默认值,并且累加警告数。对于数字类型,默认值为0;对于字符串类型,默认值为空字符串('');对于日期和时间类型,默认值为“zero”值。

UPDATE会返回实际被改变的行的数目。MySQL_info() C API函数可以返回被匹配和被更新的行的数目,以及在UPDATE过程中产生的警告的数量。

您可以使用LIMIT row_count来限定UPDATE的范围。LIMIT子句是一个与行匹配的限定。只要发现可以满足WHERE子句的row_count行,则该语句中止,不论这些行是否被改变。

如果一个UPDATE语句包括一个ORDER BY子句,则按照由子句指定的顺序更新行。

您也可以执行包括多个表的UPDATE操作。table_references子句列出了在联合中包含的表。以下是一个例子:

SQL>UPDATE items,month SET items.price=month.price 
WHERE items.id=month.id;
以上的例子显示出了使用逗号操作符的内部联合,但是multiple-table UPDATE语句可以使用在SELECT语句中允许的任何类型的联合,比如LEFT JOIN。

注释:您不能把ORDER BY或LIMIT与multiple-table UPDATE同时使用。

在一个被更改的multiple-table UPDATE中,有些列被引用。您只需要这些列的MySQL UPDATE权限。有些列被读取了,但是没被修改。您只需要这些列的SELECT权限。

如果您使用的multiple-table UPDATE语句中包含带有外键限制的InnoDB表,则MySQL优化符处理表的顺序可能与上下层级关系的顺序不同。在此情况下,语句无效并被 回滚。同时,更新一个单一表,并且依靠ON UPDATE功能。该功能由InnoDB提供,用于对其它表进行相应的修改。

目前,您不能在一个子查询中更新一个表,同时从同一个表中选择。

以上的相关内容就是对MySQL update的介绍,希望对大家的学习有所帮助。

MySQL 相关文章推荐
数据库的高级查询六:表连接查询:外连接(左外连接,右外连接,UNION关键字,连接中ON与WHERE的不同)
Apr 05 MySQL
MySQL数字类型自增的坑
May 07 MySQL
MySQL 覆盖索引的优点
May 19 MySQL
MySQL如何使用使用Xtrabackup进行备份和恢复
Jun 21 MySQL
为什么代码规范要求SQL语句不要过多的join
Jun 23 MySQL
解决mysql:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO/YES)
Jun 26 MySQL
低版本Druid连接池+MySQL驱动8.0导致线程阻塞、性能受限
Jul 01 MySQL
JMeter对MySQL数据库进行压力测试的实现步骤
Jan 22 MySQL
彻底解决MySQL使用中文乱码的方法
Jan 22 MySQL
Mysql存储过程、触发器、事件调度器使用入门指南
Jan 22 MySQL
mysql 获取时间方式
Mar 20 MySQL
MySQL视图概念以及相关应用
Apr 19 MySQL
详解MySQL集群搭建
MySQL中VARCHAR与CHAR格式数据的区别
May 26 #MySQL
修改MySQL的默认密码的四种小方法
May 26 #MySQL
修改MySQL的数据库引擎为INNODB的方法
May 26 #MySQL
Mysql数据库命令大全
May 26 #MySQL
Mysql基础知识点汇总
May 26 #MySQL
my.ini优化mysql数据库性能的十个参数(推荐)
May 26 #MySQL
You might like
php连接mssql数据库的几种方法
2013/02/21 PHP
Laravel 5框架学习之表单
2015/04/08 PHP
在phpstudy集成环境下的nginx服务器下配置url重写
2019/12/02 PHP
laravel admin实现分类树/模型树的示例代码
2020/06/10 PHP
window.showModalDialog使用手册
2007/01/11 Javascript
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
2011/11/15 Javascript
javascript中的document.open()方法使用介绍
2013/10/09 Javascript
兼容主流浏览器的iframe自适应高度js脚本
2014/01/10 Javascript
jQuery插件实现大图全屏图片相册
2015/03/14 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
2015/08/27 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
2016/04/08 Javascript
js 判断各种数据类型的简单方法(推荐)
2016/08/29 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(二)
2016/09/14 Javascript
详解JS去重及字符串奇数位小写转大写
2016/12/29 Javascript
angularjs下拉框空白的解决办法
2017/06/20 Javascript
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
vue引用js文件的多种方式(推荐)
2018/05/17 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
vue实现整屏滚动切换
2020/06/29 Javascript
Node.js 中如何收集和解析命令行参数
2021/01/08 Javascript
Python实现将Excel转换成xml的方法示例
2018/08/25 Python
python实现从pdf文件中提取文本,并自动翻译的方法
2018/11/28 Python
对python中的os.getpid()和os.fork()函数详解
2019/08/08 Python
Python3搭建http服务器的实现代码
2020/02/11 Python
基于python实现音乐播放器代码实例
2020/07/01 Python
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
进程的查看和调度分别使用什么命令
2013/12/14 面试题
应届大学生求职信
2013/12/01 职场文书
护士自我介绍信
2014/01/13 职场文书
班子群众路线教育实践个人对照检查材料思想汇报
2014/09/30 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
2014年党委工作总结
2014/11/22 职场文书
2015小学教师德育工作总结
2015/05/12 职场文书
宝宝满月祝酒词
2015/08/10 职场文书
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL
浅谈css清除浮动(clearfix和clear)的用法
2023/05/21 HTML / CSS