UPDATE 语句用于更新表中已存在的记录。
UPDATE table_name |
SET column1=value1,column2=value2,... |
WHERE some_column=some_value; |
请注意 SQL UPDATE 语句中的 WHERE 子句! WHERE 子句规定哪条记录或者哪些记录需要更新。如果您省略了 WHERE 子句,所有的记录都将被更新! |
在本教程中,我们将使用 Web3 样本数据库。
下面是选自 "Websites" 表的数据:
+----+--------------+---------------------------+-------+---------+ |
| id | name | url | alexa | country | |
+----+--------------+---------------------------+-------+---------+ |
| 1 | Google | https://www.google.cm/ | 1 | USA | |
| 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | |
| 3 |芝麻教程 | http://www.web3.xin/ | 4689 | CN | |
| 4 | 微博 | http://weibo.com/ | 20 | CN | |
| 5 | Facebook | https://www.facebook.com/ | 3 | USA | |
+----+--------------+---------------------------+-------+---------+ |
假设我们要把 "芝麻教程" 的 alexa 排名更新为 5000,country 改为 USA。
我们使用下面的 SQL 语句:
UPDATE Websites |
SET alexa='5000', country='USA' |
WHERE name='芝麻教程'; |
mysql> update websites set alexa = 5000, country = 'USA' where name = '芝麻教程'; |
Query OK, 1 row affected (0.09 sec) |
Rows matched: 1 Changed: 1 Warnings: 0 |
mysql> select * from websites; |
+----+---------------+---------------------------+-------+---------+ |
| id | name | url | alexa | country | |
+----+---------------+---------------------------+-------+---------+ |
| 1 | Google | https://www.google.cm/ | 1 | USA | |
| 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | |
| 3 | 芝麻教程 | http://www.web3.xin/ | 5000 | USA | |
| 4 | 微博 | http://weibo.com/ | 20 | CN | |
| 5 | Facebook | https://www.facebook.com/ | 3 | USA | |
| 6 | 百度 | https://www.baidu.com/ | 4 | CN | |
| 9 | stackoverflow | http://stackoverflow.com/ | NULL | IND | |
+----+---------------+---------------------------+-------+---------+ |
7 rows in set (0.00 sec) |
在更新记录时要格外小心!在上面的实例中,如果我们省略了 WHERE 子句,如下所示:
UPDATE Websites |
SET alexa='5000', country='USA' |
执行以上代码会将 Websites 表中所有数据的 alexa 改为 5000,country 改为 USA。
执行没有 WHERE 子句的 UPDATE 要慎重,再慎重。