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,如下查询所示:
因为上面语句中,只想更新一行,所以使用WHERE子句来指定更新的是员工编号1056的行。SET子句将电子邮件列的值设置为新的电子邮件。