摘要:在本教程中,您将学习如何使用 SQL UPDATE 语句来修改表中的一行或多行。
SQL UPDATE 语句简介 #
在 SQL 中,您可以使用 UPDATE 语句来修改表中的一行或多行数据。
以下是使用 UPDATE 语句的语法:
UPDATE table_name
SET
column1 = value1,
column2 = value2
WHERE
condition;Code language: SQL (Structured Query Language) (sql)在此语法中:
- 首先,在
UPDATE子句中指定要更新数据的表名。 - 其次,在
SET子句中列出列名和新值。未出现在SET子句中的列将保留其原始值。 - 第三,在
WHERE子句中指定一个条件,以确定要更新的行。
WHERE 子句是可选的。如果省略 WHERE 子句,UPDATE 语句将更新表中的所有行。
UPDATE table_name
SET
column1 = value1,
column2 = value2;SQL UPDATE 语句示例 #
我们将使用示例数据库中的 dependents 和 employees 表来演示 UPDATE 语句。

如果您还没有学习 INSERT 教程,您需要在继续本教程之前运行以下语句。
INSERT INTO
dependents (first_name, last_name, relationship, employee_id)
VALUES
('Cameron', 'Bell', 'Child', 192),
('Michelle', 'Bell', 'Child', 192);Code language: SQL (Structured Query Language) (sql)更新表中的单行 #
假设员工 ID 为 192 的 Sarah Bell 将她的姓氏从 Bell 改为 Lopez,您需要在 employees 表中更新她的记录。
SELECT
employee_id,
first_name,
last_name
FROM
employees
WHERE
employee_id = 192;输出
employee_id | first_name | last_name
-------------+------------+-----------
192 | Sarah | Bell要将 Sarah 的姓氏从 Bell 更新为 Lopez,您可以使用以下 UPDATE 语句:
UPDATE employees
SET
last_name = 'Lopez'
WHERE
employee_id = 192;Code language: SQL (Structured Query Language) (sql)数据库系统更新了 employee_id 为 192 的行中 last_name 列的值。
要验证更新,您可以使用以下 SELECT 语句:
SELECT
employee_id,
first_name,
last_name
FROM
employees
WHERE
employee_id = 192;Code language: SQL (Structured Query Language) (sql)输出
employee_id | first_name | last_name
-------------+------------+-----------
192 | Sarah | Lopez更新表中的多行 #
Nancy 想把她所有孩子的姓氏从 Bell 改为 Lopez。在这种情况下,您需要更新 dependents 表中 Nancy 的所有家属信息。
在更新数据之前,让我们先检查一下 Nancy 的家属信息。
SELECT
*
FROM
dependents
WHERE
employee_id = 192;Code language: SQL (Structured Query Language) (sql) dependent_id | first_name | last_name | relationship | employee_id
--------------+------------+-----------+--------------+-------------
32 | Cameron | Bell | Child | 192
33 | Michelle | Bell | Child | 192Code language: plaintext (plaintext)要更新 Nancy 家属的姓氏,您可以使用以下 UPDATE 语句。
UPDATE dependents
SET
last_name = 'Lopez'
WHERE
employee_id = 192;Code language: SQL (Structured Query Language) (sql) dependent_id | first_name | last_name | relationship | employee_id
--------------+------------+-----------+--------------+-------------
32 | Cameron | Lopez | Child | 192
33 | Michelle | Lopez | Child | 192Code language: plaintext (plaintext)将 SQL UPDATE 语句与子查询结合使用 #
有时当员工更改姓氏时,您只更新了 employees 表,而没有更新 dependents 表。
为确保孩子的姓氏与 employees 表中父母的姓氏相同,您可以使用以下 UPDATE 语句:
UPDATE dependents
SET
last_name = (
SELECT
last_name
FROM
employees
WHERE
employee_id = dependents.employee_id
);Code language: SQL (Structured Query Language) (sql)查询工作原理
- 首先,使用子查询从
employees表中获取姓氏,并在SET子句中使用它们来更新dependents表中的姓氏。 - 其次,省略
WHERE子句以更新dependents表中的所有行。
摘要 #
- 使用
UPDATE语句来更新表中的一行或多行。
测验 #
数据库 #
- PostgreSQL UPDATE 语句
- MySQL UPDATE 语句
- MariaDB UPDATE 语句
- SQLite UPDATE 语句
- Db2 UPDATE 语句
- Oracle UPDATE 语句
- SQL Server UPDATE 语句
本教程是否有帮助?