在 MySQL 中,从数据表中删除数据使用 DELETE 语句,DELETE 语句允许 WHERE 子句指定删除条件。
DELETE语句基本语法格式如下:
DELETE FROM table_name [WHERE
table_name 指定要执行删除操作的表;
“[WHERE
【实例】在 person 表中,删除 id 等于 11 的记录。执行删除操作前,使用 SELECT 语句查看当前 id=11 的记录:
mysql> SELECT * FROM person WHERE id=11;
+----+--------+-----+---------+
| id | name | age | info |
+----+--------+-----+---------+
| 11 | LiMing | 15 | student |
+----+--------+-----+---------+
可以看到,现在表中有 id=11 的记录。下面使用 DELETE 语句删除该记录:
mysql> DELETE FROM person WHERE id = 11;
Query OK, 1 row affected (0.02 sec)
语句执行完毕,查看执行结果:
mysql> SELECT * FROM person WHERE id=11;
Empty set (0.00 sec)
查询结果为空,说明删除操作成功。
【实例】在 person 表中,使用 DELETE 语句同时删除多条记录。执行删除操作前,使用 SELECT 语句查看一下的数据:
mysql> SELECT * FROM person WHERE age BETWEEN 19 AND 22;
+----+-----------+-----+---------+
| id | name | age | info |
+----+-----------+-----+---------+
| 1 | Green | 20 | student |
| 2 | Suse | 21| student |
| 4 | Willam | 22 | student |
| 7 | Dale | 22 | student |
| 9 | Harry | 21 | student |
| 10 | Harriet | 19 | student |
+----+-----------+-----+---------+
可以看到,这些 age 字段值在 19~22 之间的记录存在表中。下面使用 DELETE 删除这些记录:
mysql> DELETE FROM person WHERE age BETWEEN 19 AND 22;
Query OK, 6 rows affected (0.00 sec)
语句执行完毕,查看执行结果:
mysql> SELECT * FROM person WHERE age BETWEEN 19 AND 22;
Empty set (0.00 sec)
查询结果为空,删除多条记录成功。
【实例】删除 person 表中所有记录。执行删除操作前,使用 SELECT 语句查看当前的数据:
mysql> SELECT * FROM person;
+----+----------+-----+----------+
| id | name | age | info |
+----+----------+-----+----------+
| 3 | Mary | 24 | Musician |
| 5 | Laura | 25 | NULL |
| 6 | Evans | 27 | secretary|
| 12 | Beckham | 31 | police |
+----+----------+-----+----------+
结果显示 person 表中还有 4 条记录,执行 DELETE 语句删除这 4 条记录:
mysql> DELETE FROM person;
Query OK, 4 rows affected (0.00 sec)
语句执行完毕,查看执行结果:
mysql> SELECT * FROM person;
Empty set (0.00 sec)
查询结果为空,说明删除表中所有记录成功,现在 person 表中已经没有任何数据记录。
如果想删除表中的所有记录,还可以使用 TRUNCATE TABLE 语句。TRUNCATE 将直接删除原来的表,并重新创建一个表,其语法结构为 TRUNCATE TABLE table_name。TRUNCATE 直接删除表而不是删除记录,因此执行速度比 DELETE 快。