更新数据
在前几章中,我们介绍了如何插入数据,如何根据不同的条件从数据库表中查询数据。本章我们将介绍如何更新数据库中的现有数据。
语法
UPDATE
语句用于更新表中的现有数据。
UPDATE table_name
SET column1_name = value1, column2_name = value2,...
WHERE condition;
在这里,column1_name, column2_name,...
是要更新的字段名。可以通过设置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的现有员工的salary
和dept_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 |
+--------+------------------+------------+--------+---------+