Drop vs Troncate
Drop e Truncate sono due istruzioni SQL (Structured Query Language) utilizzate nei sistemi di gestione di database, in cui desideriamo rimuovere i record di dati da un database. Entrambe le istruzioni Drop e Troncate 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 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 voler eliminare tutti i dati in una tabella semplicemente, ma senza la tabella, e possiamo usare l'istruzione Troncate in SQL in uno scenario del genere. Tronca è anche un comando DDL ed elimina tutte le righe in una tabella ma conserva la stessa definizione della tabella per un uso futuro.
Rilascia 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 sono stati 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.
TAVOLA A 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 della 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 ripristinata e non verrà attivato alcun trigger. Quando una tabella viene eliminata, tutti i riferimenti alla tabella non saranno validi, quindi, se vogliamo riutilizzare la tabella, deve essere ricreata con tutti i vincoli di integrità e privilegi di accesso. Anche tutte le relazioni con le altre tabelle devono essere ritrovate.
Comando tronca
Il comando Truncate è un comando DDL e rimuove tutte le righe in una tabella senza alcuna condizione specificata dall'utente e libera lo spazio utilizzato dalla tabella, ma la struttura della tabella con le sue colonne, indici e vincoli rimane la stessa. Tronca 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 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 Troncate è un'affermazione un po' più veloce di altre. Di seguito è riportata la sintassi tipica per il comando Tronca.
TRONCO TAVOLA
Dovremmo sostituire il nome della tabella, da cui vogliamo rimuovere tutti i dati, nella sintassi sopra.
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 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 Troncate?
Entrambi i comandi Drop e Troncate 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 Troncate è 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 Troncate rimuove solo tutti le righe in una tabella e conserva la struttura della tabella e i suoi riferimenti.
Se una tabella viene eliminata, le relazioni con le 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 e i suoi vincoli rimangono per un uso futuro, quindi nessuna delle ricreazioni di cui sopra 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, di come funzionano e anche un'attenta pianificazione prima di usarli per evitare di perdere gli elementi essenziali. Infine, entrambi questi comandi possono essere utilizzati per ripulire i database in modo rapido e semplice, consumando meno risorse.