更新数据是使用数据库时最重要的任务之一。 在本教程中,您将学习如何使用MySQL UPDATE语句来更新表中的数据。

1. MySQL UPDATE语句简介

我们使用UPDATE语句来更新表中的现有数据。也可以使用UPDATE语句来更改表中单个行,一组行或所有行的列值。

下面说明了MySQL UPDATE语句的语法:

UPDATE [LOW_PRIORITY] [IGNORE] table_name

SET

column_name1 = expr1,

column_name2 = expr2,

...

WHERE

condition;

SQL

在上面UPDATE语句中:

首先,在UPDATE关键字后面指定要更新数据的表名。

其次,SET子句指定要修改的列和新值。要更新多个列,请使用以逗号分隔的列表。以字面值,表达式或子查询的形式在每列的赋值中来提供要设置的值。

第三,使用WHERE子句中的条件指定要更新的行。WHERE子句是可选的。 如果省略WHERE子句,则UPDATE语句将更新表中的所有行。

请注意,WHERE子句非常重要,所以不应该忘记指定更新的条件。 有时,您可能只想改变一行; 但是,可能会忘记写上WHERE子句,导致意外更新表中的所有行。

MySQL在UPDATE语句中支持两个修饰符。

LOW_PRIORITY修饰符指示UPDATE语句延迟更新,直到没有从表中读取数据的连接。 LOW_PRIORITY对仅使用表级锁定的存储引擎(例如MyISAM,MERGE,MEMORY)生效。

即使发生错误,IGNORE修饰符也可以使UPDATE语句继续更新行。导致错误(如重复键冲突)的行不会更新。

2. MySQL UPDATE示例

我们使用MySQL示例数据库(yiibaidb)中的一些表来练习使用UPDATE语句。

2.1 MySQL UPDATE一个单列示例

在这个例子中,我们将把 Mary Patterson 的电子邮件更新为新的电子邮件

首先,为了确保更新电子邮件成功,使用以下SELECT语句从employees表查询Mary的电子邮件:

SELECT

firstname, lastname, email

FROM

employees

WHERE

employeeNumber = 1056;

SQL

执行上面的查询语句,得到以下结果 -

+-----------+-----------+----------------------+

| firstname | lastname | email |

+-----------+-----------+----------------------+

| Mary | Patterson | mpatterso@yiibai.com |

+-----------+-----------+----------------------+

1 row in set

SQL

第二步,使用UPDATE语句将Mary的电子邮件更新为新的电子邮件:

UPDATE employees

SET

email = 'mary.new@yiibai.com'

WHERE

employeeNumber = 1056;

SQL

因为上面语句中,只想更新一行,所以使用WHERE子句来指定更新的是员工编号1056的行。SET子句将电子邮件列的值设置为新的电子邮件。

第三,再次执行SELECT语句来验证更改。

SELECT

firstname, lastname, email

FROM

employees

WHERE

employeeNumber = 1056;

SQL

再次执行上面的查询语句,得到以下结果 -

+-----------+-----------+---------------------+

| firstname | lastname | email |

+-----------+-----------+---------------------+

| Mary | Patterson | mary.new@yiibai.com |

+-----------+-----------+---------------------+

1 row in set

SQL

2.2 MySQL UPDATE多列

要更新多列中的值,需要在SET子句中指定分配。例如,以下语句更新了员工编号1056的姓氏和电子邮件列:

UPDATE employees

SET

lastname = 'Hill',

email = 'mary.hill@yiibai.com'

WHERE

employeeNumber = 1056;

SQL

在执行上面语句之后,查询员工编号为:1056的记录,如下所示 -

+-----------+----------+----------------------+

| firstname | lastname | email |

+-----------+----------+----------------------+

| Mary | Hill | mary.hill@yiibai.com |

+-----------+----------+----------------------+

1 row in set

SQL

2.3 使用SELECT语句的MySQL UPDATE示例

可以使用SELECT语句查询来自其他表的数据来提供给SET子句的值。

例如,在customers表中,有些客户没有任何销售代表。 salesRepEmployeeNumber列的值为NULL,如下所示:

mysql> SELECT

customername, salesRepEmployeeNumber

FROM

customers

WHERE

salesRepEmployeeNumber IS NULL;

+--------------------------------+------------------------+

| customername | salesRepEmployeeNumber |

+--------------------------------+------------------------+

| Havel & Zbyszek Co | NULL |

| Porto Imports Co. | NULL |

| Asian Shopping Network, Co | NULL |

| Natrlich Autos | NULL |

| ANG Resellers | NULL |

| Messner Shopping Network | NULL |

| Franken Gifts, Co | NULL |

| BG&E Collectables | NULL |

| Schuyler Imports | NULL |

| Der Hund Imports | NULL |

| Cramer Spezialitten, Ltd | NULL |

| Asian Treasures, Inc. | NULL |

| SAR Distributors, Co | NULL |

| Kommission Auto | NULL |

| Lisboa Souveniers, Inc | NULL |

| Stuttgart Collectable Exchange | NULL |

| Feuer Online Stores, Inc | NULL |

| Warburg Exchange | NULL |

| Anton Designs, Ltd. | NULL |

| Mit Vergngen & Co. | NULL |

| Kremlin Collectables, Co. | NULL |

| Raanan Stores, Inc | NULL |

+--------------------------------+------------------------+

22 rows in set

SQL

我们可以为这些客户提供销售代表和更新。

为此,需要从employees表中随机选择一个职位为Sales Rep的雇员,并将其更新到employees表中。

下面的查询语句是从employees表中随机选择一个其职位是Sales Rep的员工。

SELECT

employeeNumber

FROM

employees

WHERE

jobtitle = 'Sales Rep'

ORDER BY RAND()

LIMIT 1;

SQL

要更新customers表中的销售代表员工编号(employeeNumber)列,我们将上面的查询放在UPDATE语句的SET子句中,如下所示:

UPDATE customers

SET

salesRepEmployeeNumber = (SELECT

employeeNumber

FROM

employees

WHERE

jobtitle = 'Sales Rep'

LIMIT 1)

WHERE

salesRepEmployeeNumber IS NULL;

SQL

如果在执行上面更新语句后,查询customers表中的数据,将看到每个客户都有一个销售代表。 换句话说,以下查询不返回任何行数据。

SELECT

salesRepEmployeeNumber

FROM

customers

WHERE

salesRepEmployeeNumber IS NULL;

`

SQL

在本教程中,您已经学会了如何使用MySQL UPDATE语句来更新数据库表中的数据。

mysql更新数据_MySQL更新表数据相关推荐

  1. mysql中触发器 删除表数据_MySQL删除表数据

    在本教程中,您将学习如何使用MySQL DELETE语句从单个表中删除数据. 1. MySQL DELETE语句介绍 要从表中删除数据,请使用MySQL DELETE语句.下面说明了DELETE语句的 ...

  2. mysql特定格式导出数据_MySQL 将表数据以特定格式的文本导出与导入

    SELECT ... INTO OUTFILE ... 使用该语句将数据表的数据以特定格式导出到本机.该方式需要登录 mysql 客户端才可以执行. 注意: 1. 这种方式只能将表的记录导出到服务器所 ...

  3. mysql 同步 存储过程_mysql 存储过程 实现数据同步

    数据库 表 发生变化,需要把2.0的表数据 同步到3.0库中去: -- 同步数据存储过程执行 -- 更新留言旧表数据到新表数据中 /*DEFINER:Vector*/ drop procedure i ...

  4. oracle删除库里的所有表,清空mysql指定库里全部表数据-自动删除所有表,有外键约束的表优先删除...

    清空mysql指定库里所有表数据-自动删除所有表,有外键约束的表优先删除 由于要清空数据库数据 ,手动非常麻烦.网上找了一下,有一个Oracle的,参照它,在其上修改一下用于Mysql,把代码奉献如下 ...

  5. 清空MySQL单库下所有表数据 || 删除MySQL单库下所有表

    一.清空MySQL单库下所有表数据 -- 清空MySQL单库下所有表数据 SELECT CONCAT('truncate table ',TABLE_NAME,';') AS PLEASE_EXEC_ ...

  6. R语言ggplot2可视化:使用长表数据(窄表数据)( Long Data Format)可视化多个时间序列数据、在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series)

    R语言ggplot2可视化:使用长表数据(窄表数据)( Long Data Format)可视化多个时间序列数据.在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series) ...

  7. php拷贝mysql表_MySQL复制表数据或表结构到新表中

    MySQL复制表数据到新表的几个步骤. 1.MySQL复制表结构及数据到新表 CREATE TABLE new_table SELECT * FROM old_table; 2.只复制 MySQL复制 ...

  8. mysql 复制表结构到一个新表_MySQL复制表数据或表结构到新表中

    MySQL复制表数据到新表的几个步骤. 1.MySQL复制表结构及数据到新表 CREATE TABLE new_table SELECT * FROM old_table; 2.只复制 MySQL复制 ...

  9. mysql 定期清理表数据_mysql 定期清理表数据库

    zabbix数据库备份整理 zabbix数据库备份整理 zabbix数据库备份整理 zabbix的所有操作都是存在数据库里,在数据库里都会有对应的表,所以对zabbix备份,只需备份数据库就行了. 采 ...

最新文章

  1. 23LC1024四线访问数据
  2. 蓝牙 GATT 协议
  3. Hadoop伪分布式运行案例
  4. MFC控件编程之组合框跟列表框
  5. scp跨主机拷贝工具
  6. 转载 树莓派vnc 教程
  7. 武汉大学953计算机综合真题,武大电力系统分析实验报告.docx
  8. 大数据扫黄如此精准,你中招了没
  9. Weblogic-端口查看与修改
  10. coverity中碰到的错误
  11. diy计算机工作站,DIY 篇一:TU100组装移动工作站
  12. Java编程笔记7:内部类
  13. c语言中的百分数怎么求,如何计算具体百分比
  14. JS中出现三个点(...)的作用是什么
  15. 互联网电视:OTT TV与IPTV的区别
  16. 计算机制工艺品的意义,wh9程序化模型编写、计算机制说明
  17. IOS UIVisualEffect 蒙版的View 高斯模糊实图
  18. 利用Hexo+github搭建博客,零成本、无需域名、服务器
  19. 一张图分出你是用左脑还是右脑!
  20. MVC架构 使用FastReport

热门文章

  1. thinkphp(tp)中paginate方法的学习
  2. 响铃:如何守护我们的观赛体验 张近东有话要说
  3. (已解决)[h264_v4l2m2m @ 0x15bafc0] Could not find a valid device
  4. 精通比特 - 第4章,高级密钥和地址
  5. 独孤思维:赚钱,需要细水长流
  6. 大学生抗击疫情感动人物最美逆行者网页设计作业 html抗疫专题网页设计 最美逆行者网页模板 致敬疫情感动人物网页设计制作
  7. Python3网络爬虫开发实战(崔庆才)笔记——ProxyPool的代码问题:AttributeError: 'int' object has no attribute 'item及相关问题的处理
  8. 关于Raspbian中KODI无法播放视频的问题
  9. 桥梁局部计算的ansa建模教程2——钢锚箱
  10. 检测PCB板上的走线宽度