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 ステートメントを使用しても何も出力されません。
その他の拡張