SQL UPDATE查询

SQL UPDATE查询

SQL UPDATE语句

SQL UPDATE 语句用于修改表中的现有记录。该语句是数据操作语言(DML)的一部分,因为它只修改表中存在的数据而不影响表的结构。

为了筛选出需要修改的记录,您可以在UPDATE语句中使用WHERE子句。使用WHERE子句,可以更新单个行或多个行。

由于它只与表的数据进行交互,因此SQL UPDATE语句需要谨慎使用。如果未正确选择要修改的行,则表中的所有行都将受到影响,正确的表数据将丢失或需要重新插入。

SQL UPDATE语句在修改表中的每一行时会使用锁定,一旦行被修改,锁定就会释放。因此,它可以使用单个查询对单个行或多个行进行更改。

语法

带有WHERE子句的SQL UPDATE语句的基本语法如下:

UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];

您可以使用AND或OR运算符组合任意数量的条件。

示例

假设我们使用如下的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 (ID,NAME,AGE,ADDRESS,SALARY) 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的客户的地址。

UPDATE CUSTOMERS SET ADDRESS = 'Pune' WHERE ID = 6;

输出

查询产生以下输出 –

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

验证

要验证表的记录是否被修改,请使用以下的SELECT查询语句 −

SELECT * FROM CUSTOMERS WHERE ID=6;

现在,CUSTOMERS表将包含以下记录:

ID NAME AGE ADDRESS SALARY
6 Komal 22 Pune 4500.00

更新多行和多列

使用SQL UPDATE语句也可以更新表中的多行和多列。要更新多行,可以在WHERE子句中指定条件,以使只有满足条件的行才会被更新。

然而,要更新多列,需要将新值设置为需要更新的所有列。在这种情况下,使用WHERE子句会限制表中的记录,不使用该子句会更改这些列中的所有值。

语法

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

UPDATE table_name
SET column_name1 = new_value, column_name2 = new_value...
WHERE condition(s)

示例

如果您想修改CUSTOMERS表中的所有AGE和SALARY列的值,就不需要使用WHERE子句,因为UPDATE查询已经足够了。下面的查询将所有客户的年龄增加5岁,并将3000添加到所有薪水值中-

UPDATE CUSTOMERS SET AGE = AGE+5, SALARY = SALARY+3000;

输出

查询生成以下输出 –

Query OK, 7 rows affected (0.12 sec)
Rows matched: 7  Changed: 7  Warnings: 0

验证

为了验证表的记录是否已被修改,请使用下面的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

示例

但是,如果您想要修改CUSTOMERS表中所选记录的ADDRESS和SALARY列,您需要使用WHERE子句指定一个条件来过滤要修改的记录,如下所示:

UPDATE CUSTOMERS SET ADDRESS = 'Pune', SALARY = 1000.00 WHERE NAME = 'Ramesh';

输出

这个查询会产生以下的输出-

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

验证

要验证表的记录是否已修改,请使用以下SELECT查询:

SELECT * FROM CUSTOMERS WHERE NAME = 'Ramesh';

现在,CUSTOMERS表将有以下记录 –

ID NAME AGE ADDRESS SALARY
1 Ramesh 37 Pune 1000.00

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程