一、基本語法
MySQL的Update語法用於更新表中的數據。語法格式如下:
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE some_column = some_value
其中,table_name
為需要更新數據的表名,column1
、column2
等為需要更新的列名,value1
、value2
等為需要更新的值。WHERE
子句用於指定更新的條件。
例如,現在有一個名為employees
的表格,其中包含id
、name
和age
三個列:
+----+-----------+-----+
| id | name | age |
+----+-----------+-----+
| 1 | John Doe | 25 |
| 2 | Jane Doe | 30 |
| 3 | Sam Smith | 35 |
| 4 | Alice Wu | 28 |
+----+-----------+-----+
要將id
為2的員工名字改為Jane Smith
,則可以這樣執行更新語句:
UPDATE employees
SET name = 'Jane Smith'
WHERE id = 2;
執行完該語句後,再查看employees
表格,則會得到以下結果:
+----+-------------+-----+
| id | name | age |
+----+-------------+-----+
| 1 | John Doe | 25 |
| 2 | Jane Smith | 30 |
| 3 | Sam Smith | 35 |
| 4 | Alice Wu | 28 |
+----+-------------+-----+
二、更新多列
Update語法允許同時更新多個列,只需在SET
子句中用逗號隔開即可:
UPDATE employees
SET name = 'Alice Brown', age = 31
WHERE id = 4;
執行完該語句後,再查看employees
表格,則會得到以下結果:
+----+-------------+-----+
| id | name | age |
+----+-------------+-----+
| 1 | John Doe | 25 |
| 2 | Jane Smith | 30 |
| 3 | Sam Smith | 35 |
| 4 | Alice Brown | 31 |
+----+-------------+-----+
三、更新所有行
要更新表中的所有行,可以省略WHERE
子句:
UPDATE employees
SET age = 40;
執行完該語句後,再查看employees
表格,則會發現age
列的值都被更新成了40。
四、更新不存在的值
如果要更新表中不存在的值,Update語法會插入一條新的記錄。例如,現在要將id
為5的員工信息更新為Jacob Smith
和32
歲:
UPDATE employees
SET name = 'Jacob Smith', age = 32
WHERE id = 5;
執行完該語句後,再查看employees
表格,則會得到以下結果:
+----+--------------+-----+
| id | name | age |
+----+--------------+-----+
| 1 | John Doe | 25 |
| 2 | Jane Smith | 30 |
| 3 | Sam Smith | 35 |
| 4 | Alice Brown | 31 |
| 5 | Jacob Smith | 32 |
+----+--------------+-----+
五、限制更新的行數
有時候我們可能只需要更新表中的前幾條記錄,可以使用LIMIT
關鍵字。例如,現在要將前兩條員工記錄的名字改為Anonymous
:
UPDATE employees
SET name = 'Anonymous'
LIMIT 2;
執行完該語句後,再查看employees
表格,則會得到以下結果:
+----+-------------+-----+
| id | name | age |
+----+-------------+-----+
| 1 | Anonymous | 25 |
| 2 | Anonymous | 30 |
| 3 | Sam Smith | 35 |
| 4 | Alice Brown| 31 |
| 5 | Jacob Smith| 32 |
+----+-------------+-----+
六、使用子查詢更新數據
有時候需要根據另一個表中的內容來更新當前表中的某些行,這時可以使用子查詢來實現。例如,現在有一個名為salary
的表格,其中包含id
和salary
兩個列:
+----+--------+
| id | salary |
+----+--------+
| 1 | 3000 |
| 2 | 4000 |
| 3 | 5000 |
| 4 | 3500 |
+----+--------+
現在要將employees
表格中id
為1的員工的薪水修改為salary
表格中的薪水,可以這樣寫:
UPDATE employees
SET salary = (
SELECT salary
FROM salary
WHERE id = 1
)
WHERE id = 1;
執行完該語句後,再查看employees
表格,則會得到以下結果:
+----+-------------+-----+--------+
| id | name | age | salary |
+----+-------------+-----+--------+
| 1 | Anonymous | 25 | 3000 |
| 2 | Anonymous | 30 | NULL |
| 3 | Sam Smith | 35 | NULL |
| 4 | Alice Brown| 31 | NULL |
| 5 | Jacob Smith| 32 | NULL |
+----+-------------+-----+--------+
需要注意的是,子查詢返回的結果必須是單行單列的,否則會報錯。
七、使用多表更新
除了使用子查詢外,還可以使用多表更新來更新數據。以employees
表格和salary
表格為例,現在要將employees
表格中的薪水改為salary
表格中對應的薪水:
UPDATE employees, salary
SET employees.salary = salary.salary
WHERE employees.id = salary.id;
執行完該語句後,再查看employees
表格,則會得到以下結果:
+----+-------------+-----+--------+
| id | name | age | salary |
+----+-------------+-----+--------+
| 1 | Anonymous | 25 | 3000 |
| 2 | Anonymous | 30 | 4000 |
| 3 | Sam Smith | 35 | 5000 |
| 4 | Alice Brown | 31 | 3500 |
| 5 | Jacob Smith | 32 | NULL |
+----+-------------+-----+--------+
需要注意的是,多表更新時需要將要更新的表格名按照table_name.column_name
的格式來指定。
原創文章,作者:ESPBN,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/351611.html