7)-MySQL更新表数据

时间:2022-09-21 16:56:23

1. MySQL UPDATE语句简介


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

下面说明了mysql update语句的语法:
 
update [low_priority] [ignore] table_name
set
    column_name1 = expr1,
    column_name2 = expr2,
    ...
where
    condition;
 
在上面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 的电子邮件更新为新的电子邮件mary.patterso@yiibai.com。
 
首先,为了确保更新电子邮件成功,使用以下select语句从employees表查询mary的电子邮件:
select
    firstname, lastname, email
from
    employees
where
    employeenumber = 1056;
 
执行上面的查询语句,得到以下结果 -
 
+-----------+-----------+----------------------+
| firstname | lastname  | email                |
+-----------+-----------+----------------------+
| Mary      | Patterson | mpatterso@yiibai.com |
+-----------+-----------+----------------------+
1 row in set
 
第二步,使用update语句将mary的电子邮件更新为新的电子邮件: mary.new@yiibai.com,如下查询所示:
 
update employees
set
    email = 'mary.new@yiibai.com'
where
    employeenumber = 1056;
 
因为上面语句中,只想更新一行,所以使用WHERE子句来指定更新的是员工编号1056的行。SET子句将电子邮件列的值设置为新的电子邮件。