Διαγραφή εναντίον Περικοπή
Και οι δύο εντολές SQL (Structure Query Language), το Delete και το Truncate χρησιμοποιούνται για να απαλλαγούμε από δεδομένα που είναι αποθηκευμένα σε πίνακες σε μια βάση δεδομένων. Το Delete είναι μια δήλωση DML (Data Manipulation Language) και καταργεί ορισμένες ή όλες τις σειρές ενός πίνακα. Ο όρος "Where" χρησιμοποιείται για τον καθορισμό των σειρών που απαιτείται να διαγραφούν και εάν ο όρος Where δεν χρησιμοποιείται με την πρόταση Delete, αφαιρεί όλα τα δεδομένα στον πίνακα. Το Truncate είναι μια δήλωση DDL (Data Definition Language) και αφαιρεί ολόκληρα δεδομένα από τον πίνακα. Και οι δύο αυτές εντολές δεν καταστρέφουν τη δομή του πίνακα και τις αναφορές στον πίνακα και μόνο τα δεδομένα αφαιρούνται όπως απαιτείται.
Διαγραφή δήλωσης
Η δήλωση Διαγραφή επιτρέπει στο χρήστη να αφαιρέσει δεδομένα από έναν υπάρχοντα πίνακα σε μια βάση δεδομένων βάσει μιας καθορισμένης συνθήκης και η ρήτρα "Where" χρησιμοποιείται για τον προσδιορισμό αυτής της συνθήκης. Η εντολή Delete αναφέρεται ως καταγεγραμμένη εκτέλεση, επειδή διαγράφει μόνο μία σειρά κάθε φορά και διατηρεί μια καταχώρηση για κάθε διαγραφή σειράς στο αρχείο καταγραφής συναλλαγών. Έτσι, αυτό κάνει τη λειτουργία πιο αργή. Το Delete είναι μια δήλωση DML και επομένως δεν δεσμεύεται αυτόματα κατά την εκτέλεση της εντολής. Επομένως, η λειτουργία Διαγραφής μπορεί να επαναφερθεί για να αποκτήσετε ξανά πρόσβαση στα δεδομένα, εάν απαιτείται. Μετά την εκτέλεση της εντολής Διαγραφή, θα πρέπει να δεσμευτεί ή να επαναφερθεί για να αποθηκευτούν μόνιμα οι αλλαγές. Η δήλωση διαγραφής δεν αφαιρεί τη δομή του πίνακα του πίνακα από τη βάση δεδομένων. Επίσης, δεν εκχωρεί το χώρο μνήμης που χρησιμοποιείται από τον πίνακα.
Η τυπική σύνταξη για την εντολή Διαγραφή αναφέρεται παρακάτω.
ΔΙΑΓΡΑΦΗ ΑΠΟ
ή
ΔΙΑΓΡΑΦΗ ΑΠΟ ΠΟΥ
Περικοπή Δήλωση
Η δήλωση Truncate αφαιρεί όλα τα δεδομένα από έναν υπάρχοντα πίνακα σε μια βάση δεδομένων, αλλά διατηρεί την ίδια δομή πίνακα, επίσης τους περιορισμούς ακεραιότητας, τα δικαιώματα πρόσβασης και τις σχέσεις με άλλους πίνακες. Επομένως, δεν απαιτείται να ορίσετε ξανά τον πίνακα και η παλιά δομή του πίνακα μπορεί να χρησιμοποιηθεί, εάν ο χρήστης θέλει να επαναχρησιμοποιήσει τον πίνακα. Το Truncate καταργεί ολόκληρα τα δεδομένα κατανέμοντας τις σελίδες δεδομένων που χρησιμοποιούνται για τη διατήρηση δεδομένων και μόνο αυτές οι διανομές σελίδων διατηρούνται στο αρχείο καταγραφής συναλλαγών. Επομένως, η εντολή περικοπής χρησιμοποιεί μόνο λιγότερους πόρους συστήματος και αρχείου καταγραφής συναλλαγών για λειτουργία, επομένως είναι ταχύτερη από άλλες σχετικές εντολές. Το Truncate είναι μια εντολή DDL, επομένως χρησιμοποιεί αυτόματες δεσμεύσεις πριν και μετά την εκτέλεση της δήλωσης. Ως εκ τούτου, η περικοπή δεν μπορεί να επαναφέρει τα δεδομένα με κανέναν τρόπο. Απελευθερώνει χώρο μνήμης που χρησιμοποιείται από τον πίνακα μετά την εκτέλεση. Αλλά η δήλωση περικοπής δεν μπορεί να εφαρμοστεί στους πίνακες που αναφέρονται από περιορισμούς ξένων κλειδιών.
Ακολουθεί η κοινή σύνταξη για την πρόταση Περικοπής.
TRUNCATE TABLE
Ποια είναι η διαφορά μεταξύ Διαγραφής και Περικοπής;
1. Οι εντολές διαγραφής και περικοπής αφαιρούν δεδομένα από υπάρχοντες πίνακες σε μια βάση δεδομένων χωρίς να βλάπτουν τη δομή του πίνακα ή άλλες αναφορές στον πίνακα.
2. Ωστόσο, η εντολή Διαγραφή μπορεί να χρησιμοποιηθεί για τη διαγραφή συγκεκριμένων σειρών μόνο σε έναν πίνακα χρησιμοποιώντας μια σχετική συνθήκη ή για τη διαγραφή όλων των σειρών χωρίς καμία προϋπόθεση, ενώ η εντολή Περικοπή μπορεί να χρησιμοποιηθεί μόνο για τη διαγραφή ολόκληρων δεδομένων στον πίνακα.
3. Το Delete είναι μια εντολή DML και μπορεί να επαναφέρει τη λειτουργία εάν είναι απαραίτητο, αλλά το Truncate είναι μια εντολή DDL, επομένως είναι μια δήλωση αυτόματης δέσμευσης και δεν μπορεί να επαναφερθεί με κανέναν τρόπο. Επομένως, είναι σημαντικό να χρησιμοποιείτε αυτή την εντολή προσεκτικά στη διαχείριση της βάσης δεδομένων.
4. Η λειτουργία περικοπής καταναλώνει λιγότερους πόρους συστήματος και πόρους καταγραφής συναλλαγών από τη λειτουργία Διαγραφή, επομένως, η λειτουργία περικοπής θεωρείται ταχύτερη από τη Διαγραφή.
5. Επίσης, το Delete δεν εκχωρεί χώρο που χρησιμοποιείται από τον πίνακα, ενώ το Truncate ελευθερώνει τον χώρο που χρησιμοποιείται μετά την εκτέλεση, επομένως το Delete δεν είναι αποτελεσματικό σε περίπτωση διαγραφής ολόκληρων δεδομένων από έναν πίνακα βάσης δεδομένων.
6. Ωστόσο, το Truncate δεν επιτρέπεται να χρησιμοποιείται όταν ο πίνακας αναφέρεται από έναν περιορισμό ξένου κλειδιού και σε αυτήν την περίπτωση, η εντολή Delete μπορεί να χρησιμοποιηθεί αντί για το Truncate.
7. Τέλος, και οι δύο αυτές εντολές έχουν πλεονεκτήματα αλλά και μειονεκτήματα κατά την εφαρμογή τους στα συστήματα διαχείρισης βάσεων δεδομένων και ο χρήστης θα πρέπει να γνωρίζει ότι χρησιμοποιεί αυτές τις εντολές κατάλληλα για να επιτύχει καλά αποτελέσματα.