SQL Update語句


在本教學中,您將學習如何使用SQL UPDATE語句來修改表中現有行的資料。

1. SQL UPDATE語句簡介

要更改表中的現有資料,請使用UPDATE語句。 以下是UPDATE語句的語法:

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

在上面的語法中 -

  • 首先,在UPDATE子句中指明要更新的表。
  • 其次,在SET子句中指定要修改的列。 SET子句中未列出的列的值不會被修改。
  • 第三,指定WHERE子句中要更新的行。

UPDATE語句根據WHERE子句中的條件影響表中的一行或多行。 例如,如果WHERE子句包含主鍵表示式,則UPDATE語句僅更改一行。

但是,將修改WHERE條件評估為true的任何行。 因為WHERE子句是可選的,所以,如果省略它,表中的所有行都將受到影響。

2. SQL UPDATE語句範例

我們將使用employeesdependents表來演示如何使用UPDATE語句。

SQL UPDATE更新一行範例

假設有一個員工編號(employee_id)的值為:192,在employees表中查詢資料記錄,如下所示 -

mysql> select first_name,last_name from employees where employee_id=192;
+------------+-----------+
| first_name | last_name |
+------------+-----------+
| Sarah      | Yang      |
+------------+-----------+
1 row in set

要將last_name欄位的值從Yang改為Zhang,請使用以下UPDATE語句:

UPDATE employees 
SET 
    last_name = 'Zhang'
WHERE
    employee_id = 192;

資料庫系統更新了employee_id192的記錄last_name列的值。可以使用以下SELECT語句對其進行驗證。

SELECT
    employee_id,
    first_name,
    last_name
FROM
    employees
WHERE
    employee_id = 192;

執行上面查詢語句,得到以下結果 -

+-------------+------------+-----------+
| employee_id | first_name | last_name |
+-------------+------------+-----------+
|         192 | Sarah      | Zhang     |
+-------------+------------+-----------+
1 row in set

SQL UPDATE多行範例

現在,要把所有工資低於2500的員工全部提高到3000,在更新資料之前,讓我們先來看看有有哪些工資低於2500的員工。

SELECT
    employee_id,
    first_name,
    last_name,salary
FROM
    employees
WHERE
    salary<3000;
+-------------+------------+-----------+--------+
| employee_id | first_name | last_name | salary |
+-------------+------------+-----------+--------+
|         116 | Shelli     | Zhang     | 2900   |
|         117 | Sigal      | Zhang     | 2800   |
|         118 | Guy        | Zhang     | 2600   |
|         119 | Karen      | Zhang     | 2500   |
|         126 | Irene      | Liu       | 2700   |
+-------------+------------+-----------+--------+
5 rows in set

執行以下UPDATE語句,以更新工資為:3000

UPDATE
    employees
SET
    salary=3000
WHERE
    salary<3000;

帶有子查詢範例的SQL UPDATE

有時,當員工更改姓氏(last_name)時,只更新employees表而不更新dependents表。
要確保子項的姓氏(last_name)始終與employees表中父項的姓氏(last_name)匹配,請使用以下語句:

UPDATE dependents
SET last_name = (
    SELECT
        last_name
    FROM
        employees
    WHERE
        employee_id = dependents.employee_id
);

由於省略了WHERE子句,因此UPDATE語句更新了dependents表中的所有行。在SET子句中,我們使用子查詢而不是使用文字值來從employees表中獲取相應的last_name值。

在本教學中,我們演示了如何使用SQL UPDATE語句來修改表中的現有資料。