mysql的更新用法_mysql更新语句的详细用法-程序员宅基地

技术标签: mysql的更新用法  

9d5b7f8efbafd5af2ad24f39d706bf67.jpg

首先,单个表的UPDATE语句:

更新[LOW_PRIORITY] [IGNORE] tbl_name

SET col_name1 = expr1 [,col_name2 = expr2 ...]

[WHERE where_definition]

[ORDER BY ...]

[LIMIT row_count]

第二,多表UPDATE语句:

更新[LOW_PRIORITY] [IGNORE] table_references

SET col_name1 = expr1 [,col_name2 = expr2 ...]

[WHERE where_definition]

UPDATE语法可以使用新值更新原始表行中的列.

SET子句指示要修改的列以及要赋予的值. WHERE子句指定应更新的行.

如果没有WHERE子句,请更新所有行. 如果指定了ORDER BY子句,则按指定的顺序更新行.

LIMIT子句用于提供限制,以限制可以更新的行数.

UPDATE语句支持以下修饰符:

1. 如果使用LOW_PRIORITY关键字,则UPDATE的执行将延迟,直到没有其他客户端从表中读取为止.

2. 如果使用IGNORE关键字,即使在更新过程中发生错误,

如果出现重复的关键字冲突,则这些行将不会更新. 如果在更新列之后,新值将导致数据转换错误,则这些行将更新为最接近的合法值.

f2f5ba356eadce4667195c6d58cc77f2.jpg

如果通过表达式中的tbl_name访问列,则UPDATE将使用列中的当前值.

例如,将“年龄”列设置为比当前值多一:

复制代码,代码如下:

mysql>更新人员数据SET age = age + 1;

UPDATE分配是从左到右评估的.

例如,将“年龄”列加倍,然后增加:

复制代码,代码如下:

mysql>更新人员数据SET age = age * 2,age = age + 1;

如果将列设置为当前包含的值,MySQL会注意到这一点,但不会更新.

如果将已定义为NOT NULL的列更新为NULL,则该列将设置为与该列类型相对应的默认值update语句,并累积警告数.

对于数字类型,默认值为0;对于数字类型,默认值为0. 对于字符串类型,默认值为空字符串('');对于日期和时间类型,默认值为“零”.

UPDATE将返回实际更改的行数. Mysql_info()C API函数可以返回匹配和更新的行数,以及在UPDATE过程中生成的警告数.

您可以使用LIMIT row_count来限制UPDATE的范围. LIMIT子句是与行匹配的限制.

只要找到满足WHERE子句的row_count行update语句,该语句就会中止,无论这些行是否已更改.

如果UPDATE语句包含ORDER BY子句,则按该子句指定的顺序更新行.

您还可以执行包含多个表的UPDATE操作. table_references子句列出了联合中包含的表.

示例:

复制代码,代码如下:

d65b6b792fccea6ddf15ad2b4407b06b.png

SQL>更新项目,每月SET个项目. price= month.price

WHERE items.id = month.id;

注意: 上面的代码显示了使用逗号运算符的内部联合,但是多表UPDATE语句可以使用SELECT语句中允许的任何类型的联合,例如LEFT JOIN.

注意: 您不能同时将ORDER BY或LIMIT与多表UPDATE一起使用.

在已更改的多表UPDATE中,引用了一些列. 您只需要这些列的UPDATE权限. 读取了一些列,但未修改. 您只需要对这些列具有SELECT权限.

如果您使用的多表UPDATE语句包含具有外键限制的InnoDB表,则MySQL优化器处理表的顺序可能与上层和下层关系的顺序不同.

在这种情况下,该语句无效并回滚. 同时,更新单个表,并依靠ON UPDATE函数.

此功能由InnoDB提供,用于相应地修改其他表.

当前,您无法更新子查询中的表并同时从同一表中选择.

update语句的几种基本用法

A. 使用简单的UPDATE

以下示例显示了如果从UPDATE语句中删除WHERE子句,将如何影响所有行.

下面的示例说明了表发布者中的所有发布者如何将总部迁移到佐治亚州的亚特兰大,表发布者是如何更新的.

复制代码,代码如下:

更新发布者

设置城市='亚特兰大',州='GA'

此示例将所有发布者名称更改为NULL.

复制代码,代码如下:

773d299d5b7069e1b00ce399a1899b9b.png

更新发布者

SET pub_name = NULL

计算的值也可以在更新中使用. 此示例将表标题中的所有价格加倍.

复制代码,代码如下:

更新标题

设置价格=价格* 2

B. 将WHERE子句与UPDATE语句一起使用

WHERE子句指定要更新的行. 例如,在下面的虚拟事件中,北加利福尼亚州将其名称更改为Pacifica(缩写为PC),奥克兰市民投票将其城市名称更改为Bay City. 此示例显示如何为奥克兰市以前的所有居民(其地址已过时)更新表作者.

复制代码,代码如下:

更新作者

设置状态=“ PC”,城市=“海湾城市”

所在州='CA'和城市='奥克兰'

必须写另一条声明来更改北加利福尼亚其他城市居民的州名.

C. 通过UPDATE语句使用另一个表中的信息

此示例修改了titles表中的ytd_sales列,以反映表销售额中的最新销售记录.

复制代码,代码如下:

更新标题

SET ytd_sales = titles.ytd_sales + sales.qty

bebe4c4b863b7ae6de09e7793c73a8b0.png

FROM标题,销售

titles.title_id = sales.title_id

AND sales.ord_date =(从销售中选择MAX(sales.ord_date)个)

此示例假定特定产品仅记录特定日期的一批销售,并且更新是最新的. 如果不是这种情况(即,如果某个特定产品可以在同一天记录多个批次的销售),则此处显示的示例将出错. 该示例正常运行,但是无论当天实际销售多少批次,每个产品仅更新了一批销售量. 这是因为UPDATE语句永远不会更新同一行两次.

对于可以在同一天进行多批销售的特定产品,必须在UPDATE语句中将每种产品的所有销售加在一起,如下例所示:

复制代码,代码如下:

更新标题

SET ytd_sales =

(SELECT SUM(qty)

从销售

sales.title_id = titles.title_id

AND sales.ord_date IN(从销售中选择MAX(ord_date)个)

FROM标题,销售

D. 将UPDATE语句与SELECT语句中的TOP子句一起使用

此示例更新了authors表中前十位作者的状态列.

复制代码,代码如下:

更新作者

SET状态='ZZ'

从(从作者开始,按au_lname的顺序排序,前10位*)作为t1

wheres authors.au_id = t1.au_id

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-245186-1.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30471581/article/details/113462178

智能推荐

基于Kepler.gl 和 Google Earth Engine 卫星数据创建拉伸多边形地图-程序员宅基地

文章浏览阅读965次,点赞18次,收藏21次。现在我们有了 2021 年和 2023 年的 NDVI 数据帧,我们需要从 2021 年的值中减去 2023 年的值以捕获 NDVI 的差异。该数据集包括像素级别的植被值,我们将编写一个自定义函数来根据红色和绿色波段的表面反射率计算 NDVI。在我的上一篇文章中,我演示了如何将单个多边形分割/镶嵌为一组大小均匀的六边形。现在我们有了植被损失数据,让我们使用 Kepler.gl 可视化每个六边形的植被损失。将地图保存为 HTML 文件,在浏览器中打开 HTML 以获得更好的视图。现在我们将调用该函数并使用、

Echarts绘制任意数据的正态分布图_echarts正态分布图-程序员宅基地

文章浏览阅读3.3k次,点赞6次,收藏5次。正态分布,又称高斯分布或钟形曲线,是统计学中最为重要和常用的分布之一。_echarts正态分布图

Android中发送短信等普通方法_android bundle.get("pdus");-程序员宅基地

文章浏览阅读217次。首先要在Mainfest.xml中加入所需要的权限:[html] view plain copyprint?uses-permission android:name="android.permission.SEND_SMS"/> uses-permission android:name="android.permission.READ_SMS"/> _android bundle.get("pdus");

2021-07-26 WSL2 的安装和联网_wsl2 联网-程序员宅基地

文章浏览阅读2.6k次。0、说明最近在学习 Data Assimilation Research Testbed (DART) 相关内容,其软件是在 Unix/Linux 操作系统下编译和运行的 ,由于我的电脑是 Windows 10 的,DART 推荐可以使用 Windows Subsystem For Linux (WSL) 来创建一个 Windows 下的 Linux 子系统。以下的内容主要介绍如何安装 WSL2,以及 WSL2 的联网。1、如何在 Windows 10 下安装WSL具体的安装流程可以在 microso_wsl2 联网

DATABASE_LINK 数据库连接_添加 database link重复的数据库链接命-程序员宅基地

文章浏览阅读1k次。DB_LINK 介绍在本机数据库orcl上创建了一个prod_link的publicdblink(使用远程主机的scott用户连接),则用sqlplus连接到本机数据库,执行select * from scott.emp@prod_link即可以将远程数据库上的scott用户下的emp表中的数据获取到。也可以在本地建一个同义词来指向scott.emp@prod_link,这样取值就方便多了..._添加 database link重复的数据库链接命

云-腾讯云-实时音视频:实时音视频(TRTC)-程序员宅基地

文章浏览阅读3.1k次。ylbtech-云-腾讯云-实时音视频:实时音视频(TRTC)支持跨终端、全平台之间互通,从零开始快速搭建实时音视频通信平台1.返回顶部 1、腾讯实时音视频(Tencent Real-Time Communication,TRTC)拥有QQ十几年来在音视频技术上的积累,致力于帮助企业快速搭建低成本、高品质音视频通讯能力的完整解决方案。..._腾讯实时音视频 分享链接

随便推点

用c语言写个日历表_农历库c语言-程序员宅基地

文章浏览阅读534次,点赞10次,收藏8次。编写一个完整的日历表需要处理许多细节,包括公历和农历之间的转换、节气、闰年等。运行程序后,会输出指定年份的日历表。注意,这个程序只是一个简单的示例,还有很多可以改进和扩展的地方,例如添加节气、节日等。_农历库c语言

FL Studio21.1.1.3750中文破解百度网盘下载地址含Crack补丁_fl studio 21 注册机-程序员宅基地

文章浏览阅读1w次,点赞28次,收藏27次。FL Studio21.1.1.3750中文破解版是最优秀、最繁荣的数字音频工作站 (DAW) 之一,日新月异。它是一款录音机和编辑器,可让您不惜一切代价制作精美的音乐作品并保存精彩的活动画廊。为方便用户,FL Studio 21提供三种不同的版本——Fruity 版、Producer 版和签名版。所有这些版本都是独一无二的,同样具有竞争力。用户可以根据自己的需要选择其中任何一种。FL Studio21.1.1.3750中文版可以说是一站式综合音乐制作单位,可以让您录制、作曲、混音和编辑音乐。_fl studio 21 注册机

冯.诺伊曼体系结构的计算机工作原理是,冯 诺依曼型计算机的工作原理是什么...-程序员宅基地

文章浏览阅读1.3k次。冯诺依曼计算机工作原理冯 诺依曼计算机工作原理的核心是 和 程序控制世界上不同型号的计算机,就其工作原理而言,一般都是认为冯 诺依曼提出了什么原理冯 诺依曼原理中,计算机硬件系统由那五大部分组成的 急急急急急急急急急急急急急急急急急急急急急急冯诺依曼结构计算机工作原理的核心冯诺依曼结构和现代计算机结构模型 转载重学计算机组成原理 一 冯 诺依曼体系结构从冯.诺依曼的存储程序工作原理及计算机的组成来..._简述冯诺依曼计算机结构及工作原理

四国军棋引擎开发(2)简单的事件驱动模型下棋-程序员宅基地

文章浏览阅读559次。这次在随机乱下的基础上加上了一些简单的处理,如进营、炸棋、吃子等功能,在和敌方棋子产生碰撞之后会获取敌方棋子大小的一些信息,目前采用的是事件驱动模型,当下完一步棋界面返回结果后会判断是否触发了相关事件,有事件发生则处理相关事件,没有事件发生则仍然是随机下棋。1.事件驱动模型首先定义一个各种事件的枚举变量,目前的事件有工兵吃子,摸暗棋,进营,明确吃子,炸棋。定义如下:enum MoveE..._军棋引擎

STL与泛型编程-第一周笔记-Geekband-程序员宅基地

文章浏览阅读85次。1, 模板观念与函数模板简单模板: template< typename T > T Function( T a, T b) {… }类模板: template struct Object{……….}; 函数模板 template< class T> inline T Function( T a, T b){……} 不可以使用不同型别的..._geekband 讲义

vb.net正则表达式html,VB.Net常用的正则表达式(实例)-程序员宅基地

文章浏览阅读158次。"^\d+$"  //非负整数(正整数 + 0)"^[0-9]*[1-9][0-9]*$"  //正整数"^((-\d+)|(0+))$"  //非正整数(负整数 + 0)"^-[0-9]*[1-9][0-9]*$"  //负整数"^-?\d+$"    //整数"^\d+(\.\d+)?$"  //非负浮点数(正浮点数 + 0)"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0..._vb.net 正则表达式 取html中的herf