当你在数据库中创建一个表,它不大可能永远保持不变。你可能需要修改它的记录。

有一个声明 UPDATE 很有用,你可以在需要修改记录的时候使用它。

注意:如果这里介绍的语法不能运行,请查看相关 SQL 文档。大多数内容是相通的,但也有一些差异。

SQL UPDATE 语法

要使用 UPDATE 方法,首先要确定需要使用 UPDATE table_name 更新哪个表。然后确定你要使用 SET 语句对记录进行什么更改。最后,使用 WHERE 子句来选择要更改的记录。

使用 WHERE 子句非常重要,否则你将对整个表进行相同的更改。

UPDATE table_name
SET change to make
WHERE clause to select which records to change;

SQL UPDATE 示例

我们有一个名为 users 的表,如下所示:

image

这张表中有一些不完整的记录。当用户向我们提供缺少的信息时,我们可以使用 UPDATE 语句添加它。

用户 Robert 缺少电子邮件地址。WHERE 子句选择的所有行都将被更新,因此我们需要小心:我们可以使用 name 列选择要更新的记录,但名称不是唯一的——我们的表中可以有多个 Robert。

选择一行来更新它(以确保只更新要更新的行)的最佳方法是使用 PRIMARY KEY 列,其中的值始终是唯一的。在这种情况下,这是名为 id 的列。

让我们使用此查询更新电子邮件地址:

UPDATE users
SET email="robert@example.com"
WHERE id=3;

现在表格是这样的:

image-1

如何同时更新多个列

Molly 在两个不同的列中缺少一个值。我们可以使用单个 UPDATE 语句,用逗号分隔赋值,如下所示:

UPDATE users
SET age=22, email="molly@example.com"
WHERE id=2;

现在表格是这样的:

image-2

确保只更改你要更改的记录

这是一个安全问题。我们的示例只有几行,但在现实生活中,它可能是拥有数百、数千甚至数百万用户的应用程序或网站的数据库,你不想给这么多人带来麻烦。

因此,在发出 UPDATE 查询之前,请使用相同的 WHERE 子句发送 SELECT 查询。如果它返回你要更新的记录,请继续。否则,你需要更改 WHERE 子句。

例如,在为用户 Molly 发送更新之前,我们可以发送一个 SELECT 语句来检查我们使用的子句 WHERE id=2 是否正确:

SELECT * FROM users
WHERE id=2;

此查询返回下面的记录,因此你可以使用 UPDATE 查询来完成数据。

image-3

小结

创建表格并向其中添加记录后,有时候需要更新其中的行。本文介绍了如何使用 SQL UPDATE 语句执行此操作。

谢谢阅读本文!

原文:SQL Update Statement – Update Query in SQL,作者:Ilenia Magoni