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条件。