Drop vs Truncate

Drop e Truncate sono due istruzioni SQL (Structured Query Language) utilizzate nei sistemi di gestione dei database, in cui desideriamo rimuovere i record di dati da un database. Le istruzioni Drop e Truncate rimuovono tutti i dati in una tabella e la relativa istruzione SQL. L'operazione di eliminazione non è efficace in questo caso perché utilizza più spazi di archiviazione rispetto a Elimina e tronca.

Nel caso, se vogliamo scartare una tabella in un database con tutti i suoi dati, SQL ci consente di eseguire facilmente questa operazione usando 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, nonché la struttura della tabella dal database. Inoltre, potremmo voler sbarazzarci di tutti i dati in una tabella semplicemente, ma senza la tabella, e in questo scenario possiamo usare l'istruzione Truncate in SQL. Truncate è anche un comando DDL ed elimina tutte le righe in una tabella ma conserva la stessa definizione della tabella per un uso futuro.

Comando Drop

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, creati 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 GOCCIA

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 tabella specifica. Inoltre, l'istruzione Drop non può essere applicata sulle tabelle di sistema nel database.

Poiché il comando Drop è un'istruzione di commit automatico, l'operazione una volta eseguita non può essere ripristinata e nessun trigger verrà attivato. Quando una tabella viene eliminata, tutti i riferimenti alla tabella non saranno validi e quindi, se vogliamo riutilizzare la tabella, è necessario ricrearla con tutti i vincoli di integrità e i privilegi di accesso. Anche tutte le relazioni con le altre tabelle devono essere nuovamente localizzate.

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. Troncare elimina i dati da una tabella deallocando le pagine di dati utilizzate per archiviare i dati della tabella e solo queste deallocazioni di pagine vengono mantenute 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 altri. Di seguito è la sintassi tipica per il comando Truncate.

TRUNCATE TABLE

Dovremmo sostituire il nome della tabella, da cui vogliamo rimuovere tutti i dati, nella sintassi sopra.

Il troncamento non può essere utilizzato su una tabella a cui è stato fatto riferimento un vincolo di chiave esterna. Utilizza un commit automaticamente prima di agire e un altro commit in seguito, quindi il rollback della transazione è impossibile e non vengono attivati ​​trigger. Se vogliamo riutilizzare la tabella, dobbiamo solo accedere alla definizione di 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, pertanto le transazioni eseguite utilizzando questi comandi non possono essere ripristinate.

La differenza principale tra Drop e Truncate è che il comando Drop rimuove, non solo tutti i dati in una tabella, ma rimuove in modo permanente la struttura della tabella dal database con tutti i riferimenti, mentre il comando Truncate rimuove solo tutte le righe in una tabella e conserva la struttura della tabella e i 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. Pertanto, se è necessario riutilizzare la tabella, è necessario ricostruirla con le relazioni, i vincoli di integrità e anche i privilegi di accesso. Ma se una tabella viene troncata, la struttura della tabella e i suoi vincoli rimangono per un uso futuro, e quindi nessuna delle ricreazioni di cui sopra non è necessaria per il riutilizzo.

Quando vengono applicati questi comandi, dobbiamo essere cauti per usarli. Inoltre, dovremmo avere una migliore comprensione della natura di questi comandi, come funzionano e anche una pianificazione attenta prima di usarli per evitare di perdere elementi essenziali. Infine, entrambi questi comandi possono essere utilizzati per ripulire i database in modo rapido e semplice, consumando meno risorse.