首页 > 编程笔记 > MySQL笔记 阅读:65

MySQL DELETE语句:删除表中的数据(非常详细,附带实例)

MySQL 中,从数据表中删除数据使用 DELETE 语句,DELETE 语句允许 WHERE 子句指定删除条件。

DELETE语句基本语法格式如下:
DELETE FROM table_name [WHERE <condition>];

【实例】在 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 快。

相关文章