Πτώση εναντίον Truncate

Drop and Truncate είναι δύο δηλώσεις SQL (Structured Query Language) που χρησιμοποιούνται σε συστήματα διαχείρισης βάσεων δεδομένων, όπου επιθυμούμε να καταργήσουμε τις εγγραφές δεδομένων από μια βάση δεδομένων. Αμφότερες οι εντολές Drop και Truncate καταργούν το σύνολο των δεδομένων σε έναν πίνακα και τη σχετική εντολή SQL. Η λειτουργία διαγραφής δεν είναι αποτελεσματική σε αυτή την περίπτωση επειδή χρησιμοποιεί περισσότερους αποθηκευτικούς χώρους από το Drop and Truncate.

Σε περίπτωση που θέλουμε να απορρίψουμε έναν πίνακα σε μια βάση δεδομένων μαζί με όλα τα δεδομένα του, η SQL μας επιτρέπει να εκτελούμε εύκολα αυτό χρησιμοποιώντας τη δήλωση Drop. Η εντολή Drop είναι μια εντολή DDL (Data Definition Language) και μπορεί να χρησιμοποιηθεί για να καταστρέψει μια υπάρχουσα βάση δεδομένων, πίνακα, ευρετήριο ή προβολή. Διαγράφει ολόκληρη την πληροφορία σε έναν πίνακα, καθώς και τη δομή του πίνακα από τη βάση δεδομένων. Επίσης, ίσως να επιθυμούμε να απαλλαγούμε από όλα τα δεδομένα σε έναν πίνακα απλά, αλλά χωρίς τον πίνακα, και μπορούμε να χρησιμοποιήσουμε τη δήλωση Truncate σε SQL σε ένα τέτοιο σενάριο. Το Truncate είναι επίσης μια εντολή DDL και εξαλείφει όλες τις σειρές ενός πίνακα αλλά διατηρεί τον ίδιο ορισμό του πίνακα για μελλοντική χρήση.

Απόρριψη εντολής

Όπως αναφέρθηκε προηγουμένως, η εντολή Απόρριψη αφαιρεί τον ορισμό του πίνακα και όλα τα δεδομένα του, τους περιορισμούς ακεραιότητας, τα ευρετήρια, τις σκανδάλες και τα δικαιώματα πρόσβασης που δημιουργήθηκαν σε αυτόν τον συγκεκριμένο πίνακα. Επομένως, αφαιρεί το υπάρχον αντικείμενο από τη βάση δεδομένων εξ ολοκλήρου και οι σχέσεις σε άλλους πίνακες επίσης δεν θα ισχύουν πλέον μετά την εκτέλεση της εντολής. Επίσης, αφαιρεί όλες τις πληροφορίες σχετικά με τον πίνακα από το λεξικό δεδομένων. Ακολουθεί η τυπική σύνταξη για τη χρήση της εντολής Drop σε έναν πίνακα.

ΠΙΝΑΚΑΣ DROP

Πρέπει απλώς να αντικαταστήσουμε το όνομα του πίνακα που θέλουμε να καταργήσουμε από τη βάση δεδομένων στην παραπάνω παραδειγματική εντολή Drop.

Είναι σημαντικό να επισημάνουμε ότι η εντολή Drop δεν μπορεί να χρησιμοποιηθεί για τη διαγραφή ενός πίνακα, ο οποίος έχει ήδη αναφερθεί από έναν περιορισμό ξένου κλειδιού. Σε αυτή την περίπτωση, ο περιορισμός του ξένου κλειδιού αναφοράς ή αυτός ο συγκεκριμένος πίνακας θα πρέπει να αφαιρεθεί πρώτα. Επίσης, η εντολή Drop δεν μπορεί να εφαρμοστεί στους πίνακες συστήματος στη βάση δεδομένων.

Δεδομένου ότι η εντολή "Drop" είναι μια εντολή αυτόματης δέσμευσης, η λειτουργία που ενεργοποιείται μία φορά δεν μπορεί να επαναληφθεί και δεν ενεργοποιηθούν οι ενεργοποιητές. Όταν πέσει ένας πίνακας, όλες οι αναφορές στον πίνακα δεν θα είναι έγκυρες και έτσι, εάν θέλουμε να χρησιμοποιήσουμε ξανά τον πίνακα, πρέπει να ξαναδημιουργηθεί με όλους τους περιορισμούς ακεραιότητας και τα δικαιώματα πρόσβασης. Όλες οι σχέσεις με τα άλλα τραπέζια πρέπει επίσης να εντοπιστούν ξανά.

Διαταγή εντολής

Η εντολή Truncate είναι μια εντολή DDL και αφαιρεί όλες τις σειρές σε έναν πίνακα χωρίς οποιεσδήποτε συνθήκες που καθορίζονται από τον χρήστη και απελευθερώνει το χώρο που χρησιμοποιείται από τον πίνακα, αλλά η δομή του πίνακα με τις στήλες, τα ευρετήρια και τους περιορισμούς παραμένει ίδια. Το Truncate εξαλείφει τα δεδομένα από έναν πίνακα, ανακατανομώντας τις σελίδες δεδομένων που χρησιμοποιούνται για την αποθήκευση των δεδομένων πίνακα και μόνο αυτές οι αποεγκαταστάσεις σελίδων διατηρούνται στο αρχείο καταγραφής συναλλαγών. Έτσι, χρησιμοποιεί λιγότερους πόρους καταγραφής συναλλαγών και πόρους συστήματος σε σύγκριση με άλλες σχετικές εντολές SQL όπως Delete. Έτσι Truncate είναι λίγο πιο γρήγορα δήλωση από άλλες. Ακολουθεί η τυπική σύνταξη για την εντολή Truncate.

ΠΙΝΑΚΑΣ ΑΚΡΙΒΕΙΑΣ

Πρέπει να αντικαταστήσουμε το όνομα του πίνακα, από το οποίο θέλουμε να αφαιρέσουμε το σύνολο των δεδομένων, στην παραπάνω σύνταξη.

Το Truncate δεν μπορεί να χρησιμοποιηθεί σε έναν πίνακα που έχει αναφερθεί από έναν περιορισμό ξένου κλειδιού. Χρησιμοποιεί αυτόματα μια δέσμευση πριν ενεργήσει και μια άλλη διαπραγμάτευση αργότερα έτσι ώστε η επαναφορά της συναλλαγής να είναι αδύνατη και δεν ενεργοποιούνται εκκινήσεις. Εάν θέλουμε να επαναχρησιμοποιήσουμε τον πίνακα, χρειάζεται μόνο να έχουμε πρόσβαση στον υπάρχοντα ορισμό πίνακα στη βάση δεδομένων.

Ποια είναι η διαφορά ανάμεσα στο Drop and Truncate;

Και οι δύο εντολές Drop και Truncate είναι εντολές DDL και επίσης δηλώσεις αυτόματης δέσμευσης έτσι ώστε οι συναλλαγές που πραγματοποιούνται χρησιμοποιώντας αυτές τις εντολές να μην μπορούν να επαναληφθούν.

Η κύρια διαφορά μεταξύ του Drop και του Truncate είναι ότι η εντολή Drop αφαιρεί όχι μόνο όλα τα δεδομένα ενός πίνακα αλλά επίσης αφαιρεί μόνιμα τη δομή του πίνακα από τη βάση δεδομένων με όλες τις αναφορές ενώ η εντολή Truncate καταργεί όλες τις σειρές σε έναν πίνακα , και διατηρεί τη δομή του πίνακα και τις αναφορές του.

Εάν πέσει ένας πίνακας, οι σχέσεις με άλλους πίνακες δεν θα είναι πλέον έγκυρες και οι περιορισμοί ακεραιότητας και τα δικαιώματα πρόσβασης θα καταργηθούν επίσης. Αν λοιπόν ο πίνακας απαιτείται να επαναχρησιμοποιηθεί, πρέπει να ανακατασκευαστεί με τις σχέσεις, τους περιορισμούς ακεραιότητας και τα προνόμια πρόσβασης. Αλλά εάν ένας πίνακας είναι περικομμένος, η δομή του πίνακα και οι περιορισμοί του παραμένουν για μελλοντική χρήση και έτσι, οι παραπάνω αναψυχές δεν απαιτούνται για επαναχρησιμοποίηση.

Όταν εφαρμόζονται αυτές οι εντολές, πρέπει να είμαστε προσεκτικοί για να τις χρησιμοποιήσουμε. Επίσης, θα πρέπει να έχουμε καλύτερη κατανόηση σχετικά με τη φύση αυτών των εντολών, τον τρόπο λειτουργίας τους, καθώς και με έναν προσεκτικό σχεδιασμό πριν από τη χρήση τους, προκειμένου να αποφευχθεί η έλλειψη βασικών στοιχείων. Τέλος, και οι δύο αυτές εντολές μπορούν να χρησιμοποιηθούν για τον καθαρισμό των βάσεων δεδομένων γρήγορα και εύκολα, καταναλώνοντας λιγότερους πόρους.