在本教程中,您將學(xué)習(xí)如何使用SQL更新數(shù)據(jù)庫(kù)表中的記錄。
在前面的章節(jié)中,我們學(xué)習(xí)了如何根據(jù)各種條件插入數(shù)據(jù)以及如何從數(shù)據(jù)庫(kù)表中選擇查詢數(shù)據(jù)。在本教程中,我們將學(xué)習(xí)執(zhí)行一項(xiàng)更重要的任務(wù),即更新數(shù)據(jù)庫(kù)表中的現(xiàn)有記錄。
UPDATE語句用于更新表中的現(xiàn)有數(shù)據(jù)。
UPDATE table_name SET column1_name = value1, column2_name = value2,...WHERE condition;
在這里,column1_name,column2_name,...是要更新其值的數(shù)據(jù)庫(kù)表的列或字段的名稱。您還可以使用在上一章中學(xué)到的 OR和 AND 運(yùn)算符組合多個(gè)條件。
警告:UPDATE語句中的WHERE子句指定應(yīng)更新的記錄。 如果省略WHERE子句,則所有記錄將被更新。
讓我們看一些示例,演示其實(shí)際工作方式。
假設(shè)我們?cè)跀?shù)據(jù)庫(kù)中有一個(gè)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字段并設(shè)置一個(gè)新值,其中employee id(即emp_id)等于3。
UPDATE employees SET emp_name = 'Sarah Ann Connor' WHERE emp_id = 3;
執(zhí)行后,結(jié)果表將如下所示:
+--------+------------------+------------+--------+---------+ | 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 | +--------+------------------+------------+--------+---------+
同樣,您可以使用以逗號(hào)分隔的列名和值對(duì)的列表來更新多個(gè)列。以下示例將更新employees表中emp_id為5 的現(xiàn)有員工的salary和dept_id字段。
UPDATE employees SET salary = 6000, dept_id = 2 WHERE emp_id = 5;
執(zhí)行后,結(jié)果表將如下所示:
+--------+------------------+------------+--------+---------+ | 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 | +--------+------------------+------------+--------+---------+