2023年8月3日发(作者:)

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⼦句,则UPDATE语句将更新表中的所有⾏。请注意,WHERE⼦句⾮常重要,所以不应该忘记指定更新的条件。 有时,您可能只想改变⼀⾏; 但是,可能会忘记写上WHERE⼦句,导致意外更新表中的所有⾏。MySQL在UPDATE语句中⽀持两个修饰符。LOW_PRIORITY修饰符指⽰UPDATE语句延迟更新,直到没有从表中读取数据的连接。

LOW_PRIORITY对仅使⽤表级定的(例如MyISAM,MERGE,MEMORY)⽣效。即使发⽣错误,IGNORE修饰符也可以使UPDATE语句继续更新⾏。导致错误(如重复键冲突)的⾏不会更新。2. MySQL UPDATE⽰例我们使⽤MySQL中的⼀些表来练习使⽤UPDATE语句。2.1 MySQL UPDATE⼀个单列⽰例在这个例⼦中,我们将把 Mary Patterson 的电⼦邮件更新为新的电⼦邮件。⾸先,为了确保更新电⼦邮件成功,使⽤以下从employees表查询Mary的电⼦邮件:SELECT

firstname, lastname, emailFROM employeesWHERE employeeNumber = 1056;SQL执⾏上⾯的查询语句,得到以下结果 -+-----------+-----------+----------------------+| firstname | lastname | email |+-----------+-----------+----------------------+| Mary | Patterson | mpatterso@ |+-----------+-----------+----------------------+1 row in setSQL第⼆步,使⽤UPDATE语句将Mary的电⼦邮件更新为新的电⼦邮件:,如下查询所⽰:UPDATE employees

SET

email = '@'WHERE employeeNumber = 1056;SQL因为上⾯语句中,只想更新⼀⾏,所以使⽤WHERE⼦句来指定更新的是员⼯编号1056的⾏。SET⼦句将电⼦邮件列的值设置为新的电⼦邮件。第三,再次执⾏SELECT语句来验证更改。SELECT

firstname, lastname, emailFROM employeesWHERE employeeNumber = 1056;SQL再次执⾏上⾯的查询语句,得到以下结果 -+-----------+-----------+---------------------+| firstname | lastname | email |+-----------+-----------+---------------------+| Mary | Patterson | @ |+-----------+-----------+---------------------+1 row in setSQL2.2 MySQL UPDATE多列要更新多列中的值,需要在SET⼦句中指定分配。例如,以下语句更新了员⼯编号1056的姓⽒和电⼦邮件列:UPDATE employees

SET

lastname = 'Hill', email = '@'WHERE employeeNumber = 1056;SQL在执⾏上⾯语句之后,查询员⼯编号为:1056的记录,如下所⽰ -+-----------+----------+----------------------+| firstname | lastname | email |+-----------+----------+----------------------+| Mary | Hill | @ |+-----------+----------+----------------------+1 row in setSQL2.3 使⽤SELECT语句的MySQL UPDATE⽰例可以使⽤SELECT语句查询来⾃其他表的数据来提供给SET⼦句的值。例如,在customers表中,有些客户没有任何销售代表。

salesRepEmployeeNumber列的值为NULL,如下所⽰:mysql> SELECT

customername, salesRepEmployeeNumberFROM customersWHERE 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 setSQL我们可以为这些客户提供销售代表和更新。为此,需要从employees表中随机选择⼀个职位为Sales Rep的雇员,并将其更新到employees表中。下⾯的查询语句是从employees表中随机选择⼀个其职位是Sales Rep的员⼯。SELECT

employeeNumberFROM employeesWHERE 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

salesRepEmployeeNumberFROM customersWHERE salesRepEmployeeNumber IS NULL;`SQL在本教程中,您已经学会了如何使⽤MySQL

UPDATE语句来更新数据库表中的数据。

2023年8月3日发(作者:)

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⼦句,则UPDATE语句将更新表中的所有⾏。请注意,WHERE⼦句⾮常重要,所以不应该忘记指定更新的条件。 有时,您可能只想改变⼀⾏; 但是,可能会忘记写上WHERE⼦句,导致意外更新表中的所有⾏。MySQL在UPDATE语句中⽀持两个修饰符。LOW_PRIORITY修饰符指⽰UPDATE语句延迟更新,直到没有从表中读取数据的连接。

LOW_PRIORITY对仅使⽤表级定的(例如MyISAM,MERGE,MEMORY)⽣效。即使发⽣错误,IGNORE修饰符也可以使UPDATE语句继续更新⾏。导致错误(如重复键冲突)的⾏不会更新。2. MySQL UPDATE⽰例我们使⽤MySQL中的⼀些表来练习使⽤UPDATE语句。2.1 MySQL UPDATE⼀个单列⽰例在这个例⼦中,我们将把 Mary Patterson 的电⼦邮件更新为新的电⼦邮件。⾸先,为了确保更新电⼦邮件成功,使⽤以下从employees表查询Mary的电⼦邮件:SELECT

firstname, lastname, emailFROM employeesWHERE employeeNumber = 1056;SQL执⾏上⾯的查询语句,得到以下结果 -+-----------+-----------+----------------------+| firstname | lastname | email |+-----------+-----------+----------------------+| Mary | Patterson | mpatterso@ |+-----------+-----------+----------------------+1 row in setSQL第⼆步,使⽤UPDATE语句将Mary的电⼦邮件更新为新的电⼦邮件:,如下查询所⽰:UPDATE employees

SET

email = '@'WHERE employeeNumber = 1056;SQL因为上⾯语句中,只想更新⼀⾏,所以使⽤WHERE⼦句来指定更新的是员⼯编号1056的⾏。SET⼦句将电⼦邮件列的值设置为新的电⼦邮件。第三,再次执⾏SELECT语句来验证更改。SELECT

firstname, lastname, emailFROM employeesWHERE employeeNumber = 1056;SQL再次执⾏上⾯的查询语句,得到以下结果 -+-----------+-----------+---------------------+| firstname | lastname | email |+-----------+-----------+---------------------+| Mary | Patterson | @ |+-----------+-----------+---------------------+1 row in setSQL2.2 MySQL UPDATE多列要更新多列中的值,需要在SET⼦句中指定分配。例如,以下语句更新了员⼯编号1056的姓⽒和电⼦邮件列:UPDATE employees

SET

lastname = 'Hill', email = '@'WHERE employeeNumber = 1056;SQL在执⾏上⾯语句之后,查询员⼯编号为:1056的记录,如下所⽰ -+-----------+----------+----------------------+| firstname | lastname | email |+-----------+----------+----------------------+| Mary | Hill | @ |+-----------+----------+----------------------+1 row in setSQL2.3 使⽤SELECT语句的MySQL UPDATE⽰例可以使⽤SELECT语句查询来⾃其他表的数据来提供给SET⼦句的值。例如,在customers表中,有些客户没有任何销售代表。

salesRepEmployeeNumber列的值为NULL,如下所⽰:mysql> SELECT

customername, salesRepEmployeeNumberFROM customersWHERE 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 setSQL我们可以为这些客户提供销售代表和更新。为此,需要从employees表中随机选择⼀个职位为Sales Rep的雇员,并将其更新到employees表中。下⾯的查询语句是从employees表中随机选择⼀个其职位是Sales Rep的员⼯。SELECT

employeeNumberFROM employeesWHERE 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

salesRepEmployeeNumberFROM customersWHERE salesRepEmployeeNumber IS NULL;`SQL在本教程中,您已经学会了如何使⽤MySQL

UPDATE语句来更新数据库表中的数据。