SQL - 更新檢視



SQL UPDATE 檢視語句

檢視是一個數據庫物件,可以包含現有表中的行(全部或選定)。它可以由一個或多個表建立,這取決於提供的用於建立檢視的 SQL 查詢。

CREATE VIEWDROP VIEW 不同,沒有直接的語句來更新現有檢視的記錄。我們可以使用 SQL UPDATE 語句來修改表或檢視中的現有記錄。

語法

帶有 WHERE 子句的 UPDATE 查詢的基本語法如下:

UPDATE view_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 );

以下查詢基於上面建立的表建立一個檢視:

CREATE VIEW CUSTOMERS_VIEW AS SELECT * FROM CUSTOMERS;

您可以使用 SELECT 查詢驗證檢視的內容,如下所示:

SELECT * FROM CUSTOMERS_VIEW;

檢視將顯示如下:

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

以下查詢將上面建立的 CUSTOMERS_VIEW 中 Ramesh 的年齡更新為 35:

UPDATE CUSTOMERS_VIEW 
SET AGE = 35 WHERE name = 'Ramesh';

驗證

您可以使用 SELECT 語句驗證 CUSTOMERS_VIEW 的內容,如下所示:

SELECT * FROM CUSTOMERS_VIEW WHERE NAME ='Ramesh';

生成的檢視將包含以下記錄:

ID 姓名 年齡 地址 薪水
1 Ramesh 35 Ahmedabad 2000.00

示例

以下查詢將更新 CUSTOMERS_VIEW 中 ID 為 6 的客戶的地址。

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

輸出

查詢產生以下輸出:

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

驗證

如果您使用 SELECT 語句檢索 ID 值為 6 的記錄,如下所示:

SELECT * FROM CUSTOMERS_VIEW WHERE ID=6;

返回的記錄將是:

ID 姓名 年齡 地址 薪水
6 Komal 22 Hyderabad 4500.00

更新多行和多列

使用 UPDATE 語句,還可以更新檢視/表中的多行和多列。更新多行時,在 WHERE 子句中指定條件,以便只有所需的行列滿足條件。

示例

以下查詢更新 CUSTOMERS_VIEW 中 ID 值為 3 的記錄的 NAME 和 AGE 列值。

UPDATE CUSTOMERS_VIEW
SET NAME = 'Kaushik Ramanujan', AGE = 24
WHERE ID = 3;

輸出

查詢產生以下輸出:

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

驗證

您可以使用以下查詢驗證記錄是否已更新:

SELECT * FROM CUSTOMERS_VIEW WHERE ID = 3;

返回的記錄將是:

ID 姓名 年齡 地址 薪水
3 Kaushik Ramanujan 24 Kota 2000.00

示例

但是,如果您想修改/更新 CUSTOMERS_VIEW 中所有記錄的年齡值,則無需使用 WHERE 子句。

UPDATE CUSTOMERS_VIEW SET AGE = AGE+6;

輸出

此查詢產生以下輸出:

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

驗證

要驗證 CUSTOMERS_VIEW 的記錄是否已修改,請使用以下 SELECT 查詢:

SELECT * FROM CUSTOMERS_VIEW;

生成的 CUSTOMERS_VIEW 將包含以下記錄:

ID 姓名 年齡
1 Ramesh 41
2 Khilan 31
3 Kaushik Ramanujan 30
4 Chaitali 31
5 Hardik 33
6 Komal 28
7 Muffy 30
廣告