Drop vs Truncate
Elimina e troncamento sono due istruzioni SQL (Structured Query Language) utilizzate nei sistemi di gestione dei database, in cui si desidera rimuovere i record di dati da un database. Sia le istruzioni Drop che Truncate rimuovono l'intero dato in una tabella e la relativa istruzione SQL. L'operazione di eliminazione non è efficace in questo caso perché utilizza più spazi di archiviazione di Drop e Truncate.
Nel caso in cui, se vogliamo eliminare una tabella in un database del tutto con tutti i suoi dati, SQL ci permette di eseguire facilmente questo 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 esistenti. Elimina l'intera informazione in una tabella, così come la struttura della tabella dal database. Inoltre, potremmo desiderare di eliminare tutti i dati in una tabella semplicemente, ma senza la tabella, e possiamo usare l'istruzione Truncate in SQL in uno scenario simile. Truncate è anche un comando DDL e elimina tutte le righe in una tabella, ma mantiene la definizione della tabella stessa per l'uso futuro.
Comando di rilascio
Come accennato in precedenza, il comando Drop rimuove la definizione della tabella e tutti i suoi dati, i vincoli di integrità, gli indici, i trigger e i 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 tipica sintassi per l'utilizzo dell'istruzione Drop su una tabella.
DROP TABLE
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, il vincolo di chiave esterna di riferimento o quella tabella particolare devono essere prima eliminati. Inoltre, l'istruzione Drop non può essere applicata alle tabelle di sistema nel database.
Poiché il comando Drop è un'istruzione di commit automatico, non è possibile eseguire il rollback dell'operazione una volta attivata e non verranno attivati trigger. Quando una tabella viene eliminata, tutti i riferimenti alla tabella non saranno validi e, pertanto, se si desidera utilizzare nuovamente la tabella, è necessario ricreare con tutti i vincoli di integrità e i privilegi di accesso. Anche tutte le relazioni con le altre tabelle devono essere nuovamente localizzate.
Comando Truncate
Il comando Truncate è un comando DDL e rimuove tutte le righe in una tabella senza condizioni specificate dall'utente e rilascia lo spazio utilizzato dalla tabella, ma la struttura della tabella con le sue colonne, gli indici e i vincoli rimangono uguali. Tronca elimina i dati da una tabella deallocando le pagine di dati utilizzate per memorizzare i dati della tabella e solo queste deallocazioni di pagina vengono mantenute nel registro delle transazioni. Quindi utilizza meno risorse del registro transazioni e risorse di sistema rispetto ad altri comandi SQL correlati come Elimina. Quindi Truncate è un po 'più veloce di altri. Di seguito è riportata la tipica sintassi per il comando Truncate.
TABELLA DEI TRONCATI
Dovremmo sostituire il nome della tabella, da cui vogliamo rimuovere l'intero dato, nella sintassi precedente.
Tronca non può essere utilizzato su una tabella a cui è stato fatto riferimento da un vincolo di chiave esterna. Utilizza un commit automaticamente prima che agisca 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 della tabella esistente nel database.
Qual è la differenza tra Drop e Truncate?
I comandi Drop e Truncate sono comandi DDL e anche istruzioni di commit automatico, quindi non è possibile eseguire il rollback delle transazioni eseguite utilizzando questi comandi.
La differenza principale tra Drop e Truncate è che il comando Drop rimuove, non solo tutti i dati in una tabella, ma rimuove 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 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. Quindi, 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 uso futuro, e quindi, nessuna delle suddette ricreazioni non è richiesta per il riutilizzo.
Quando vengono applicati questi comandi, dobbiamo essere cauti nell'usarli. Inoltre, dovremmo avere una migliore comprensione della natura di questi comandi, di come funzionano e anche di un'attenta pianificazione prima di utilizzarli al fine di evitare la mancanza di elementi essenziali. Infine, entrambi questi comandi possono essere utilizzati per ripulire i database in modo rapido e semplice, consumando meno risorse.