Legen Sie mehrere Tabellen auf einmal in MySQL ab

101

So löschen Sie mehrere Tabellen mit einem Befehl aus einer einzigen Datenbank. etwas wie,

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

Dabei sind a, b, c die Tabellen aus dem Datenbanktest.

Krunal
quelle
17
Sie antworten sich bereits
Ajreal
Gemäß den folgenden Antworten können Sie in HeidiSQL Tabellen nach ihrem Namen filtern (oberes Textfeld), DROP TABLE in eine Abfrage schreiben und auf jede gewünschte Tabelle doppelklicken, um ihren Namen an die Abfrage anzuhängen (ein Komma dazwischen setzen) und dann F9 drücken, um sie auszuführen. Ein bisschen abseits des Themas, aber dafür bin ich hergekommen.
Ivan Ferrer Villa
Für Leute, die mehrere Tabellen mit demselben Präfix löschenDROP TABLE table_prefix_*
möchten

Antworten:

134

Beispiel:

Angenommen, Tabelle A hat zwei untergeordnete Elemente B und C. Dann können wir die folgende Syntax verwenden, um alle Tabellen zu löschen.

DROP TABLE IF EXISTS B,C,A;

Dies kann am Anfang des Skripts platziert werden, anstatt jede Tabelle einzeln zu löschen.

Leniel Maccaferri
quelle
28
Vielleicht ist es erwähnenswert, dass die Tabellen überhaupt keine Beziehung haben müssen. Sie können völlig unabhängig sein und diese Syntax funktioniert weiterhin.
Crmpicco
76
SET foreign_key_checks = 0;
DROP TABLE IF EXISTS a,b,c;
SET foreign_key_checks = 1;

Dann müssen Sie sich keine Sorgen mehr machen, ob Sie sie in der richtigen Reihenfolge ablegen oder ob sie tatsächlich existieren.

Hinweis: Dies ist nur für MySQL (wie in der Frage). Andere Datenbanken haben wahrscheinlich andere Methoden, um dies zu tun.

OrangeDog
quelle
3
Sie haben mich vor viel Ärger bewahrt, indem Sie fkey-Checks (y) aktiviert haben.
HungryCoder
0

Ein fauler Weg, dies zu tun, wenn viele Tabellen gelöscht werden müssen.

  1. Holen Sie sich die Tabelle mit den folgenden

    • Für SQL Server - SELECT CONCAT (name, ',') Table_Name FROM SYS.tables;
    • Für die mündliche Verhandlung - SELECT CONCAT (TABLE_NAME, ',') FROM SYS.ALL_TABLES;
  2. Kopieren Sie die Tabellennamen aus der Ergebnismenge, fügen Sie sie ein und fügen Sie sie nach dem Befehl DROP ein.

Javaughn Jackson
quelle
-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
user4774666
quelle