mysql更新数据_MySQL更新表数据
更新数据是使用数据库时最重要的任务之一。 在本教程中,您将学习如何使用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更新表数据相关推荐
- mysql中触发器 删除表数据_MySQL删除表数据
在本教程中,您将学习如何使用MySQL DELETE语句从单个表中删除数据. 1. MySQL DELETE语句介绍 要从表中删除数据,请使用MySQL DELETE语句.下面说明了DELETE语句的 ...
- mysql特定格式导出数据_MySQL 将表数据以特定格式的文本导出与导入
SELECT ... INTO OUTFILE ... 使用该语句将数据表的数据以特定格式导出到本机.该方式需要登录 mysql 客户端才可以执行. 注意: 1. 这种方式只能将表的记录导出到服务器所 ...
- mysql 同步 存储过程_mysql 存储过程 实现数据同步
数据库 表 发生变化,需要把2.0的表数据 同步到3.0库中去: -- 同步数据存储过程执行 -- 更新留言旧表数据到新表数据中 /*DEFINER:Vector*/ drop procedure i ...
- oracle删除库里的所有表,清空mysql指定库里全部表数据-自动删除所有表,有外键约束的表优先删除...
清空mysql指定库里所有表数据-自动删除所有表,有外键约束的表优先删除 由于要清空数据库数据 ,手动非常麻烦.网上找了一下,有一个Oracle的,参照它,在其上修改一下用于Mysql,把代码奉献如下 ...
- 清空MySQL单库下所有表数据 || 删除MySQL单库下所有表
一.清空MySQL单库下所有表数据 -- 清空MySQL单库下所有表数据 SELECT CONCAT('truncate table ',TABLE_NAME,';') AS PLEASE_EXEC_ ...
- R语言ggplot2可视化:使用长表数据(窄表数据)( Long Data Format)可视化多个时间序列数据、在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series)
R语言ggplot2可视化:使用长表数据(窄表数据)( Long Data Format)可视化多个时间序列数据.在同一个可视化图像中可视化多个时间序列数据(Multiple Time Series) ...
- php拷贝mysql表_MySQL复制表数据或表结构到新表中
MySQL复制表数据到新表的几个步骤. 1.MySQL复制表结构及数据到新表 CREATE TABLE new_table SELECT * FROM old_table; 2.只复制 MySQL复制 ...
- mysql 复制表结构到一个新表_MySQL复制表数据或表结构到新表中
MySQL复制表数据到新表的几个步骤. 1.MySQL复制表结构及数据到新表 CREATE TABLE new_table SELECT * FROM old_table; 2.只复制 MySQL复制 ...
- mysql 定期清理表数据_mysql 定期清理表数据库
zabbix数据库备份整理 zabbix数据库备份整理 zabbix数据库备份整理 zabbix的所有操作都是存在数据库里,在数据库里都会有对应的表,所以对zabbix备份,只需备份数据库就行了. 采 ...
最新文章
- 23LC1024四线访问数据
- 蓝牙 GATT 协议
- Hadoop伪分布式运行案例
- MFC控件编程之组合框跟列表框
- scp跨主机拷贝工具
- 转载 树莓派vnc 教程
- 武汉大学953计算机综合真题,武大电力系统分析实验报告.docx
- 大数据扫黄如此精准,你中招了没
- Weblogic-端口查看与修改
- coverity中碰到的错误
- diy计算机工作站,DIY 篇一:TU100组装移动工作站
- Java编程笔记7:内部类
- c语言中的百分数怎么求,如何计算具体百分比
- JS中出现三个点(...)的作用是什么
- 互联网电视:OTT TV与IPTV的区别
- 计算机制工艺品的意义,wh9程序化模型编写、计算机制说明
- IOS UIVisualEffect 蒙版的View 高斯模糊实图
- 利用Hexo+github搭建博客,零成本、无需域名、服务器
- 一张图分出你是用左脑还是右脑!
- MVC架构 使用FastReport
热门文章
- thinkphp(tp)中paginate方法的学习
- 响铃:如何守护我们的观赛体验 张近东有话要说
- (已解决)[h264_v4l2m2m @ 0x15bafc0] Could not find a valid device
- 精通比特 - 第4章,高级密钥和地址
- 独孤思维:赚钱,需要细水长流
- 大学生抗击疫情感动人物最美逆行者网页设计作业 html抗疫专题网页设计 最美逆行者网页模板 致敬疫情感动人物网页设计制作
- Python3网络爬虫开发实战(崔庆才)笔记——ProxyPool的代码问题:AttributeError: 'int' object has no attribute 'item及相关问题的处理
- 关于Raspbian中KODI无法播放视频的问题
- 桥梁局部计算的ansa建模教程2——钢锚箱
- 检测PCB板上的走线宽度