SQL UPDATE

更新数据

在前几章中,我们介绍了如何插入数据,如何根据不同的条件从数据库表中查询数据。本章我们将介绍如何更新数据库中的现有数据。

语法

UPDATE语句用于更新表中的现有数据。

UPDATE table_name
SET column1_name = value1, column2_name = value2,...
WHERE condition;

在这里,column1_name, column2_name,...是要更新的字段名。可以通过设置WHERE条件指定要更新的记录。

警告: UPDATE语句中的WHERE子句指定应该更新哪些记录。如果没有WHERE子句,所有记录都会更新

让我们来看一些例子。

假设我们的数据库中有一个employees表,它有以下记录:

+--------+--------------+------------+--------+---------+
| emp_id | emp_name     | hire_date  | salary | dept_id |
+--------+--------------+------------+--------+---------+
|      1 | Ethan Hunt   | 2001-05-01 |   5000 |       1 |
|      2 | Tony Montana | 2002-07-15 |   6500 |       5 |
|      3 | Sarah Connor | 2005-10-18 |   8000 |       3 |
|      4 | Rick Deckard | 2007-01-03 |   7200 |       4 |
|      5 | Martin Blank | 2008-06-24 |   5600 |    NULL |
+--------+--------------+------------+--------+---------+

更新单列

下面的SQL语句将更新employees表的emp_name字段,并设置一个新值,要更新的是emp_id等于3的那一行。

示例

UPDATE employees SET emp_name = 'Sarah Ann Connor'
WHERE emp_id = 3;

执行之后,结果表将如下所示:

+--------+------------------+------------+--------+---------+
| emp_id | emp_name         | hire_date  | salary | dept_id |
+--------+------------------+------------+--------+---------+
|      1 | Ethan Hunt       | 2001-05-01 |   5000 |       1 |
|      2 | Tony Montana     | 2002-07-15 |   6500 |       5 |
|      3 | Sarah Ann Connor | 2005-10-18 |   8000 |       3 |
|      4 | Rick Deckard     | 2007-01-03 |   7200 |       4 |
|      5 | Martin Blank     | 2008-06-24 |   5600 |    NULL |
+--------+------------------+------------+--------+---------+

更新多个列

类似地,可以使用逗号分隔的字段和值列表更新多个字段。下面的示例将更新employee表中emp_id为5的现有员工的salarydept_id字段。

示例

UPDATE employees
SET salary = 6000, dept_id = 2
WHERE emp_id = 5;

执行之后,结果表将如下所示:

+--------+------------------+------------+--------+---------+
| emp_id | emp_name         | hire_date  | salary | dept_id |
+--------+------------------+------------+--------+---------+
|      1 | Ethan Hunt       | 2001-05-01 |   5000 |       1 |
|      2 | Tony Montana     | 2002-07-15 |   6500 |       5 |
|      3 | Sarah Ann Connor | 2005-10-18 |   8000 |       3 |
|      4 | Rick Deckard     | 2007-01-03 |   7200 |       4 |
|      5 | Martin Blank     | 2008-06-24 |   6000 |       2 |
+--------+------------------+------------+--------+---------+


浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载