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.


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.


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.


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.


-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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.