Mysql教程

11.2更新数据

更新数据是更新表中已经存在的记录。通过这种方式可以改变表中已经存在的数据。 例如,学生表中某个学生的家庭住址改变了,这就需要在学生表中修改该同学的家庭地址。在MySQL中,通过UPDATE语句来更新数据。本小节将详细讲解这些内容。在MySQL中,UPDATE语句的基本语法形式如下:

UPDATE表名 SET属性名1=取值1,属性名2=取值2,属性名n=取值n WHERE条件表达式;

其中,“属性名n”参数表示需要更新的字段的名称;“取值n”参数表示为字段更新的新数据;“条件表达式”参数指定更新满足条件的记录。

【示例11-7】下面更新product表中id值为1001的记录。将name字段的值变为'AAA感冒药'将address字段的值变为‘北京市朝阳区’。先用SELECT语句查询id值为1001的记录。SELECT语句执行结果如下:

mysql>SELECT *FROM product WHERE id=1001;
+------+--------+------------+-----------+-----------+
|  id  |  name  |  function  |  company  |  address  |
+------+--------+------------+-----------+-----------+
| 1001 | ABC药物 | 治疗感冒  | ABC制药厂 | 北京市昌平区  |
+------+--------+------------+-----------+-----------+
1 row in set(0.00 sec)

查询结果显示,name字段的值为“ABC药物”; address字段的值为“北京市昌平区”。 然后更新记录。UPDATE语句的代码如下:

UPDATE productSET name='AAA感冒药',address='京市朝阳区'WHERE id=1001;

代码执行如下:

mysql>SELECT *FROM product WHERE id=1001;
+------+--------+------------+-----------+-----------+
|  id  |  name  |  function  |  company  |  address  |
+------+--------+------------+-----------+-----------+
| 1001 | AAA药物 | 治疗感冒  | ABC制药厂 | 北京市朝阳区  |
+------+--------+------------+-----------+-----------+
1 row in set(0.00 sec)

结果显示,name字段的值已经变为“AAA感冒药”;address字段的值已经变为“北京市朝阳区”。这说明,数据己经更新成功。

表中满足条件表达式的记录可能不止一条。使用UPDATE语句会更新所有满足条件的记录。

【示例11-8】下面更新product表中id值为1009~1011的记录。将function字段的 值变为“护理头发”。将address字段的值变为“北京市昌平区”。先用SELECT语句查询id值从1009~1011的记录。SELECT语句执行结果如下:

mysql>SELECT *FROM product WHERE id=1001;
+------+--------+------------+-----------+-----------+
|  id  |  name  |  function  |  company  |  address  |
+------+--------+------------+-----------+-----------+
| 1009 | 护发1号|    NULL    | 北京护发素厂 | NULL  |
| 1010 | 护发2号|    NULL    | 北京护发素厂 | NULL  |
| 1011 | 护发3号|    NULL    | 北京护发素厂 | NULL  |
+------+--------+------------+-----------+-----------+
3 row in set(0.00 sec)

查询结果显示,function字段和address字段的取值都为空值(NULL)。使用UPDATE语句来更新这些记录。UPDATE语句的代码如下:

UPDATE product SETfunction='护理头发',address='北京市昌平区' WHERE id>=1009 AND id<=1011;

结果显示,数据更新成功。执行SELECT语句来查询更新后的记录。SELECT语句执行结果如下:

mysql>SELECT *FROM product WHERE id=1001;
+------+--------+------------+-----------+-----------+
|  id  |  name  |  function  |  company  |  address  |
+------+--------+------------+-----------+-----------+
| 1009 | 护发1号|    NULL    | 北京护发素厂 | NULL  |
| 1010 | 护发2号|    NULL    | 北京护发素厂 | NULL  |
| 1011 | 护发3号|    NULL    | 北京护发素厂 | NULL  |
+------+--------+------------+-----------+-----------+
3 row in set(0.00 sec)

结果显示,这3条记录的function字段的值已经变为“护理头发”;address字段的值已经变为“北京市昌平区”。这说明满足WHERE条件的所有数据已经更新成功。

注意:使用UPDATE语句更新数据时,可能会有多条记录满足WHERE条件。这个时候一定要特别小心,最好先执行SELECT语句判断满足WHERE条件的记录是否确实是需要更新的。如果其中有些记录不需要更新,应该重新设置WHERE条件。


关注微信获取最新动态