Drop vs Truncate
Το Drop και Truncate είναι δύο δηλώσεις SQL (Structured Query Language) που χρησιμοποιούνται στα συστήματα διαχείρισης βάσεων δεδομένων, όπου θέλουμε να αφαιρέσουμε εγγραφές δεδομένων από μια βάση δεδομένων. Και οι δύο προτάσεις Drop και Truncate αφαιρούν ολόκληρα τα δεδομένα σε έναν πίνακα και τη σχετική πρόταση SQL. Η λειτουργία διαγραφής δεν είναι αποτελεσματική σε αυτήν την περίπτωση, επειδή χρησιμοποιεί περισσότερους χώρους αποθήκευσης από το Drop και το Truncate.
Σε περίπτωση, εάν θέλουμε να απορρίψουμε έναν πίνακα σε μια βάση δεδομένων μαζί με όλα τα δεδομένα του, η SQL μας επιτρέπει να το εκτελέσουμε εύκολα χρησιμοποιώντας την εντολή Drop. Η εντολή Drop είναι μια εντολή DDL (Data Definition Language) και μπορεί να χρησιμοποιηθεί για την καταστροφή μιας υπάρχουσας βάσης δεδομένων, πίνακα, ευρετηρίου ή προβολής. Διαγράφει όλες τις πληροφορίες σε έναν πίνακα, καθώς και τη δομή του πίνακα από τη βάση δεδομένων. Επίσης, μπορεί να θέλουμε να απαλλαγούμε από όλα τα δεδομένα σε έναν πίνακα απλά, αλλά χωρίς τον πίνακα, και μπορούμε να χρησιμοποιήσουμε την εντολή Truncate στην SQL σε ένα τέτοιο σενάριο. Το Truncate είναι επίσης μια εντολή DDL και καταργεί όλες τις σειρές σε έναν πίνακα, αλλά διατηρεί τον ορισμό του πίνακα για μελλοντική χρήση.
Εντολή απόθεση
Όπως αναφέρθηκε προηγουμένως, η εντολή Drop καταργεί τον ορισμό του πίνακα και όλα τα δεδομένα, τους περιορισμούς ακεραιότητας, τα ευρετήρια, τους κανόνες ενεργοποίησης και τα δικαιώματα πρόσβασης, τα οποία δημιουργήθηκαν στον συγκεκριμένο πίνακα. Έτσι απορρίπτει εντελώς το υπάρχον αντικείμενο από τη βάση δεδομένων και οι σχέσεις με άλλους πίνακες επίσης δεν θα ισχύουν πλέον μετά την εκτέλεση της εντολής. Επίσης, αφαιρεί όλες τις πληροφορίες σχετικά με τον πίνακα από το λεξικό δεδομένων. Ακολουθεί η τυπική σύνταξη για τη χρήση της δήλωσης Drop σε έναν πίνακα.
ΤΡΑΠΕΖΑ ΠΡΟΣΤΑΣΗΣ
Πρέπει απλώς να αντικαταστήσουμε το όνομα του πίνακα που θέλουμε να αφαιρέσουμε από τη βάση δεδομένων στο παραπάνω παράδειγμα της εντολής Drop.
Είναι σημαντικό να επισημάνουμε ότι η δήλωση Drop δεν μπορεί να χρησιμοποιηθεί για τη διαγραφή ενός πίνακα, ο οποίος έχει ήδη αναφερθεί από έναν περιορισμό ξένου κλειδιού. Σε αυτήν την περίπτωση, ο περιορισμός του ξένου κλειδιού αναφοράς ή ο συγκεκριμένος πίνακας θα πρέπει να απορριφθεί πρώτα. Επίσης, η δήλωση Drop δεν μπορεί να εφαρμοστεί στους πίνακες συστήματος στη βάση δεδομένων.
Δεδομένου ότι η εντολή Drop είναι μια δήλωση αυτόματης δέσμευσης, η λειτουργία μόλις ενεργοποιηθεί δεν μπορεί να επαναφερθεί και δεν θα ενεργοποιηθούν κανενοί κανόνες. Όταν απορρίπτεται ένας πίνακας, όλες οι αναφορές στον πίνακα δεν θα είναι έγκυρες, και επομένως, εάν θέλουμε να χρησιμοποιήσουμε ξανά τον πίνακα, πρέπει να αναδημιουργηθεί με όλους τους περιορισμούς ακεραιότητας και τα δικαιώματα πρόσβασης. Όλες οι σχέσεις με τους άλλους πίνακες πρέπει επίσης να βρεθούν ξανά.
Εντολή περικοπής
Η εντολή Truncate είναι μια εντολή DDL και καταργεί όλες τις σειρές σε έναν πίνακα χωρίς συνθήκες καθορισμένες από το χρήστη και απελευθερώνει τον χώρο που χρησιμοποιείται από τον πίνακα, αλλά η δομή του πίνακα με τις στήλες, τα ευρετήρια και τους περιορισμούς παραμένει ίδια. Η περικοπή εξαλείφει τα δεδομένα από έναν πίνακα με τη διανομή των σελίδων δεδομένων που χρησιμοποιούνται για την αποθήκευση των δεδομένων του πίνακα και μόνο αυτές οι εκχωρήσεις σελίδων διατηρούνται στο αρχείο καταγραφής συναλλαγών. Έτσι, χρησιμοποιεί λιγότερους πόρους καταγραφής συναλλαγών και πόρους συστήματος σε σύγκριση με άλλες σχετικές εντολές SQL όπως το Delete. Οπότε το Truncate είναι λίγο πιο γρήγορο από άλλα. Ακολουθεί η τυπική σύνταξη για την εντολή Truncate.
TRUNCATE TABLE
Θα πρέπει να αντικαταστήσουμε το όνομα του πίνακα, από το οποίο θέλουμε να αφαιρέσουμε όλα τα δεδομένα, στην παραπάνω σύνταξη.
Το Truncate δεν μπορεί να χρησιμοποιηθεί σε πίνακα που έχει αναφερθεί από περιορισμό ξένου κλειδιού. Χρησιμοποιεί μια δέσμευση αυτόματα προτού ενεργήσει και μια άλλη δέσμευση μετά, επομένως η επαναφορά της συναλλαγής είναι αδύνατη και δεν ενεργοποιούνται κανενοί κανόνες. Αν θέλουμε να επαναχρησιμοποιήσουμε τον πίνακα, χρειάζεται μόνο πρόσβαση στον υπάρχοντα ορισμό του πίνακα στη βάση δεδομένων.
Ποια είναι η διαφορά μεταξύ Drop και Truncate;
Και οι εντολές Drop και Truncate είναι εντολές DDL και επίσης δηλώσεις αυτόματης δέσμευσης, έτσι ώστε οι συναλλαγές που εκτελούνται χρησιμοποιώντας αυτές τις εντολές να μην μπορούν να επαναφερθούν.
Η κύρια διαφορά μεταξύ Drop και Truncate είναι ότι η εντολή Drop αφαιρεί, όχι μόνο όλα τα δεδομένα ενός πίνακα, αλλά επίσης αφαιρεί μόνιμα τη δομή του πίνακα από τη βάση δεδομένων με όλες τις αναφορές, ενώ η εντολή "Truncate" αφαιρεί μόνο όλα τις σειρές σε έναν πίνακα και διατηρεί τη δομή του πίνακα και τις αναφορές του.
Εάν ένας πίνακας απορριφθεί, οι σχέσεις με άλλους πίνακες δεν θα είναι πλέον έγκυρες και οι περιορισμοί ακεραιότητας και τα δικαιώματα πρόσβασης θα καταργηθούν επίσης. Έτσι, εάν ο πίνακας απαιτείται για επαναχρησιμοποίηση, πρέπει να ανακατασκευαστεί με τις σχέσεις, τους περιορισμούς ακεραιότητας και επίσης τα δικαιώματα πρόσβασης. Ωστόσο, εάν ένας πίνακας είναι περικομμένος, η δομή του πίνακα και οι περιορισμοί του παραμένουν για μελλοντική χρήση, και επομένως, καμία από τις παραπάνω αναδημιουργίες δεν απαιτείται για επαναχρησιμοποίηση.
Όταν εφαρμόζονται αυτές οι εντολές, πρέπει να είμαστε προσεκτικοί στη χρήση τους. Επίσης, θα πρέπει να κατανοήσουμε καλύτερα τη φύση αυτών των εντολών, τον τρόπο λειτουργίας τους, καθώς και κάποιο προσεκτικό σχεδιασμό πριν από τη χρήση τους, προκειμένου να αποφευχθεί η απώλεια βασικών στοιχείων. Τέλος, και οι δύο αυτές εντολές μπορούν να χρησιμοποιηθούν για τον καθαρισμό των βάσεων δεδομένων γρήγορα και εύκολα, καταναλώνοντας λιγότερους πόρους.