MySQL DELETE语句:删除表中的数据(非常详细,附带实例)
在 MySQL 中,从数据表中删除数据使用 DELETE 语句,DELETE 语句允许 WHERE 子句指定删除条件。
DELETE语句基本语法格式如下:
【实例】在 person 表中,删除 id 等于 11 的记录。执行删除操作前,使用 SELECT 语句查看当前 id=11 的记录:
【实例】在 person 表中,使用 DELETE 语句同时删除多条记录。执行删除操作前,使用 SELECT 语句查看一下的数据:
【实例】删除 person 表中所有记录。执行删除操作前,使用 SELECT 语句查看当前的数据:
DELETE语句基本语法格式如下:
DELETE FROM table_name [WHERE <condition>];
- table_name 指定要执行删除操作的表;
- “[WHERE <condition>]”为可选参数,指定删除条件,如果没有 WHERE 子句,DELETE 语句将删除表中的所有记录。
【实例】在 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 快。