SQL Update 查询怎么写?如何更新数据库表数据?

文章导读
上一个 测验 下一个 SQL UPDATE 语句 SQL 中的 UPDATE 语句用于修改表中的现有记录。您可以根据条件(使用 WHERE 子句)更新一行或多行中的一列或多列。
📋 目录
  1. SQL UPDATE 语句
  2. SQL 更新多列
  3. SQL 中更新所有行
  4. SQL UPDATE 结合子查询
  5. 关于 UPDATE 语句的重要要点
A A

SQL UPDATE 语句

目录
  • SQL UPDATE 语句
  • SQL 更新多列
  • SQL 更新所有行
  • SQL UPDATE 结合子查询
  • 关于 UPDATE 语句的重要要点


上一个
测验
下一个

SQL UPDATE 语句

SQL 中的 UPDATE 语句用于修改表中的现有记录。您可以根据条件(使用 WHERE 子句)更新一行或多行中的一列或多列。

当您需要更改数据库中的值时,例如更正数据、调整价格、更新状态等,它非常有用。

  • 您可以使用 WHERE 子句更新所有行或仅特定行。
  • 如果省略 WHERE 子句,则表中的所有行都将被更新。
  • 您可以在单个语句中更新一列或多列。

语法

以下是 SQL UPDATE 语句的基本语法:

UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;

示例:更新单列

假设我们使用 CREATE TABLE 语句创建了一个名为 CUSTOMERS 的表,如下所示:

CREATE TABLE CUSTOMERS (
   ID INT NOT NULL,
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

现在,让我们使用 INSERT 语句向该表插入一些记录,如下所示:

INSERT INTO CUSTOMERS VALUES 
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
(2, 'Khilan', 25, 'Delhi', 1500.00 ),
(3, 'Kaushik', 23, 'Kota', 2000.00 ),
(4, 'Chaitali', 25, 'Mumbai', 6500.00 ),
(5, 'Hardik', 27, 'Bhopal', 8500.00 ),
(6, 'Komal', 22, 'Hyderabad', 4500.00 ),
(7, 'Muffy', 24, 'Indore', 10000.00 );

表将创建如下:

ID NAME AGE ADDRESS SALARY
1Ramesh32Ahmedabad2000.00
2Khilan25Delhi1500.00
3Kaushik23Kota2000.00
4Chaitali25Mumbai6500.00
5Hardik27Bhopal8500.00
6Komal22Hyderabad4500.00
7Muffy24Indore10000.00

现在,我们使用以下查询更新 ID = 6 的客户的薪资:

UPDATE CUSTOMERS
SET SALARY = 2500.00
WHERE ID = 6;

得到以下输出:

Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

验证

运行以下查询验证更新:

SELECT * FROM CUSTOMERS WHERE ID = 3;

您将得到以下结果:

ID NAME AGE ADDRESS SALARY
3Kaushik23Kota2500.00

SQL 更新多列

您还可以在 SQL 的单个 UPDATE 语句中更新多列。为此,只需用逗号分隔列值对即可。

语法

以下是 SQL 中更新多行和多列的语法:

UPDATE table_name
SET column1 = value1,
    column2 = value2,
    column3 = value3
WHERE condition;

示例

在以下示例中,我们同时更新 ID = 2 的客户的 AGEADDRESS

UPDATE CUSTOMERS
SET AGE = 26, ADDRESS = 'Chennai'
WHERE ID = 2;

得到以下输出:

Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

验证

使用以下查询验证更新后的数据:

SELECT * FROM CUSTOMERS WHERE ID = 2;

表现在将显示:

ID NAME AGE ADDRESS SALARY
2Khilan26Chennai1500.00

SQL 中更新所有行

如果在 UPDATE 语句中省略 WHERE 子句,则更改将应用于表中的每一行

当需要修改所有记录中某列的值时,这可能很有用,例如调整价格或重置状态。但是要谨慎使用这种方法,因为它会无一例外地覆盖所有行中的数据。

语法

以下是在 SQL 中更新所有行的基本语法:

UPDATE table_name
SET column1 = value1, column2 = value2, ...;

示例

以下语句将每个客户的工资提高 10%:

UPDATE CUSTOMERS
SET SALARY = SALARY * 1.10;

得到以下输出:

uery OK, 7 rows affected (0.02 sec)
Rows matched: 7  Changed: 7  Warnings: 0

验证

使用以下查询验证更新后的数据:

SELECT * FROM CUSTOMERS;

更新后的表如下所示:

ID NAME AGE ADDRESS SALARY
1Ramesh32Ahmedabad2200.00
2Khilan25Delhi1650.00
3Kaushik23Kota2200.00
4Chaitali25Mumbai7150.00
5Hardik27Bhopal9350.00
6Komal22Hyderabad4950.00
7Muffy24Indore11000.00

SQL UPDATE 结合子查询

SQL 中的 UPDATE 语句也可以使用 subquery 来根据另一个表中的数据更新一个表中的值。子查询是一个嵌套查询,为主要的更新操作提供一个值或一组值。

当您要赋的值取决于另一个表中的匹配数据时,这种方法很有用。例如,您可能希望根据另一个表中的最新订单来更新客户的总金额。

语法

以下是结合 SQL UPDATE 语句使用子查询的基本语法:

UPDATE table1
SET column1 = (SELECT column2 FROM table2 WHERE condition)
WHERE EXISTS (SELECT 1 FROM table2 WHERE condition);

示例

让我们创建一个名为 SALARY_RAISES 的表,其中包含以下更新的工资信息:

CREATE TABLE SALARY_RAISES (
  ID INT,
  NEW_SALARY DECIMAL(18, 2)
);

接下来,将新工资值插入到 SALARY_RAISES 表中:

INSERT INTO SALARY_RAISES VALUES
(1, 2200.00),
(3, 2700.00);

现在更新 CUSTOMERS 表中的 SALARY 列:

UPDATE CUSTOMERS AS C
SET SALARY = (
  SELECT NEW_SALARY FROM SALARY_RAISES AS S
  WHERE S.ID = C.ID
)
WHERE EXISTS (
  SELECT 1 FROM SALARY_RAISES AS S
  WHERE S.ID = C.ID
);

得到以下输出:

Query OK, 2 rows affected (0.03 sec)
Rows matched: 2  Changed: 2  Warnings: 0

验证

您可以使用以下查询检查更新后的记录:

SELECT * FROM CUSTOMERS WHERE ID IN (1, 3);

您将得到以下结果:

ID NAME AGE ADDRESS SALARY
1Ramesh32Ahmedabad2200.00
3Kaushik23Kota2700.00

关于 UPDATE 语句的重要要点

使用 SQL 中的 UPDATE 语句时,请记住以下重要要点:

  • 始终使用 WHERE 子句,以避免无意中更新所有记录。
  • 您可以一次更新一个或多个列。
  • 使用子查询进行基于其他表的动态或条件更新。
  • 大多数关系型数据库如 MySQL、PostgreSQL、Oracle 和 SQL Server 都支持 UPDATE 语句。