Διαφορά μεταξύ διαγραφής και περικοπή

Anonim

Delete vs. Truncate

Οι εντολές SQL (Structure Query Language), Delete και Truncate χρησιμοποιούνται για να απαλλαγούν από τα δεδομένα που αποθηκεύονται σε πίνακες σε μια βάση δεδομένων. Η Διαγραφή είναι μια δήλωση DML (Language Manipulation Language) και αφαιρεί μερικές ή όλες τις σειρές ενός πίνακα. Η ρήτρα «Όπου χρησιμοποιείται» για να καθορίσετε τις γραμμές που πρέπει να διαγραφούν και εάν η ρήτρα Όπου δεν χρησιμοποιείται με τη Διαγραφή εντολή, αφαιρεί όλα τα δεδομένα στον πίνακα. Το Truncate είναι μια εντολή DDL (Data Definition Language) και αφαιρεί ολόκληρα δεδομένα από τον πίνακα. Και οι δύο αυτές εντολές δεν καταστρέφουν τη δομή του πίνακα και τις αναφορές στον πίνακα και αφαιρούνται μόνο τα δεδομένα ανάλογα με τις ανάγκες.

Διαγραφή της δήλωσης

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

Η τυπική σύνταξη για την εντολή Delete διατυπώνεται παρακάτω.

DELETE FROM

ή

DELETE FROM WHERE

Η εντολή Truncate

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

Ακολουθεί η κοινή σύνταξη για τη δήλωση Truncate.

ΠΙΝΑΚΑΣ ΠΕΡΙΟΡΙΣΜΟΥ

Ποια είναι η διαφορά μεταξύ της διαγραφής και της περικοπής;

1. Οι εντολές Διαγραφή και Truncate καταργούν δεδομένα από υπάρχοντες πίνακες σε μια βάση δεδομένων χωρίς να βλάπτουν τη δομή του πίνακα ή άλλες αναφορές στον πίνακα.

2. Ωστόσο, η εντολή Διαγραφή μπορεί να χρησιμοποιηθεί για τη διαγραφή συγκεκριμένων γραμμών μόνο σε έναν πίνακα χρησιμοποιώντας μια σχετική συνθήκη ή για τη διαγραφή όλων των γραμμών χωρίς όρους, ενώ η εντολή Truncate μπορεί να χρησιμοποιηθεί μόνο για τη διαγραφή ολόκληρων δεδομένων στον πίνακα.

3. Η διαγραφή είναι μια εντολή DML και μπορεί να επαναφέρεται η λειτουργία αν είναι απαραίτητο, αλλά το Truncate είναι μια εντολή DDL, επομένως είναι μια δήλωση αυτόματης δέσμευσης και δεν μπορεί να ανατραπεί με κανέναν τρόπο. Επομένως, είναι σημαντικό να χρησιμοποιήσετε αυτή την εντολή προσεκτικά στη διαχείριση βάσεων δεδομένων.

4. Λειτουργία τερματισμού καταναλώνει λιγότερους πόρους συστήματος και πόρους καταγραφής συναλλαγών από τη λειτουργία Διαγραφή, επομένως το Truncate θεωρείται ταχύτερο από το Διαγραφή.

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

6. Ωστόσο, το Truncate δεν επιτρέπεται να χρησιμοποιείται όταν ο πίνακας αναφέρεται από έναν περιορισμό ξένου κλειδιού, και στην περίπτωση αυτή, η εντολή Delete μπορεί να χρησιμοποιηθεί αντί για το Truncate.

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