Drop vs Truncate
Drop e Truncate sono due istruzioni SQL (Structured Query Language) che vengono utilizzate nei sistemi di gestione dei database, dove desideriamo rimuovere i record di dati da un database. Entrambe le istruzioni Drop e Truncate rimuovono tutti i dati in una tabella e l'istruzione SQL correlata. L'operazione di eliminazione non è efficace in questo caso perché utilizza più spazi di archiviazione rispetto a Elimina e Tronca.
Nel caso in cui, se vogliamo eliminare una tabella in un database insieme a tutti i suoi dati, SQL ci consente di eseguire facilmente ciò utilizzando l'istruzione Drop. Il comando Drop è un comando DDL (Data Definition Language) e può essere utilizzato per distruggere un database, una tabella, un indice o una vista esistente. Elimina tutte le informazioni in una tabella, così come la struttura della tabella dal database. Inoltre, potremmo voler eliminare tutti i dati in una tabella semplicemente, ma senza la tabella, e possiamo usare l'istruzione Truncate in SQL in tale scenario. Truncate è anche un comando DDL ed elimina tutte le righe in una tabella ma conserva la stessa definizione della tabella per un utilizzo futuro.
Elimina comando
Come accennato in precedenza, il comando Drop rimuove la definizione della tabella e tutti i suoi dati, vincoli di integrità, indici, trigger e privilegi di accesso, che è stato creato su quella particolare tabella. Quindi elimina completamente l'oggetto esistente dal database e anche le relazioni con altre tabelle non saranno più valide dopo l'esecuzione del comando. Inoltre rimuove tutte le informazioni sulla tabella dal dizionario dei dati. Di seguito è riportata la sintassi tipica per l'utilizzo dell'istruzione Drop su una tabella.
TABELLA DI CADUTA
Dobbiamo semplicemente sostituire il nome della tabella che vogliamo rimuovere dal database nell'esempio sopra del comando Drop.
È importante sottolineare che l'istruzione Drop non può essere utilizzata per eliminare una tabella a cui è già stato fatto riferimento da un vincolo di chiave esterna. In tal caso, è necessario eliminare prima il vincolo di chiave esterna di riferimento o quella particolare tabella. Inoltre, l'istruzione Drop non può essere applicata alle tabelle di sistema nel database.
Poiché il comando Drop è un'istruzione di commit automatico, l'operazione una volta avviata non può essere annullata e non verrà attivato alcun trigger. Quando una tabella viene rilasciata, tutti i riferimenti alla tabella non saranno validi e quindi, se vogliamo riutilizzare la tabella, dovrà essere ricreata con tutti i vincoli di integrità e privilegi di accesso. Anche tutte le relazioni con le altre tabelle devono essere individuate.
Tronca il comando
Il comando Truncate è un comando DDL e rimuove tutte le righe in una tabella senza alcuna condizione specificata dall'utente e rilascia lo spazio utilizzato dalla tabella, ma la struttura della tabella con le sue colonne, indici e vincoli rimane la stessa. Truncate elimina i dati da una tabella deallocando le pagine di dati utilizzate per archiviare i dati della tabella e solo queste deallocazioni di pagina vengono conservate nel registro delle transazioni. Quindi utilizza meno risorse del registro delle transazioni e risorse di sistema rispetto ad altri comandi SQL correlati come Elimina. Quindi Truncate è un'affermazione un po 'più veloce di altre. Di seguito è riportata la sintassi tipica per il comando Truncate.
TAVOLA TRONCA
Dovremmo sostituire il nome della tabella, da cui vogliamo rimuovere tutti i dati, nella sintassi precedente.
Truncate non può essere utilizzato su una tabella a cui è stato fatto riferimento da un vincolo di chiave esterna. Utilizza automaticamente un commit prima che agisca e un altro commit dopo, quindi il rollback della transazione è impossibile e non vengono attivati trigger. Se vogliamo riutilizzare la tabella, dobbiamo solo accedere alla definizione della tabella esistente nel database.
Qual è la differenza tra Drop e Truncate?
Entrambi i comandi Drop e Truncate sono comandi DDL e anche istruzioni di commit automatico, quindi le transazioni eseguite utilizzando questi comandi non possono essere annullate.
La differenza principale tra Drop e Truncate è che il comando Drop rimuove non solo tutti i dati in una tabella, ma rimuove anche la struttura della tabella in modo permanente dal database con tutti i riferimenti, mentre il comando Truncate rimuove solo tutte le righe in una tabella e preserva la struttura della tabella ei suoi riferimenti.
Se una tabella viene eliminata, le relazioni con altre tabelle non saranno più valide e verranno rimossi anche i vincoli di integrità e i privilegi di accesso. Quindi, se la tabella deve essere riutilizzata, deve essere ricostruita con le relazioni, i vincoli di integrità e anche i privilegi di accesso. Ma se una tabella viene troncata, la struttura della tabella ei suoi vincoli rimangono per un utilizzo futuro, quindi nessuna delle ricreazioni precedenti non è necessaria per il riutilizzo.
Quando questi comandi vengono applicati, dobbiamo essere cauti nell'usarli. Inoltre, dovremmo avere una migliore comprensione della natura di questi comandi, del loro funzionamento e anche di un'attenta pianificazione prima di utilizzarli per evitare di perdere elementi essenziali. Infine, entrambi questi comandi possono essere utilizzati per pulire i database in modo rapido e semplice, consumando meno risorse.