Skip to main content

SQLite DELETE语句的逐步示例

SQLite DELETE语句简介

您已经学习了如何在表中插入新行并更新表的现有数据。有时,需要从表中删除行。在本例中,使用SQLite DELETE语句。

SQLite DELETE语句允许删除表中的一行、多行和所有行。SQLite DELETE语句的语法如下:

DELETE FROM table
WHERE search_condition;

在这种语法中:

SQLite还通过添加ORDER by和LIMIT子句来扩展DELETE语句。如果使用SQLite_ENABLE_UPDATE_DELETE_LIMIT compile time选项编译SQLite,则可以在DELETE语句中使用ORDER BY和LIMIT子句,如下所示:

DELETE FROM table
WHERE search_condition
ORDER BY criteria
LIMIT row_count OFFSET offset;

ORDER BY子句对WHERE子句中根据前面的搜索条件过滤的行进行排序,LIMIT子句指定要删除的行数。

请注意,在没有触发器的表上使用不带WHERE子句的DELETE语句时。SQLite将一次性删除所有行,而不是访问和删除每一行。此功能称为截断优化。

SQLite DELETE语句示例

我们将使用在“如何将行插入表”教程中创建的表。

如果没有遵循该教程,可以使用以下脚本创建artists_备份表并将数据插入其中:

-- create artists backup table
CREATE TABLE artists_backup(
artistid INTEGER PRIMARY KEY AUTOINCREMENT,
name NVARCHAR
);
-- populate data from the artists table
INSERT INTO artists_backup
SELECT artistid,name
FROM artists;

下面的语句返回备份表中的所有行:

SELECT
artistid,
name
FROM
artists_backup;

试试看

SQLite Delete Table Example

备份表中有280行。

要删除id为1的艺术家,请使用以下语句:

DELETE FROM artists_backup
WHERE artistid = 1;

试试看

因为我们使用artistid来识别艺术家,所以该语句只删除了一行。

假设您要删除名称中包含桑塔纳一词的艺术家:

DELETE FROM artists_backup
WHERE name LIKE '%Santana%';

试试看

名称列中有9行的值包含单词Santana,因此,这9行被删除。

要删除表中的所有行,只需省略WHERE子句,如下所示:

DELETE FROM artists_backup;

试试看

在本教程中,您学习了如何使用SQLite DELETE语句删除表中的行。