SQLite Truncate Table

SQLite には TRUNCATE TABLE コマンドはありませんが、SQLite のDELETEDELETE コマンドを使用して、既存のテーブルからすべてのデータを削除できます。

構文

DELETE コマンドの基本構文は次のとおりです:

sqlite> DELETE FROM table_name;

しかし、この方法では自動増分番号をゼロに戻すことはできません。

自動増分番号をゼロに戻したい場合は、以下の方法を使用できます:

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

SQLite データベースに自動増分列が含まれている場合、sqlite_sequence という名前のテーブルが自動的に作成されます。このテーブルには name と seq の2つの列があります。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 ステートメントを使用しても何も出力されません。

その他の拡張