SQL DELETE 语句

在本教程中,你将学习如何使用 SQL 从数据库表中删除记录。

从表中删除数据

正如你使用 INSERT 语句将记录插入表中一样,你也可以使用 DELETE 语句从表中删除记录。

语法

DELETE 语句用于从表中删除一行或多行。

DELETE FROM table_name WHERE condition;

警告:DELETE 语句中用 WHERE 子句指定一个或多个记录应予删除。但它是可选的,但是如果省略或忘记该 WHERE 子句,则将从表中永久删除所有记录。

让我们从我们在 cerate table 章节中创建的 persons 表中删除一些记录。

假设我们的 persons 表目前有以下记录:

+----+--------------------+------------+-------------+
| id | name               | birth_date | phone       |
+----+--------------------+------------+-------------+
|  1 | Peter Wilson       | 1990-07-15 | 0711-020361 |
|  2 | Carrie Simpson     | 1995-05-01 | 0251-031259 |
|  3 | Victoria Ashworth  | 1996-10-17 | 0695-346721 |
|  4 | George Bailey      | 1993-03-05 | 0897-034214 |
|  5 | Norman Bates       | 1999-08-25 | 0522-556721 |
+----+--------------------+------------+-------------+

根据条件删除记录

以下语句将删除 persons 表中 id 大于 3 的行。

DELETE FROM persons WHERE id > 3;

执行查询后,people 表将如下所示:

+----+--------------------+------------+-------------+
| id | name               | birth_date | phone       |
+----+--------------------+------------+-------------+
|  1 | Peter Wilson       | 1990-07-15 | 0711-020361 |
|  2 | Carrie Simpson     | 1995-05-01 | 0251-031259 |
|  3 | Victoria Ashworth  | 1996-10-17 | 0695-346721 |
+----+--------------------+------------+-------------+

注意: 请参阅 SQL WHERE 子句 教程,了解如何根据多个条件形成复杂查询,同时删除表中的记录。

删除所有数据

类似,如上所述,如果你没有在 DELETE 语句中指定 WHERE 子句,那么表中的所有行都将被删除。但是,不会删除目标表本身,这意味着表结构,属性和索引将保持不变。

以下语句将删除 persons 表中的所有记录 :

DELETE FROM persons;

现在,如果你尝试从 persons 表中选择记录,你将获得一个空结果集。