在本教程中,您将学习如何使用SQL从数据库表中删除记录。
就像使用INSERT语句将记录插入表中一样,您也可以使用语句从表中删除记录DELETE。
DELETE语句用于从表中删除一个或多个行。
DELETE FROM table_name WHERE condition;
警告:DELETE语句中的WHERE子句指定应删除的记录。 但是,它是可选的,但是如果您省略或忘记了WHERE子句,则所有记录将从表中永久删除。
让我们从在创建表一章中创建的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 | +----+--------------------+------------+-------------+
以下语句将从id大于3的人员(persons)表中删除行。
DELETE FROM persons WHERE id > 3;
执行查询后,人员(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 | +----+--------------------+------------+-------------+
注意:请参考有关SQL WHERE子句的教程,以了解如何在从表中删除记录时基于多个条件形成复杂的查询。
同样,如上所述,如果您未在WHERE语句中指定子句,则DELETE表中的所有行都将被删除。但是,目标表本身不会被删除,这意味着表结构,属性和索引将保持不变,但是表中的数据会被清空。
以下语句将删除人员(persons)表中的所有记录:
DELETE FROM persons;
现在,如果您尝试从人员(persons)表中选择或查询记录,则会得到一个空结果集。