データベースのテーブルをすべて削除したい時ってありますよね。
設計書のテーブル一覧からDMLを作るのは面倒ですし、設計書が最新とは限らないので、データベースからテーブル一覧を取得してDROP文を作ってしまいましょう。
MySQLの場合は、INFORMATION_SCHEMA.TABLESからテーブル一覧がSELECTできるので、文字列結合してDROP文が作れます。
SELECT CONCAT('DROP TABLE IF EXISTS ', TABLE_NAME, ' CASCADE;') AS DML
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA='テーブル一覧取得対象のスキーマ名'
ちなみにテーブルは残して中身のレコードだけ消すならTRUNCATE文に書き換えることでDELETEより高速でレコードが消去できるDMLを作ることもできます。
SELECT CONCAT('TRUNCATE TABLE ', TABLE_NAME, ';') AS DML
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA='テーブル一覧取得対象のスキーマ名'
コメント