Mysql教程

11.3删除数据

删除数据是删除表中已经存在的记录。通过这种方式可以删除表中不再使用的记录。 例如,学生表中某个学生退学了,这就需要从学生表中删除该同学的信息。MySQL中,通过DELETE语句来删除数据。MySQL中,DELETE语句的基本语法形式如下:

DELETE FROM表名[WHERE条件表达式];

其中,“表名”参数指明从哪个表中删除数据;“WHERE条件表达式”指定删除表中的哪些数据。如果没有该条件表达式,数据库系统就会删除表中的所有数据。

【示例11-9】下面删除product表中id值为1001的记录。在删除之前,使用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)

查询结果显示4阳如过表中存在id为1001的记录。执行DELETE语句来删除该数据。 DELETE语句的代码如下:

DELETE FROM product WHERE id=1001 ;

结果显示删除成功。使用SELECT语句,查询是否还存在ID为1001的记录。询结果显示,已经不存在id为1001的记录了。这说明记录删除成功。 DELETE语句可以同时删除多条记录。


【示例11-10】下面删除product表中address值为'北京市顺义区'的记录,在删除之前使用SELECT语句来查看这些记录,SELECT查询结果如下:

mysql>SELECT *FROM product WHERE id=1001;
+------+--------+------------+-----------+-----------+
|  id  |  name  |  function  |  company  |  address  |
+------+--------+------------+-----------+-----------+
| 1003 | ABC康复丸 | 治疗癌症  | AB康复制药厂 | 北京市顺义区  |
| 1003 |  止咳1号  | 治疗咳嗽  | 咳嗽药制药厂 | 北京市顺义区  |
| 1003 |  止咳2号  | 治疗咳嗽  | 咳嗽药制药厂 | 北京市顺义区  |
| 1003 |  止咳3号  | 治疗咳嗽  | 咳嗽药制药厂 | 北京市顺义区  |
+------+--------+------------+-----------+-----------+
4 row in set(0.07 sec)

查询结果显示,product表中存在4条满足条件的记录,执行DELETE语句来删除这4条记录,DELETE语句如下:

DELETE FROM product WHERE address='北京市顺义区';

结果显示删除成功。使用SELECT语句,查询这4条记录是否还存在。SELECT语句执行结果如下:

mysql>SELECT *FROM product;
+------+--------+------------+-----------+-----------+
|  id  |  name  |  function  |  company  |  address  |
+------+--------+------------+-----------+-----------+
| 1002 |   BCD  | 治疗头疼   | BCD制药厂 | 北京市海淀区  |
| 1004 | EF咳嗽灵   | NULL   | EF制药厂 |   |  NULL    |
| 1005 | OK护发素   | NULL   | 北京制药厂 | |  NULL    |
| 1006 | 头疼灵1号  | 治疗头疼  | DD制药厂 | 北京市房山区 |
| 1007 | 头疼灵2号  | 治疗头疼  |DD制药厂 | 北京市房山区  |
| 1008 | 头疼灵3号  | 治疗头疼  | DD制药厂 | 北京市房山区 |
| 1009 |  护发1号   | 护理头发  | 北京护发素厂 | 北京市昌平区 |
| 1010 |  护发2号   | 护理头发  | 北京护发素厂 | 北京市昌平区 |
| 1011 |  护发3号   | 护理头发  | 北京护发素厂 | 北京市昌平区 |
+------+--------+------------+-----------+-----------+
9 row in set(0.07 sec)

查询结果显示,已经不存在address字段取值为“北京市顺义区”的记录了。这说明记录删除成功。 DELETE语句中如果不加上“WHERE条件表达式”,数据库系统会删除指定表中的所有数据。

【示例11-11】下面删除product表中的所有记录。在删除之前,使用SELECT语句来査看这些记录。SELECT语句查询结果如下:

mysql>SELECT *FROM product;
+------+--------+------------+-----------+-----------+
|  id  |  name  |  function  |  company  |  address  |
+------+--------+------------+-----------+-----------+
| 1002 |   BCD  | 治疗头疼   | BCD制药厂 | 北京市海淀区  |
| 1004 | EF咳嗽灵   | NULL   | EF制药厂 |   |  NULL    |
| 1005 | OK护发素   | NULL   | 北京制药厂 | |  NULL    |
| 1006 | 头疼灵1号  | 治疗头疼  | DD制药厂 | 北京市房山区 |
| 1007 | 头疼灵2号  | 治疗头疼  |DD制药厂 | 北京市房山区  |
| 1008 | 头疼灵3号  | 治疗头疼  | DD制药厂 | 北京市房山区 |
| 1009 |  护发1号   | 护理头发  | 北京护发素厂 | 北京市昌平区 |
| 1010 |  护发2号   | 护理头发  | 北京护发素厂 | 北京市昌平区 |
| 1011 |  护发3号   | 护理头发  | 北京护发素厂 | 北京市昌平区 |
+------+--------+------------+-----------+-----------+
9 row in set(0.07 sec)

查询结果显示,product表中存在9条记录。执行DELETE语句来删除这9条记录。 DELETE语句的代码如下:

DELETE FROM product;
mysql>SELECT *FROM product;
0 row in set(0.00 sec)

查询结果显示,product表中已经不存在任何记录了。这说明已经成功将product表的所有记录删除成功了。

说明:因为执行DELETE语句后,会将记录从表中删除。删除过程中不会有任何提示, 因此必须要特别小心。在条件允许的情况下,最好先用SELECT语句查询准备删除的记录。这样可以确认这些记录确实是需要删除的。


关注微信获取最新动态