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

Anonim

Η δημιουργία και η επεξεργασία δεδομένων αποτελούν τη βάση των βάσεων δεδομένων και την ονομάζουμε DDL και DML αντίστοιχα. Ένα DDL είναι μια συντομογραφία για τη γλώσσα ορισμού δεδομένων. Θα μπορούσε είτε να δημιουργήσει είτε να τροποποιήσει τις δομές δεδομένων στις βάσεις δεδομένων και δεν θα μπορούσε να χρησιμοποιηθεί για να αλλάξει τα δεδομένα που υπάρχουν στους πίνακες. Για παράδειγμα, έχουμε εντολές που δημιουργούν μόνο έναν πίνακα με τα καθορισμένα χαρακτηριστικά πίνακα, αλλά ποτέ δεν προσθέτει καμία σειρά στον πίνακα. Αλλά ένα DML, η γλώσσα χειρισμού δεδομένων, είναι ικανό να προσθέτει, να διαγράφει ή να τροποποιεί δεδομένα στους πίνακες. Κατά γενικό κανόνα, οι εντολές DDL ασχολούνται με τις δομές πινάκων, ενώ οι εντολές DML ασχολούνται με τα πραγματικά δεδομένα. Ας είναι, γιατί απλώς αποκλίνουμε από το θέμα "Η διαφορά ανάμεσα στο Truncate και το Delete"; Υπάρχουν λόγοι για τους οποίους μιλήσαμε για το DML και το DDL. Θα το καταλαβαίνετε στην προηγούμενη συζήτηση.

Τι είναι η εντολή Truncate;

Ο σκοπός μιας εντολής Truncate είναι να διαγράψετε ολόκληρο τον πίνακα. Έτσι, όταν χρησιμοποιείτε μια εντολή Truncate, θα χάσετε όλα τα δεδομένα στο τραπέζι και θα πρέπει να είστε προσεκτικοί κατά τη χρήση του. Ενημερώστε μας πώς να το χρησιμοποιήσετε.

Η σύνταξη του Truncate:

TRUNCATE TABLE table-name ;

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

Παρακάτω είναι ο πίνακας "υπαλλήλων" και απλά κοιτάξτε τις σειρές δεδομένων σε αυτό.

ονομασία emp-name 1011
Jack Υπάλληλος 1012
Rosy Admin 1014
Nancy > Οικονομικά
Τώρα, ας εκδώσουμε την παρακάτω εντολή στον πίνακα των εργαζομένων.
TRUNCATE TABLE

υπάλληλος.

Εδώ προκύπτει η παραπάνω σύνταξη και δεν υπάρχουν δεδομένα σε αυτήν. emp-id

ονομασία emp-name

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

ΔΙΑΓΡΑΦΗ ΑΠΟ

υπάλληλο.

Η παραπάνω σύνταξη διαγράφει όλες τις σειρές από τον πίνακα "εργαζόμενο". Ο πίνακας που προκύπτει δεν περιέχει δεδομένα. ΔΙΑΓΡΑΦΗ ΑΠΟ

υπάλληλος

WHERE emp-id = 1011; Αυτή η δήλωση απλά διαγράφει μια μόνο γραμμή της οποίας το emp-id είναι 1011. Έτσι ο πίνακας που προκύπτει θα είναι όπως παρακάτω. ονομασία emp-id

emp-name

1012 Rosy
Admin 1014 Nancy
Finance ένα DDL. Η διαγραφή είναι ένα DML: Έχουμε συζητήσει παραπάνω πώς δουλεύει το DDL και το DML στην παραπάνω συζήτησή μας.Η εντολή Truncate είναι ένα DDL και λειτουργεί σε επίπεδο δομής δεδομένων. Αλλά το Delete είναι μια εντολή DML και λειτουργεί στα δεδομένα πίνακα. Άλλα παραδείγματα για το DDL είναι CREATE και ALTER. Με παρόμοιο τρόπο, θα μπορούσαμε να πούμε ότι οι εντολές όπως SELECT, UPDATE και REPLACE είναι τέλεια παραδείγματα για μια DML.

Πώς λειτουργεί το Truncate and Delete:

  • Μόλις εκδώσουμε την εντολή Truncate, ψάχνει ακριβώς τον καθορισμένο πίνακα. Στη συνέχεια αφαιρεί εντελώς όλα τα δεδομένα από τη μνήμη. Αλλά η διαδικασία εργασίας είναι λίγο διαφορετική στην περίπτωση ενός Διαγραφή. Εδώ, τα πρωτότυπα δεδομένα πίνακα αντιγράφονται στο χώρο που ονομάζεται "Roll back" space πριν κάνετε την πραγματική χειραγώγηση των δεδομένων. Στη συνέχεια, οι αλλαγές γίνονται στον πραγματικό χώρο των δεδομένων πίνακα. Έτσι, και οι δύο διαφέρουν στον τρόπο με τον οποίο λειτουργούν. Truncate
  • -> αφαιρέστε ολόκληρα δεδομένα από τον πίνακα -> Ο χώρος στον πίνακα είναι ελευθερωμένος τώρα. Διαγραφή

-> Αντιγραφή των δεδομένων του αρχικού πίνακα στο Roll Back space -> διαγραφή των καθορισμένων δεδομένων / ολόκληρου του πίνακα -> Χώρος στον πίνακα απελευθερώνεται αλλά ο χώρος Roll Back συμπληρώνεται. Roll back:

Μια roll back είναι σαν μια εντολή Undo στα αξεσουάρ της Microsoft. Χρησιμοποιείται για την ακύρωση των αλλαγών που κάναμε πρόσφατα i. μι. από το τελευταίο αποθηκευμένο σημείο. Για να εκτελέσετε τη λειτουργία, τα δεδομένα πρέπει να αντιγραφούν στο χώρο Roll Back πριν από την επεξεργασία τους. Παρόλο που αυτές οι ράστρες Roll απαιτούν επιπλέον μνήμη, είναι εξαιρετικά χρήσιμο να επιστρέψουμε στο πρωτότυπο. Ειδικά όταν επεξεργάζεστε λάθος! Ας έρθουμε στο Truncate και Delete σε σχέση με το Roll back τώρα. Όπως συζητήσαμε παραπάνω, το Truncate δεν χρησιμοποιεί ποτέ χώρο ανατροπής και δεν μπορούσαμε να επιστρέψουμε στα αρχικά δεδομένα. Αλλά η εντολή "Διαγραφή" χρησιμοποιεί χώρο αναδίπλωσης και μπορούμε απλά να χρησιμοποιήσουμε το "Commit" ή το "RollBack" για να αποδεχτούμε ή να ακυρώσουμε τις αλλαγές αντίστοιχα. Ενεργοποιητές:

  • Για εκείνους που χρειάζονται μια εξήγηση σχετικά με τους παράγοντες ενεργοποίησης, εδώ είναι μια μικρή σημείωση. Οι ενεργοποιητές είναι ένα προκαθορισμένο σύνολο λειτουργιών / λειτουργιών που πρέπει να ενεργοποιούνται όταν ο πίνακας συναντά μια συγκεκριμένη κατάσταση. Για παράδειγμα, θα μπορούσαμε να ενεργοποιήσουμε την αλλαγή του μισθού, όταν η εμπειρία ενός υπαλλήλου στην εταιρεία είναι περισσότερο από ένα χρόνο. Αυτές οι ασκήσεις θα μπορούσαν να λειτουργήσουν και σε άλλα τραπέζια. Για παράδειγμα, θα μπορούσαμε να ενημερώσουμε τον πίνακα χρηματοδότησης αμέσως μετά την αύξηση του μισθού για έναν υπάλληλο. Το Truncate είναι μια εντολή DDL, η σκανδάλη δεν επιτρέπεται εδώ. Αλλά ένα Delete είναι μια εντολή DML, επιτρέπονται Triggers εδώ.
  • Ποια είναι ταχύτερη; Όπως υποθέσατε, η εντολή Truncate θα ήταν ταχύτερη από την εντολή Delete. Ο πρώτος μπορεί να αφαιρέσει όλα τα δεδομένα και δεν χρειάζεται να ελέγξει για τυχόν συνθήκες αντιστοίχισης. Επίσης, τα αρχικά δεδομένα δεν αντιγράφονται στο χώρο ανακύκλωσης και αυτό εξοικονομεί πολύ χρόνο. Αυτοί οι δύο παράγοντες καθιστούν τον τερματισμό της εργασίας πιο γρήγορα από τη διαγραφή.

Θα μπορούσαμε να χρησιμοποιήσουμε την ρήτρα WHERE;

  • Η ρήτρα 'Where' χρησιμοποιείται για να καθορίσει συγκεκριμένες συνθήκες αντιστοίχισης και δεν είναι τίποτα για το Truncate. Καθώς το Truncate δεν αναζητά ποτέ τις κατάλληλες συνθήκες και απλώς καταργεί όλες τις σειρές, δεν μπορούσαμε να χρησιμοποιήσουμε εδώ μια ρήτρα 'Where'.Αλλά μπορούμε πάντα να καθορίσουμε την κατάσταση με τη βοήθεια της ρήτρας 'where' στην εντολή Delete. Που καταλαμβάνει περισσότερο χώρο;
  • Η περικοπή δεν πρόκειται να χρησιμοποιήσει το χώρο επαναφοράς και εξοικονομεί αυτή τη μνήμη. Αλλά η διαγραφή χρειάζεται ένα αντίγραφο ασφαλείας με τη μορφή χώρου επαναφοράς και ως εκ τούτου απαιτεί περισσότερο χώρο μνήμης από το κομμένο. Αυτές είναι οι διαφορές και ας κοιτάξουμε σε μια πινακοειδή μορφή.
  • S. Όχι Διαφορές σε

Αποκοπή

Διαγραφή 1. DDL ή DML; Πρόκειται για ένα DDL και λειτουργεί σε επίπεδο δομής δεδομένων. Άλλα παραδείγματα για το DDL είναι CREATE και ALTER.
Είναι μια εντολή DML και λειτουργεί στα δεδομένα πίνακα. Το DML σημαίνει Γλώσσα χειρισμού δεδομένων. Οι εντολές όπως SELECT, UPDATE και REPLACE είναι τέλεια παραδείγματα για ένα DML. Το DML σημαίνει Γλώσσα χειρισμού δεδομένων. 2. Πώς λειτουργεί;

Μόλις εκδώσουμε την εντολή Truncate, αναζητά ακριβώς τον καθορισμένο πίνακα. Στη συνέχεια αφαιρεί εντελώς όλα τα δεδομένα από τη μνήμη.

Εδώ, τα πρωτότυπα δεδομένα πίνακα αντιγράφονται στο χώρο που ονομάζεται "Roll back" space πριν κάνετε την πραγματική χειραγώγηση των δεδομένων. Στη συνέχεια, οι αλλαγές γίνονται στον πραγματικό χώρο των δεδομένων πίνακα. 3. RollBack Η εντολή Truncate δεν χρησιμοποιεί ποτέ χώρο αναδίπλωσης και δεν μπορούσαμε να επιστρέψουμε στα αρχικά δεδομένα. Ένας χώρος επαναφοράς είναι αποκλειστικός και καταλαμβάνεται όταν εκδίδονται οι εντολές DML.
Η εντολή "Διαγραφή" χρησιμοποιεί χώρο αναδίπλωσης και μπορούμε να χρησιμοποιήσουμε είτε "Commit" είτε "RollBack" για να αποδεχτούμε ή να ακυρώσουμε τις αλλαγές αντίστοιχα. 4. Triggers Το Truncate είναι μια εντολή DDL, οι ενεργοποιήσεις δεν επιτρέπονται.

Η διαγραφή είναι μια εντολή DML, επιτρέπονται ενεργοποιήσεις εδώ. 5. Ποια είναι ταχύτερη; Μπορεί να αφαιρέσει όλα τα δεδομένα και δεν χρειάζεται να ελέγξει για τυχόν συνθήκες αντιστοίχισης. Επίσης, τα αρχικά δεδομένα δεν αντιγράφονται στο χώρο ανακύκλωσης και αυτό εξοικονομεί πολύ χρόνο. Αυτοί οι δύο παράγοντες καθιστούν τον τερματισμό της εργασίας πιο γρήγορα από τη διαγραφή.

Χρησιμοποιεί το χώρο επαναφοράς και πάντα τα αρχικά δεδομένα πρέπει να διατηρηθούν σε αυτό. Αυτό είναι ένα επιπλέον βάρος και, με τη σειρά του, διαρκεί πολύς χρόνος από το Truncate. 6. Θα μπορούσαμε να χρησιμοποιήσουμε την ρήτρα WHERE;

Καθώς το Truncate δεν ψάχνει για οποιεσδήποτε συνθήκες που ταιριάζουν και απλά αφαιρεί όλες τις σειρές, δεν θα μπορούσαμε να χρησιμοποιήσουμε εδώ μια ρήτρα 'Where'.
Αλλά μπορούμε πάντα να καθορίσουμε την κατάσταση με τη βοήθεια της ρήτρας 'where' στην εντολή Delete. 7. Που καταλαμβάνει περισσότερο χώρο; Η περικοπή δεν πρόκειται να χρησιμοποιήσει το χώρο επαναφοράς και εξοικονομεί αυτή τη μνήμη.
Χρειάζεται ένα αντίγραφο ασφαλείας με τη μορφή χώρου επαναφοράς και ως εκ τούτου απαιτεί περισσότερο χώρο μνήμης από το κομμένο. Η γνώση των διαφορών μεταξύ οποιωνδήποτε δύο οντοτήτων διευρύνει τις γνώσεις και από τις δύο! Έχετε προσγειωθεί σε ένα σωστό μονοπάτι i. μι. την ιστοσελίδα για να κατανοήσουμε τις διαφορές, ιδίως μεταξύ των εντολών περικοπής και διαγραφής. Ελπίζω να είστε πλέον σαφής με τις διαφορές της και να μας ενημερώσετε αν σας είχαμε βοηθήσει να την καταλάβετε. Θα μπορούσατε επίσης να μας βοηθήσετε να επισημάνουμε ποιες έχουν απομείνει!