一、基本語法
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-tw/n/351611.html
微信掃一掃
支付寶掃一掃