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子句将电子邮件列的值设置为新的电子邮件。