概要
SQLite3 における DELETE 文の基本的な使い方。
構文
削除したいレコードの条件を WHERE 句で指定するのが基本。
DELETE FROM table_name
WHERE
column = value ...
実行例
| id | name | quantity |
|---|---|---|
| 1 | tomato | 100 |
| 2 | potato | 120 |
| 3 | pumpkin | 50 |
「name」カラムの値が「tomato」のレコードを削除する
DELETE FROM product
WHERE
name = 'tomato';
| id | name | quantity |
|---|---|---|
| 2 | potato | 120 |
| 3 | pumpkin | 50 |
テーブルの全レコードを削除する
SQLite 3 ではOracleやMySQLのようなTRUNCATE構文がサポートされていない。
テーブルの全レコードを削除する場合は WHERE 句を指定せずに DELETE 文を実行すればいい。
TRUNCATEではないからと言って削除処理が遅いわけではない。
WHERE 句や RETURNING 句を指定すると各レコードにアクセスしながら削除していくが、
これらを指定しなかった場合 各レコードにアクセスせずに
テーブルの内容全体を削除するよう最適化されている。
DELETE FROM table_name;
参考サイト
-
SQLite 公式サイト(英語)
https://www.sqlite.org/index.html -
SQLite Query Language: DELETE(英語)
公式のDELETE構文に関するドキュメント
https://www.sqlite.org/lang_delete.html -
The Truncate Optimization(英語)
公式のテーブル内容全削除に関するドキュメント
https://www.sqlite.org/lang_delete.html#the_truncate_optimization