mysqlで複数のテーブルを一度にドロップする


102

1つのコマンドで1つのデータベースから複数のテーブルを削除する方法。何かのようなもの、

> use test; 
> drop table a,b,c;

ここで、a、b、cはデータベーステストのテーブルです。


17
あなたはすでに自分に答えています
ajreal

以下の回答によると、HeidiSQLでは、テーブルを名前(上部のテキストボックス)でフィルターDROP TABLE し、クエリに書き込み、目的の各テーブルをダブルクリックしてその名前をクエリに追加し(間にコンマを挿入)、F9 キーを押して実行します。少し話題外ですが、私はそのためにここに来ました。
Ivan Ferrer Villa

以来、同じ接頭辞で複数のテーブルをドロップしたい人々のためにDROP TABLE table_prefix_*:スター文字では動作しませんstackoverflow.com/questions/6758652/...
baptxを

回答:


135

例:

テーブルAに2つの子BとCがあるとします。次に、次の構文を使用してすべてのテーブルを削除できます。

DROP TABLE IF EXISTS B,C,A;

これは、各テーブルを個別にドロップする代わりに、スクリプトの最初に置くことができます。


29
たぶん、テーブルはまったく関係を持つ必要がないことを指摘する価値があります。これらは完全に独立していても、この構文は引き続き機能します。
crmpicco 14

76
SET foreign_key_checks = 0;
DROP TABLE IF EXISTS a,b,c;
SET foreign_key_checks = 1;

そうすれば、それらを正しい順序でドロップすることや、それらが実際に存在するかどうかについて心配する必要はありません。

注意:これは、MySQL専用です(質問と同様)。他のデータベースでは、これを行うための方法が異なる可能性があります。


3
fkeyチェックをオフにすることで、多くの面倒から私を救ってくれました(y)。
HungryCoder 14

0

削除するテーブルがたくさんある場合、これを行うための遅延方法。

  1. 以下を使用してテーブルを取得する

    • SQLサーバーの場合-SELECT CONCAT(name、 '、')Table_Name FROM SYS.tables;
    • 口頭の場合-SELECT CONCAT(TABLE_NAME、 '、')FROM SYS.ALL_TABLES;
  2. 結果セットからテーブル名をコピーして貼り付け、DROPコマンドの後に貼り付けます。


-3
declare @sql1 nvarchar(max) 
SELECT @sql1 =
  STUFF(
         (
           select ' drop table dbo.[' + name + ']'

           FROM sys.sysobjects AS sobjects
           WHERE (xtype = 'U') AND (name LIKE 'GROUP_BASE_NEW_WORK_%')
           for xml path('')
        ),
     1, 1, '')

  execute sp_executesql @sql1
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.