Συνιστάται, 2024

Επιλογή Συντάκτη

Διαφορά μεταξύ Αριστεράς, Δεξιάς και Πλήρους Εξωτερικής Συμμετοχής

Νωρίτερα συζητήσαμε τις διαφορές μεταξύ του Inner Join και του Outer Join, όπου έχουμε ανασκοπήσει τους τύπους του Outer Join. Outer Join είναι αυτός που διατηρεί τις πλειάδες στο αποτέλεσμα που θα χάνονταν κατά τη λειτουργία Join. Σε αυτό το άρθρο; πρόκειται να συζητήσουμε τις διαφορές μεταξύ των τύπων Εξωτερική Συμμετοχή. Υπάρχουν τρεις τύποι Εξωτερική Συμμετοχή. Αριστερή εξωτερική σύνδεση, δεξιά εξωτερική σύνδεση και πλήρης εξωτερική σύνδεση. Η Αριστερά, Δεξιά και Πλήρης Εξωτερική Συμμετοχή διαφέρει στο σχέδιο εκτέλεσης και τα αποτελέσματα. Μπορούμε να παραλείψουμε μια εξωτερική λέξη από Αριστερά, Δεξιά και Πλήρης Εξωτερική Συμμετοχή. Ας εξετάσουμε τις διαφορές μεταξύ Αριστεράς, Δεξιάς και Πλήρους εξωτερικής Συμμετοχής με τη βοήθεια του πίνακα σύγκρισης που φαίνεται παρακάτω.

Συγκριτικό διάγραμμα

Βάση σύγκρισηςΑριστερά Εξωτερική ΣυμμετοχήΔεξιά Εξωτερική ΣυμμετοχήΠλήρης εξωτερική σύνδεση
ΒασικόςΌλες οι πλειάδες του αριστερού πίνακα παραμένουν στο αποτέλεσμα.Όλες οι πλειάδες του δεξιού τραπεζιού παραμένουν στο αποτέλεσμα.Όλες οι πλειάδες από το αριστερό και το δεξί τραπέζι παραμένουν στο αποτέλεσμα.
Επέκταση NULLΟι πλειάδες του αριστερού πίνακα που δεν έχουν μια αντίστοιχη πλειάδα στον δεξιό πίνακα, επεκτείνονται με τιμή NULL για τις ιδιότητες του δεξιού πίνακα.Οι πλειάδες του δεξιού πίνακα που δεν έχουν μια αντίστοιχη πλειάδα στον αριστερό πίνακα, επεκτείνονται με τιμή NULL για τις ιδιότητες του αριστερού πίνακα.
Οι πλειάδες αριστερά καθώς και ο δεξιός πίνακας που δεν έχουν τις αντίστοιχες πλειάδες στον δεξιό και στον αριστερό πίνακα αντίστοιχα επεκτείνονται με τιμή NULL για τις ιδιότητες του δεξιού και αριστερού πινάκων.

Ορισμός της αριστεράς εξωτερικής σύνδεσης

Ας υποθέσουμε ότι έχουμε, " Table_A Left External Join Table_B ". Επομένως, ο Table_A είναι ο αριστερός μας πίνακας, όπως εμφανίζεται αριστερά της λειτουργίας Αριστεράς Εξωτερικής Συμμετοχής και ο Table_B είναι ο δεξιός μας πίνακας.

Αρχικά, η εσωτερική ένωση θα εφαρμοστεί στους Πίνακες_Α και Πίνακας_Β, οι οποίοι θα επιστρέψουν όλη την αντίστοιχη πλειάδα από τους πίνακες Α και Β.

Στη συνέχεια, θα επιστρέψει όλες τις πλειάδες από το Table_A που δεν έχουν μια αντίστοιχη πλειάδα στο Table_B. Έτσι, οι προκύπτουσες πλειάδες θα είναι γεμισμένες με τιμές NULL για τα χαρακτηριστικά του δεξιού πίνακα.

Ως εκ τούτου, το αποτέλεσμα που προκύπτει από την Αριστερά Εξωτερική Συμμετοχή διατηρεί όλες τις πλειάδες από το αριστερό τραπέζι και μόνο ταιριάζουν πλειάδες από το δεξί τραπέζι.

Ας συζητήσουμε την Αριστερά Εξωτερική Συμμετοχή με ένα παράδειγμα. έχουμε δύο πίνακες παρακάτω, πίνακας σπουδαστών και πίνακα διαμερίσματος .

Τώρα, θα εφαρμόσουμε την Αριστερά Εξωτερική Συμμετοχή, στον Πίνακα Φοιτητών και Τμήματος.

ΕΠΙΛΟΓΗ * από το τμήμα σπουδαστών LEFT OUTER JOIN
Στον φοιτητή. Student_ID = Τμήμα

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

Παρατηρήστε το αποτέλεσμα που προέκυψε από την αριστερή εξωτερική ένωση. έχει όλες τις πλειάδες από το τραπέζι των σπουδαστών μαζί με τις αντίστοιχες πλειάδες από το τραπέζι των σπουδαστών και του τμήματος. Το student_id του Jimmy, ο Joseph Harry του Student table δεν ήταν παρόν στο τραπέζι του Τμήματος. Ως εκ τούτου, οι τιμές χαρακτηριστικών του πίνακα Department για τον Jimmy, Joseph Harry επεκτείνονται σε NULL.

Ορισμός της δεξιάς εξωτερικής σύνδεσης

Ας υποθέσουμε ότι έχουμε, " Table_A Right Outer Join Table_B ". Επομένως, ο πίνακας_Α είναι ο αριστερός μας πίνακας, όπως φαίνεται στην αριστερή στήλη της δεξιάς εξωτερικής σύνδεσης και ο πίνακας_Β είναι ο σωστός μας πίνακας.

Όπως στην αριστερή εξωτερική ένωση, αρχικά, η εσωτερική ένωση θα εφαρμοστεί στους πίνακες_A και Table_B, οι οποίοι θα επιστρέψουν όλη την αντίστοιχη πλειάδα από τους πίνακες Α και Β.

Στη συνέχεια, θα επιστρέψει όλες τις πλειάδες από το Table_B που δεν έχουν αντίστοιχη πλειάδα στο Table_A. Έτσι, οι προκύπτουσες πλειάδες θα είναι γεμισμένες με τιμές NULL για τα χαρακτηριστικά του αριστερού πίνακα.

Επομένως, το αποτέλεσμα που προκύπτει από τη δεξιά εξωτερική ένωση διατηρεί όλες τις πλειάδες από το δεξί τραπέζι και μόνο ταιριάζουν πλειάδες από το αριστερό τραπέζι.

Ας συζητήσουμε για το Right Outer Join με ένα παράδειγμα. παραπάνω έχουμε δύο πίνακες, πίνακα σπουδαστών και πίνακα πίνακα.

Τώρα, θα εφαρμόσουμε την επιλογή Right Outer Join to Student table και table table.

SELECT * FROM Τμήμα ΔΕΥΤΕΡΟ ΕΞΩΤΕΡΙΚΟ JOIN
Στον φοιτητή. Student_ID = Τμήμα

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

Παρατηρήστε το αποτέλεσμα που προκύπτει από τη δεξιά εξωτερική ένωση. έχει όλες τις πλειάδες από το τραπέζι του Τμήματος μαζί με τις αντίστοιχες πλειάδες από το τραπέζι Φοιτητών και Τμήματος. Το Student_ID 10536 και 00954, του πίνακα του Τμήματος, δεν υπάρχουν στον πίνακα σπουδαστών. Επομένως, η τιμή χαρακτηριστικού του ονόματος για Student_ID 10536 και 00954 επεκτείνεται σε NULL.

Ορισμός πλήρους εξωτερικής σύνδεσης

Ας υποθέσουμε ότι έχουμε, " Table_A Full Outer Join Table_B ". Έτσι, ο Table_A είναι ο αριστερός μας πίνακας, όπως εμφανίζεται αριστερά της λειτουργίας Full Outer Join και ο Table_B είναι ο δεξιός μας πίνακας.

Η πλήρης εξωτερική σύνδεση είναι ο συνδυασμός και των δύο, της Αριστεράς Εξωτερικής Συμμετοχής και της Δεξιάς Εξωτερικής Συμμετοχής . Αρχικά, εφαρμόζει εσωτερική σύνδεση στο Table_A και Table_B για να ανακτήσει τις ταιριάζουσες πλειάδες από τους δύο πίνακες. Στη συνέχεια επεκτείνει αυτές τις πλειάδες του Table_A με NULL που δεν έχουν μια αντίστοιχη πλειάδα στο Table_B. Περαιτέρω, επεκτείνει αυτές τις πλειάδες από Table_B με NULL που δεν έχουν μια αντίστοιχη πλειάδα στο Table_A.

Ως εκ τούτου, το Full Outer Join διατηρεί όλες τις πλειάδες από τα αριστερά καθώς και το δεξί τραπέζι, μαζί με τις αντίστοιχες πλειάδες και των δύο πινάκων.

Ας συζητήσουμε το FULL Outer Join με ένα παράδειγμα. έχουμε δύο παραπάνω πίνακες, πίνακα σπουδαστών και πίνακα τμημάτων .

Τώρα, θα εφαρμόσουμε το Full Outer Join στα τραπέζια των μαθητών και το τμήμα των τμημάτων.

ΕΠΙΛΟΓΗ * ΑΠΟ το Τμήμα FULL OUTER JOIN του σπουδαστή
Στον φοιτητή. Student_ID = Τμήμα

Στο ερώτημα παραπάνω, το Student Table είναι το αριστερό μας τραπέζι και ο πίνακας του Τμήματος είναι το σωστό τραπέζι μας. Σύμφωνα με το Full Outer Join, το αποτέλεσμα πρέπει να περιλαμβάνει όλες τις πλειάδες και από τους δύο πίνακες.

Παρατηρήστε το αποτέλεσμα που προκύπτει από την πλήρη εξωτερική ένωση. έχει όλες τις πλειάδες από το τραπέζι των σπουδαστών και του τμήματος μαζί με τις αντίστοιχες πλειάδες από το τραπέζι των σπουδαστών και του τμήματος. Το student_id του Jimmy, Joseph Harry δηλαδή 10026, 02256, 56362 αντίστοιχα, του πίνακα σπουδαστών, δεν υπήρχε στον πίνακα του Τμήματος. Ως εκ τούτου, οι τιμές χαρακτηριστικών του πίνακα Department για τον Jimmy, Joseph Harry επεκτείνονται σε NULL . Το Student_ID 10536 και 00954 του πίνακα του Τμήματος δεν υπάρχουν στη στήλη Student_ID του πίνακα σπουδαστών. Επομένως, η τιμή χαρακτηριστικού του χαρακτηριστικού Όνομα για Student_ID 10536 και 00954 επεκτείνεται σε NULL .

Βασικές διαφορές μεταξύ Αριστεράς, Δεξιάς και Πλήρους Εξωτερικής Συμμετοχής

  1. Το αποτέλεσμα της Αριστεράς Εξωτερικής Συμμετοχής έχει όλες τις πλειάδες του αριστερού πίνακα. Παρομοίως, το αποτέλεσμα της δεξιάς εξωτερικής σύνδεσης έχει όλες τις πλειάδες του δεξιού τραπεζιού. Και το αποτέλεσμα του Full Outer Join έχει όλες τις πλειάδες από το αριστερό και το δεξί τραπέζι.
  2. Στην αριστερή εξωτερική ένωση, οι πλειάδες του αριστερού πίνακα που δεν έχουν μια αντίστοιχη πλειάδα στον δεξιό πίνακα, επεκτείνονται με τις τιμές Null για τα χαρακτηριστικά του δεξιού πίνακα. Απέναντι είναι η περίπτωση του Right Outer Join. Και στην πλήρη εξωτερική ένωση, οι πλειάδες από τα αριστερά και τα δεξιά τραπέζια που δεν έχουν αντίστοιχες πλειάδες στο δεξιό και αριστερό τραπέζι αντίστοιχα επεκτείνονται με NULL για τα χαρακτηριστικά του δεξιού και του αριστερού πίνακα αντίστοιχα.

Συμπέρασμα:

Φροντίστε τις θέσεις των ονομάτων των τραπεζιών σε ένα ερώτημα. Καθώς η θέση του ονόματος πίνακα στο ερώτημα αποφασίζει αν ο πίνακας θα θεωρηθεί ως αριστερός πίνακας ή δεξιός πίνακας.

Top