SQLite Truncate Table

SQLite Truncate Table

在 SQLite 中,並沒有 TRUNCATE TABLE 命令,但可以使用 SQLite 的 DELETE 命令從已有的表中刪除全部的資料。

語法

DELETE 命令的基本語法如下:

sqlite> DELETE FROM table_name;

但這種方法無法將遞增數歸零。

如果要將遞增數歸零,可以使用以下方法:

sqlite> DELETE FROM sqlite_sequence WHERE name = 'table_name';

當 SQLite 資料庫中包含自增列時,會自動建立一個名為 sqlite_sequence 的表。這個表包含兩個列:name 和 seq。name 記錄自增列所在的表,seq 記錄當前序號(下一條記錄的編號就是當前序號加 1)。如果想把某個自增列的序號歸零,只需要修改 sqlite_sequence 表就可以了。

UPDATE sqlite_sequence SET seq = 0 WHERE name = 'table_name';

例項

假設 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

下面為刪除上表記錄的例項:

SQLite> DELETE FROM sqlite_sequence WHERE name = 'COMPANY';
SQLite> VACUUM;

現在,COMPANY 表中的記錄完全被刪除,使用 SELECT 語句將沒有任何輸出。