MySQL UPDATE语句

时间:2019-02-04 12:52:25  来源:igfitidea点击:

MySQL UPDATE语句用于更新MySQL数据库表中的记录。

Mysql UPDATE语法

UPDATE语句有3种语法。

  1. 最简单的:
UPDATE table
SET column1 = expression1,
    column2 = expression2,
    ...
[WHERE conditions];

MySQL UPDATE语句的完整语法:

UPDATE [ LOW_PRIORITY ] [ IGNORE ]
table
SET column1 = expression1,
    column2 = expression2,
    ...
[WHERE conditions]
[ORDER BY expression [ ASC | DESC ]]
[LIMIT number_rows];
  1. 使用另一个表的数据来更新一个表,UPDATE语句的语法为:
UPDATE table1
SET column1 = (SELECT expression1
               FROM table2
               WHERE conditions)
[WHERE conditions];
  1. 使用MySQL UPDATE语句同时更新多个表:
UPDATE table1, table2, ... 
SET column1 = expression1,
    column2 = expression2,
    ...
WHERE table1.column = table2.column
AND conditions;
参数说明
LOW_PRIORITY可选的。更新将被延迟,直到没有进程从表中读取数据。LOW_PRIORITY可以与用表级锁的MyISAM、内存和合并表一起使用。
IGNORE可选的。忽略更新期间遇到的所有错误。如果对某一行进行更新时导致违背主键或唯一索引规则,则不会对该行进行更新。
column1, column2要更新的列。
expression1,expression2将expression1的值分配给column1,将expression2的值分配给column2,依此类推。
WHERE conditions可选的。执行更新时必须满足的条件。
ORDER BY expression可选的。当更新的记录数量有限制时,可以对记录进行适当排序。和LIMIT结合使用。
LIMIT number_rows可选的。控制要更新的最大记录数。

Mysql UPDATE语句示例

示例-更新1个列(字段)

UPDATE customers
SET last_name = 'Anderson'
WHERE customer_id = 5000;

将客户表中customer_id为5000的last_name更新为“ Anderson” 。

示例-更新多列

UPDATE customers
SET state = 'California',
    customer_rep = 32
WHERE customer_id > 100;

当要更新多个字段时,用逗号来分隔列/值对

将customer_id大于100的客户所在州 state 改为'California',customer_rep改为32。

示例-使用另一个表的数据来更新表

UPDATE customers
SET city = (SELECT city
            FROM suppliers
            WHERE suppliers.supplier_name = customers.customer_name)
WHERE customer_id > 2000;

这个更新例子只更新customer_id大于2000的所有记录的customers表。
当供应商表中的supplier_name与客户表中的customer_name匹配时,将供应商表中的city复制到客户表中的city字段。

示例-更新多个表的数据

UPDATE customers, suppliers
SET customers.city = suppliers.city
WHERE customers.customer_id = suppliers.supplier_id;

这个示例将把suppliers表中的city字段更新customers表中,其中customer_id与supplier_id要相同。