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 運算子組合 N 個條件。

示例

假設我們使用 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 姓名 年齡 地址 薪水
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 姓名 年齡 地址 薪水
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 姓名 年齡 地址 薪水
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 姓名 年齡 地址 薪水
1 Ramesh 37 Pune 1000.00
廣告