摘要:在本教程中,您将学习如何使用 SQL UPDATE
语句修改表中现有行的信息。
SQL UPDATE 语句简介
若要更改表中的现有数据,可以使用 UPDATE
语句。下面显示了 UPDATE
语句的语法
UPDATE table_name
SET column1 = value1,
column2 = value2
WHERE
condition;
Code language: SQL (Structured Query Language) (sql)
在此语法中
- 首先,在
UPDATE
子句中指明要更新的表。 - 然后,在
SET
子句中指明要修改的列。未在SET
子句中列出的列将保留其原始值。 - 最后,在
WHERE
子句中指明要更新哪些行。
UPDATE
语句根据 WHERE
子句中的条件影响表中的一行或多行。例如,如果 WHERE
子句包含 主键 表达式,则 UPDATE
语句仅更改一行。
但是,任何导致 WHERE
中条件变为真的行都将被修改。因为 WHERE
子句是可选的,因此如果您省略此子句,则表中的所有行都将受影响。
SQL UPDATE 语句范例
我们将使用雇员和受抚养人表来演示 UPDATE
语句。

SQL UPDATE 单行范例
假设员工编号为 192 的 Sarah Bell 将其姓氏从 Bell
改为 Lopez
,并且您需要更新她在 employees
表中的记录。

若要将 Sarah 的姓氏从 Bell
更新为 Lopez
,请使用以下 UPDATE
语句
UPDATE employees
SET
last_name = 'Lopez'
WHERE
employee_id = 192;
Code language: SQL (Structured Query Language) (sql)
数据库系统更新了 last_name
列中的值和 employee_id
为 192
的行。
您可以使用以下 SELECT
语句进行验证。
SELECT
employee_id,
first_name,
last_name
FROM
employees
WHERE
employee_id = 192;
Code language: SQL (Structured Query Language) (sql)

SQL UPDATE 多行范例
现在,Nancy 想将其所有孩子的姓氏从 Bell
改为 Lopez
。在这种情况下,您需要更新 dependents
表中 Nancy 的所有受抚养人。
在更新数据前,我们检查一下 Nancy 的受抚养人。
SELECT
*
FROM
dependents
WHERE
employee_id = 192;
Code language: SQL (Structured Query Language) (sql)

若要更新 Nancy 受抚养人的姓氏,请使用以下 UPDATE
语句。
UPDATE dependents
SET
last_name = 'Lopez'
WHERE
employee_id = 192;
Code language: SQL (Structured Query Language) (sql)

使用包含子查询的 SQL UPDATE 范例
有时候当员工更改其姓氏时,您仅更新 employees
表而不更新受抚养人表。
为了确保子代的姓氏始终与 employees
表中父代的姓氏匹配,您可以使用以下语句
UPDATE dependents
SET last_name = (
SELECT
last_name
FROM
employees
WHERE
employee_id = dependents.employee_id
);
Code language: SQL (Structured Query Language) (sql)
因为省略了 WHERE
子句,所以 UPDATE
语句更新了 dependents
表中的所有行。
在 SET
子句中,我们使用的不是实际值,而是 子查询 以从 employees
表中获取相应的姓氏值。
在本教程中,我们向您展示了如何使用 SQL UPDATE
语句修改表中的现有数据。