この記事にはプロモーションが含まれていることがあります

全テーブルのDROP文を一発で作る方法

IT

データベーステーブルすべて削除したい時ってありますよね。

設計書のテーブル一覧から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='テーブル一覧取得対象のスキーマ名'

他のデータベースでもテーブル一覧は取得できますので適宜書き換えてください

コメント

タイトルとURLをコピーしました