2021年5月22日土曜日

SQLite 3 テーブルのデータを削除する (DELETE)

概要

SQLite3 における DELETE 文の基本的な使い方。

構文

削除したいレコードの条件を WHERE 句で指定するのが基本。


DELETE FROM table_name
WHERE
    column = value ...
                    

実行例

サンプルテーブル(product)
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;
                

参考サイト