Elimina più tabelle in un colpo solo in mysql


102

Come eliminare più tabelle da un singolo database con un unico comando. qualcosa di simile a,

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

dove a, b, c sono le tabelle del test del database.


17
ti rispondi già
ajreal

in base alle risposte seguenti, in HeidiSQL puoi filtrare le tabelle in base al loro nome (casella di testo in alto), scrivere DROP TABLE in una query e fare doppio clic su ciascuna tabella desiderata per aggiungere il suo nome alla query (mettere una virgola tra di loro) quindi premere F9 per eseguire. Un po 'fuori tema ma sono venuto qui per quello.
Villa Ivan Ferrer

Per le persone che vogliono far cadere diversi tavoli con lo stesso prefisso, dal momento che DROP TABLE table_prefix_*non funziona con il carattere stella: stackoverflow.com/questions/6758652/...
baptx

Risposte:


135

Esempio:

Supponiamo che la tabella A abbia due figli B e C. Quindi possiamo usare la seguente sintassi per eliminare tutte le tabelle.

DROP TABLE IF EXISTS B,C,A;

Questo può essere posizionato all'inizio dello script invece di rilasciare individualmente ogni tabella.


29
Forse vale la pena sottolineare che i tavoli non hanno bisogno di alcuna relazione. Possono essere completamente indipendenti e questa sintassi continuerà a funzionare.
crmpicco

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

Quindi non devi preoccuparti di lasciarli cadere nell'ordine corretto, né se esistono effettivamente.

NB questo è solo per MySQL (come nella domanda). È probabile che altri database abbiano metodi diversi per eseguire questa operazione.


3
Mi hai salvato da un sacco di problemi trasformando i controlli fkey (y).
HungryCoder

0

Un modo pigro per farlo se ci sono molte tabelle da eliminare.

  1. Ottieni la tabella utilizzando il seguente

    • Per sql server: SELEZIONA CONCAT (name, ',') Table_Name FROM SYS.tables;
    • Per oralce - SELEZIONA CONCAT (TABLE_NAME, ',') FROM SYS.ALL_TABLES;
  2. Copiare e incollare i nomi delle tabelle dal set di risultati e incollarlo dopo il comando 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.