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