4 τρόποι διαγραφής διπλών εγγραφών στο Oracle

Πίνακας περιεχομένων:

4 τρόποι διαγραφής διπλών εγγραφών στο Oracle
4 τρόποι διαγραφής διπλών εγγραφών στο Oracle

Βίντεο: 4 τρόποι διαγραφής διπλών εγγραφών στο Oracle

Βίντεο: 4 τρόποι διαγραφής διπλών εγγραφών στο Oracle
Βίντεο: 5 πολύ χρήσιμες εντολές (CMD) (1) 2024, Δεκέμβριος
Anonim

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

Βήμα

Μέθοδος 1 από 4: Προσδιορισμός διπλότυπων

Διαγραφή διπλών εγγραφών στο Oracle Βήμα 1
Διαγραφή διπλών εγγραφών στο Oracle Βήμα 1

Βήμα 1. Προσδιορίστε τα διπλότυπα

Σε αυτό το παράδειγμα, προσδιορίζουμε το διπλό "Alan". Βεβαιωθείτε ότι οι εγγραφές που πρόκειται να διαγραφούν είναι πράγματι διπλές, εισάγοντας το SQL παρακάτω.

Διαγραφή διπλών εγγραφών στο Oracle Βήμα 2
Διαγραφή διπλών εγγραφών στο Oracle Βήμα 2

Βήμα 2. Προσδιορίστε από τη στήλη με τίτλο "Όνομα"

Σε περίπτωση που η στήλη έχει τον τίτλο "Όνομα", πρέπει να αντικαταστήσετε το "όνομα_στύλου" με Όνομα.

Διαγραφή διπλών εγγραφών στο Oracle Βήμα 3
Διαγραφή διπλών εγγραφών στο Oracle Βήμα 3

Βήμα 3. Προσδιορίστε τις άλλες στήλες

Εάν προσπαθείτε να προσδιορίσετε διπλότυπα από διαφορετικές στήλες, για παράδειγμα την ηλικία του Alan αντί για το όνομά του, εισαγάγετε "Ηλικία" στη θέση του "name_name" και ούτω καθεξής.

επιλέξτε όνομα_στύλου, μέτρηση (όνομα_στύλου) από την ομάδα πίνακα κατά όνομα_στύλου με αριθμό (όνομα_στύλου)> 1 ·

Μέθοδος 2 από 4: Κατάργηση μεμονωμένων διπλότυπων

Διαγραφή διπλών εγγραφών στο Oracle Βήμα 4
Διαγραφή διπλών εγγραφών στο Oracle Βήμα 4

Βήμα 1. Επιλέξτε "όνομα από ονόματα"

Μετά το "SQL" (συντομογραφία για Standard Query Language), πληκτρολογήστε "select name from names".

Διαγραφή διπλών εγγραφών στο Oracle Βήμα 5
Διαγραφή διπλών εγγραφών στο Oracle Βήμα 5

Βήμα 2. Διαγράψτε όλες τις γραμμές με διπλά ονόματα

Μετά το "SQL", πληκτρολογήστε "delete from names where name = 'Alan';." Πρέπει να σημειωθεί ότι η κεφαλαιοποίηση είναι σημαντική εδώ, έτσι ώστε αυτό το βήμα να μπορεί να διαγράψει όλες τις γραμμές με το όνομα "Alan". Μετά το "SQL", πληκτρολογήστε "commit"

Διαγραφή διπλών εγγραφών στο Oracle Βήμα 6
Διαγραφή διπλών εγγραφών στο Oracle Βήμα 6

Βήμα 3. Εισαγάγετε ξανά σειρές χωρίς διπλότυπα

Τώρα που διαγράψατε όλες τις γραμμές και τις αντικαταστήσατε με "Alan", συμπληρώστε μία ξανά εισάγοντας "insert in name name ('Alan');." Μετά το "SQL", εισαγάγετε "δέσμευση" για να δημιουργήσετε μια νέα γραμμή.

Διαγραφή διπλών εγγραφών στο Oracle Βήμα 7
Διαγραφή διπλών εγγραφών στο Oracle Βήμα 7

Βήμα 4. Προβάλετε τη νέα λίστα

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

SQL> επιλέξτε όνομα από ονόματα. ΟΝΟΜΑ ------------------------------ Alan Citra Tomi Alan Baris επιλεγμένο. SQL> διαγραφή από ονόματα όπου όνομα = 'Alan'; Η γραμμή διαγράφεται. SQL> δεσμεύει / Η δέσμευση ολοκληρώθηκε. SQL> εισαγωγή τιμών σε ονόματα («Alan»). σειρά δημιουργήθηκε. SQL> δεσμεύει Η δέσμευση ολοκληρώθηκε. SQL> επιλέξτε * από ονόματα. ΟΝΟΜΑ ------------------------------ Επιλέχθηκαν οι σειρές Alan Citra Tomi.

Μέθοδος 3 από 4: Κατάργηση πολλαπλών διπλότυπων

Διαγραφή διπλών εγγραφών στο Oracle Βήμα 8
Διαγραφή διπλών εγγραφών στο Oracle Βήμα 8

Βήμα 1. Επιλέξτε το RowID που θέλετε να διαγράψετε

Μετά το "SQL", πληκτρολογήστε "select rowid, name from names;."

Διαγραφή διπλών εγγραφών στο Oracle Βήμα 9
Διαγραφή διπλών εγγραφών στο Oracle Βήμα 9

Βήμα 2. Αφαιρέστε τα διπλότυπα

Μετά το "SQL", πληκτρολογήστε "διαγραφή από τα ονόματα a where rowid> (επιλέξτε min (rowid) από τα ονόματα b όπου b.name = a.name);" για να αφαιρέσετε διπλότυπα.

Διαγραφή διπλών εγγραφών στο Oracle Βήμα 10
Διαγραφή διπλών εγγραφών στο Oracle Βήμα 10

Βήμα 3. Ελέγξτε για διπλότυπα

Αφού ολοκληρώσετε τα παραπάνω βήματα, ελέγξτε για διπλότυπα εισάγοντας "select rowid, name from names;" τότε "δεσμεύσου".

SQL> επιλέξτε rowid, όνομα από ονόματα. ROWID NAME ------------------ ---------------------------------- AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAB Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAdfOAAD Tom AABJnsAAGAAAdfOAAF Alan σειρές επιλεγμένες. SQL> διαγραφή από ονόματα a where rowid> (επιλέξτε min (rowid) από ονόματα b όπου b.name = a.name); οι σειρές διαγράφηκαν. SQL> επιλέξτε rowid, όνομα από ονόματα. ROWID NAME ------------------ ---------------------------------- AABJnsAAGAAAdfOAAA Alan AABJnsAAGAAAdfOAAC Carrie AABJnsAAGAAAdfOAAD Επιλεγμένες σειρές Tom. SQL> δεσμεύει Η δέσμευση ολοκληρώθηκε.

Μέθοδος 4 από 4: Διαγραφή γραμμών ανά στήλες

Διαγραφή διπλών εγγραφών στο Oracle Βήμα 11
Διαγραφή διπλών εγγραφών στο Oracle Βήμα 11

Βήμα 1. Επιλέξτε τη σειρά

Μετά το "SQL", πληκτρολογήστε "select * from names;" για να μπορέσω να δω τη γραμμή.

Διαγραφή διπλών εγγραφών στο Oracle Βήμα 12
Διαγραφή διπλών εγγραφών στο Oracle Βήμα 12

Βήμα 2. Καταργήστε τις διπλές σειρές προσδιορίζοντας τις στήλες τους

Μετά το "SQL" "εισάγετε" διαγράψτε από τα ονόματα a where rowid> (επιλέξτε min (rowid) από τα ονόματα b όπου b.name = a.name και b.age = a.age); " για να αφαιρέσετε διπλές εγγραφές.

Διαγραφή διπλών εγγραφών στο Oracle Βήμα 13
Διαγραφή διπλών εγγραφών στο Oracle Βήμα 13

Βήμα 3. Ελέγξτε για διπλότυπα

Αφού ολοκληρώσετε τα παραπάνω βήματα, πληκτρολογήστε "select * from names;" τότε "δεσμευτείτε" για να δείτε αν τα διπλότυπα έχουν πράγματι αφαιρεθεί.

SQL> επιλέξτε * από ονόματα. ΟΝΟΜΑ ΗΛΙΚΙΑ ---------------------------------------------- Alan 50 Citra 51 Tomi 52 Alan 50 επιλεγμένες σειρές. SQL> διαγραφή από ονόματα a where rowid> (επιλέξτε min (rowid) από ονόματα b όπου b.name = a.name και b.age = a.age); η σειρά διαγράφηκε. SQL> επιλέξτε * από ονόματα. NAME AGE ------------------------------ ---------- Alan 50 Citra 51 Tomi 52 σειρές επιλεγμένες Το SQL> δεσμεύει Η δέσμευση ολοκληρώθηκε.

Προειδοποίηση

  • Δημιουργήστε έναν διπλό πίνακα στη σύνδεσή σας, ώστε να μπορεί να χρησιμοποιηθεί ως αναφορά περιεχομένου όταν δεν έχουν διαγραφεί δεδομένα (σε περίπτωση που έχετε απορίες).

    SQL> δημιουργία πίνακα alan.names_backup ως select * από ονόματα. Δημιουργήθηκε πίνακας.

Συνιστάται: