Introduzione
Il DROP TABLE
consente di rimuovere una tabella da un database MySQL. Questa istruzione cancella l'intera struttura così come il contenuto della tabella.
Il tutorial esplora DROP
comandi di istruzioni e mostra le opzioni per eliminare le tabelle dai database MySQL .
Prerequisiti
- Accesso a una finestra di terminale/riga di comando
- Un sistema che esegue MySQL
- Un database funzionante o di prova
- Un utente MySQL con i privilegi necessari (privilegi DROP richiesti)
Sintassi del comando MySQL DROP TABLE
Per rimuovere una tabella in MySQL, usa il DROP TABLE
dichiarazione. La sintassi di base del comando è la seguente:
DROP [TEMPORARY] TABLE [IF EXISTS] table_name [, table_name] [RESTRICT | CASCADE];
Analizziamo la sintassi:
- Il
DROP TABLE
istruzione elimina una tabella e le sue righe in modo permanente. - Il
[TEMPORARY]
l'opzione ti assicura di rimuovere solo le tabelle temporanee. - Il
[IF EXISTS]
opzione elimina una tabella solo se esiste. - Il
[RESTRICT]
opzione sarà disponibile nelle future iterazioni di MySQL. Garantisce che una riga padre non venga eliminata se una riga figlio fa riferimento a un valore in detta riga padre. - Il
[CASCADE]
L'opzione assicura che quando si elimina una riga, vengano eliminate anche tutte le righe nelle tabelle correlate che fanno riferimento a quella riga. Questa opzione sarà disponibile nelle future iterazioni di MySQL.
Usa l'istruzione DROP per rimuovere una tabella
Per rimuovere permanentemente una tabella, inserisci la seguente istruzione all'interno della shell MySQL:
DROP TABLE table1;
Sostituisci table1
con il nome della tabella che vuoi eliminare. L'output conferma che la tabella è stata rimossa.
Usa DROP per rimuovere solo le tabelle esistenti
MySQL genera un errore se si tenta di eliminare una tabella che non esiste. Questo può essere un problema quando includi il DROP
istruzione in uno script predefinito.
Per verificare prima MySQL se esiste una tabella:
DROP TABLE IF EXISTS table1;
Il IF EXISTS
opzione genera un avviso se table1
non esiste.
L'utilizzo di questa opzione impedisce che uno script si blocchi in caso di errore. Visualizza l'avviso inserendo:
SHOW WARNINGS;
Come eliminare più tabelle
Per eliminare più tabelle con un unico DROP
dichiarazione:
DROP TABLE IF EXISTS table1, table2, table3;
Il IF EXISTS
l'opzione mostra un avviso come table1
non esiste.
Come eliminare una tabella temporanea
Le tabelle temporanee vengono utilizzate per generare e archiviare un set di dati poco prima di utilizzarlo.
Ad esempio, potresti decidere di memorizzare i risultati di un SELECT
istruzione con più istruzioni JOIN in una tabella temporanea. Quindi, interroga facilmente la tabella temporanea.
Per rimuovere le tabelle temporanee senza rischiare di perdere le tabelle regolari, utilizza il TEMPORARY
opzione:
DROP TEMPORARY TABLE IF EXISTS table4;
Come eliminare le tabelle in base a stringhe di caratteri
MySQL non ha un comando integrato per eliminare le tabelle che corrispondono a una stringa di caratteri. Utilizzare invece uno script per aiutare a eseguire questa attività.
1. Definisci il database e la stringa di caratteri che desideri filtrare:
set @schema = 'tableselection';
set @string = 'table%';
Sostituisci tableselection
con il nome del tuo database. Sostituisci table%
con la stringa di caratteri che si desidera selezionare ed eliminare. Assicurati di lasciare il %
carattere jolly alla fine.
2. Crea un'istruzione MySQL che selezioni tutte le tabelle che corrispondono alla stringa di caratteri:
SELECT CONCAT ('DROP TABLE ',GROUP_CONCAT(CONCAT(@schema,'.',table_name)),';')
INTO @droptool
FROM information_schema.tables
WHERE @schema = database()
AND table_name LIKE @string;
Questo codice seleziona tutte le tabelle con table%
caratteri specificati da information_schema
tavolo. Quindi li concatena ed esegue un DROP
dichiarazione contro il gruppo.
3. Crea una selezione dai risultati di questo codice:
SELECT @droptool;
4. Visualizza il contenuto del comando:
PREPARE stmt FROM @droptool;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
Il codice nella sezione seguente è presentato nella sua interezza per facilità d'uso:
set @schema = 'tableselection';
set @string = 'table%';
SELECT CONCAT ('DROP TABLE ',GROUP_CONCAT(CONCAT(@schema,'.',table_name)),';')
INTO @droptool
FROM information_schema.tables
WHERE @schema = database()
AND table_name LIKE @string;
SELECT @droptool;
PREPARE stmt FROM @droptool;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;