SQLite
 sql >> Database >  >> RDS >> SQLite

SQLite:elimina una tabella

Per eliminare una tabella in SQLite, usa DROP TABLE dichiarazione.

L'esecuzione di questa istruzione rimuove la tabella dal database. Viene completamente rimosso dallo schema del database e dal file del disco. Pertanto la tabella non può essere recuperata. Vengono eliminati anche tutti gli indici e i trigger associati alla tabella.

Un DROP TABLE di base Dichiarazione

Per prima cosa, esaminiamo le tabelle nel nostro database:

sqlite> .tables
Albums   Albums1  Albums2  Artists

Abbiamo un paio di tavoli liberi dei nostri esercizi precedenti, quindi lasciamocene uno.

Il codice seguente elimina gli Albums1 tabella:

DROP TABLE Albums1;

Dopo aver eseguito quel codice, possiamo rivedere le nostre tabelle:

sqlite> .tables
Albums   Albums2  Artists

La tabella è stata rimossa.

Verifica se la tabella esiste

Puoi usare il IF EXISTS clausola per verificare se la tabella esiste prima che SQLite tenti di eliminarla.

In questo modo si evitano eventuali errori che verrebbero normalmente generati se la tabella non esiste.

Per prima cosa, proviamo a eliminare una tabella inesistente senza usando il IF EXISTS clausola. Proviamo a eliminare quello che abbiamo appena lasciato:

DROP TABLE Album1;

Ciò si traduce in quanto segue:

sqlite> DROP TABLE Album1;
Error: no such table: Album1

OK, quindi riproviamo, ma questa volta con IF EXISTS clausola:

DROP TABLE IF EXISTS Album1;

Risultato:

sqlite> DROP TABLE IF EXISTS Album1;
sqlite> 

Quindi non è successo niente. È importante sottolineare che non è stato generato alcun errore.

Rilascia una tabella con chiavi primarie

Quindi cosa succede se proviamo a eliminare una tabella che contiene chiavi primarie e ci sono chiavi esterne che fanno riferimento ad esse?

Proviamolo:

DROP TABLE Artists;

Risultato:

sqlite> DROP TABLE Artists;
Error: FOREIGN KEY constraint failed

Come previsto, ha fallito. Quindi, se devi eliminare una tabella, dovrai prima eliminare tutte le tabelle associate.

SQLite tenta effettivamente di eliminare i dati prima di eliminare una tabella. È questa azione di eliminazione che determina l'esecuzione di qualsiasi controllo dei vincoli di chiave esterna.

SQLite elimina anche tutti gli indici o i trigger associati alla tabella prima di eseguire l'operazione di eliminazione (e successiva eliminazione).