SQL UPDATE

摘要:在本教程中,您将学习如何使用 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 语句。

employees_dependents_tables

SQL UPDATE 单行范例

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

SQL UPDATE example

若要将 Sarah 的姓氏从 Bell 更新为 Lopez,请使用以下 UPDATE 语句

UPDATE employees 
SET 
    last_name = 'Lopez'
WHERE
    employee_id = 192;Code language: SQL (Structured Query Language) (sql)

试一试

数据库系统更新了 last_name 列中的值和 employee_id192 的行。

您可以使用以下 SELECT 语句进行验证。

SELECT
	employee_id,
	first_name,
	last_name
FROM
	employees
WHERE
	employee_id = 192;Code language: SQL (Structured Query Language) (sql)

试一试

SQL UPDATE one row example

SQL UPDATE 多行范例

现在,Nancy 想将其所有孩子的姓氏从 Bell 改为 Lopez。在这种情况下,您需要更新 dependents 表中 Nancy 的所有受抚养人。

在更新数据前,我们检查一下 Nancy 的受抚养人。

SELECT
	*
FROM
	dependents
WHERE
	employee_id = 192;Code language: SQL (Structured Query Language) (sql)

试一试

SQL UPDATE multiple rows example

若要更新 Nancy 受抚养人的姓氏,请使用以下 UPDATE 语句。

UPDATE dependents 
SET 
    last_name = 'Lopez'
WHERE
    employee_id = 192;Code language: SQL (Structured Query Language) (sql)

试一试

SQL UPDATE WHERE multiple rows

使用包含子查询的 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 语句修改表中的现有数据。

本教程对您有帮助吗?