やりたいこと
全てのテーブルデータを削除したい。
全てのテーブルのデータ件数を確認したい。
上記のように「全てのテーブルに〇〇したい」という操作を簡単に行う方法を紹介します。
テーブル(表)のデータを削除するSQL
OracleのSQLでデータを削除する方法は「DELETE」と「TRUNCATE」の2種類があります。
操作を取り消す必要がない場合は「TRUNCATE」が圧倒的に高速なのでおすすめです。
ただし取り消す(ROLLBACK)ことはできないので注意が必要です。
-- 特定テーブルのデータを全て削除する(ROLLBACK不可)
TRUNCATE TABLE <テーブル名>;
-- 特定テーブルのデータを全て削除する(ROLLBACK可)
DELETE FROM <テーブル名>;
全てのテーブルのデータを削除する方法
特定テーブルのデータを削除する方法は紹介しました。
全てのテーブルのデータを削除するためには、テーブルの数だけ「TRUNCATE」を実行する必要があります。
「TRUNCATE」文を用意することができれば削除は簡単です。ここでは全てのテーブルに対して「TRUNCATE」文を簡単に用意する方法を紹介します。
SELECT 'TRUNCATE TABLE '||table_name||';' FROM user_tables ORDER BY table_name;
このSQLを実行すると、対象のDBユーザの全てのテーブルに対する「TRUNCATE」文が表示されます。
あとは、コピー&ペーストでファイルに保存したり直接実行することで、データの削除が行えます。