SQLite 使用 DELETE + VACUUM 清空表数据


发布日期 : 2021-07-31 11:06:29 UTC

访问量: 10 次浏览

SQLite TRUNCATE TABLE 命令

SQLite 中没有 TRUNCATE TABLE 命令,但是可以使用 SQLite DELETE 命令来从现有表中删除所有数据,尽管建议使用 DROP TABLE 命令来删除整个表并重新创建。

语法

以下是 DELETE 命令的基本语法:

DELETE FROM table_name;

以下是 DROP TABLE 的基本语法:

DROP TABLE table_name;

如果您使用 DELETE 命令来删除所有记录,建议使用 VACUUM 命令来清理未使用的空间。

示例

考虑具有以下记录的 COMPANY 表:

ID          NAME        AGE         ADDRESS     SALARY
----------  ----------  ----------  ----------  ----------
1           Paul        32          California  20000.0
2           Allen       25          Texas       15000.0
3           Teddy       23          Norway      20000.0
4           Mark        25          Rich-Mond   65000.0
5           David       27          Texas       85000.0
6           Kim         22          South-Hall  45000.0
7           James       24          Houston     10000.0

以下是截断上述表格的示例:

DELETE FROM COMPANY;
VACUUM;

现在,COMPANY 表已完全清除,从 SELECT 语句中将不会有任何输出。

注意事项

  • DELETE vs DROP:DELETE 只删除表中的数据,保留表结构;DROP 会删除整个表(表结构和数据都删除)
  • VACUUM:删除数据后,磁盘空间不会自动释放,使用 VACUUM 可以回收未使用的空间
  • 性能:对于大量数据删除,DELETE 可能会比较慢,可以考虑使用 DROP TABLE + CREATE TABLE 的方式代替