Sql 简明教程
SQL - UPDATE Query
The SQL UPDATE Statement
SQL UPDATE 语句用来修改表中的现有记录。此语句是数据操作语言 (DML) 的一部分,因为它仅修改表中的数据而不影响表的结构。
要筛选需要修改的记录,可以在 UPDATE 语句中使用 WHERE 子句。通过使用 WHERE 子句,你可以更新单行或多行。
SQL UPDATE 语句在修改表中每一行的同时使用对它们的锁,且一旦修改了行,就会释放该锁。因此,它可以使用单个查询来修改单行或多行。
Syntax
带 WHERE 子句的 SQL UPDATE 语句的基本语法如下:
UPDATE table_name
SET column1 = value1, column2 = value2,..., columnN = valueN
WHERE [condition];
您可以使用 AND 或 OR 运算符组合 N 个条件。
Example
假设已使用如下所示的 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 |
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 号为 6 的客户的 ADDRESS。
UPDATE CUSTOMERS SET ADDRESS = 'Pune' WHERE ID = 6;
Update Multiple ROWS and COLUMNS
使用 SQL UPDATE 语句,还可以更新表中的多行和多列。要更新多行,请在 WHERE 子句中指定条件,以使其仅满足必需的行。
然而,要更新多列,请对需要更新的所有列设置新值。在这种情况下,使用 WHERE 子句会限定表的记录,而不用该子句会更改这些列中的所有值。
Syntax
以下是如何更新多行和多列的语法:
UPDATE table_name
SET column_name1 = new_value, column_name2 = new_value...
WHERE condition(s)
Example
如果你想修改 CUSTOMERS 表中的所有 AGE 和 SALARY 列值,则无需使用 WHERE 子句,因为 UPDATE 查询就已足够。以下查询将所有客户的年龄增加 5 岁,并且将 3000 添加到所有 salary 值:
UPDATE CUSTOMERS SET AGE = AGE+5, SALARY = SALARY+3000;
Verification
要验证表的记录是否已修改,请使用下面的 SELECT 查询:
SELECT * FROM CUSTOMERS;
现在,CUSTOMERS 表将拥有以下记录:
ID |
NAME |
AGE |
ADDRESS |
SALARY |
1 |
Ramesh |
37 |
Ahmedabad |
5000.00 |
2 |
Khilan |
30 |
Delhi |
4500.00 |
3 |
Kaushik |
28 |
Kota |
5000.00 |
4 |
Chaitali |
30 |
Mumbai |
9500.00 |
5 |
Hardik |
32 |
Bhopal |
11500.00 |
6 |
Komal |
27 |
Pune |
7500.00 |
7 |
Muffy |
29 |
Indore |
13000.00 |