Διαφορά μεταξύ εσωτερικής σύνδεσης και εξωτερικής σύνδεσης

Anonim

Εσωτερική ένωση ενάντια στο εξωτερικό

Η εσωτερική σύνδεση και η εξωτερική ένωση είναι δύο από τις μεθόδους σύνδεσης SQL που χρησιμοποιούνται στην επεξεργασία ερωτημάτων για βάσεις δεδομένων. Ανήκουν στην οικογένεια των ρητρών ένταξης (άλλα δύο είναι Αριστερά και Δεξιά). Ωστόσο, υπάρχει ένα Self Join που μπορεί να χρησιμοποιηθεί για εξειδικευμένες καταστάσεις. Ο σκοπός του Join είναι να συνδυάσει πεδία χρησιμοποιώντας τις κοινές τιμές στους δύο πίνακες. Αυτές οι συνδέσεις συνδυάζουν αρχεία από πολλούς πίνακες σε μια βάση δεδομένων. Δημιουργεί σύνολα που προκύπτουν, τα οποία μπορούν να αποθηκευτούν ως άλλος πίνακας.

Τι είναι το Inner Join;

Η πιο συχνά χρησιμοποιούμενη λειτουργία SQL Join είναι η εσωτερική σύνδεση. Μπορεί να θεωρηθεί ως ο προεπιλεγμένος τύπος σύνδεσης που χρησιμοποιείται στις εφαρμογές. Εσωτερική ένωση χρησιμοποιήστε το join-predicate για να συνδυάσετε δύο πίνακες. Υποθέτοντας ότι οι δύο πίνακες είναι Α και Β, τότε το join-predicate θα συγκρίνει τις σειρές των Α και Β για να μάθουμε όλα τα ζεύγη που ικανοποιούν το πρόβατο. Οι τιμές στήλης όλων των ικανοποιημένων γραμμών των πινάκων Α και Β συνδυάζονται για να δημιουργηθεί το αποτέλεσμα. Μπορεί να θεωρηθεί ως το πρώτο που παίρνει το cross join (καρτεσιανό προϊόν) όλων των αρχείων και στη συνέχεια επιστρέφει μόνο τα αρχεία που ικανοποιούν το join-predicate. Ωστόσο, στην πραγματικότητα, το καρτεσιανό προϊόν δεν υπολογίζεται επειδή είναι πολύ ανεπαρκές. Χρησιμοποιείται αντίδραση συγχώνευσης Hash ή συγχώνευσης ταξινόμησης.

Τι είναι η εξωτερική σύνδεση ;

Σε αντίθεση με το Inner join, το εξωτερικό join κρατά όλα τα αρχεία ακόμα κι αν δεν μπορεί να βρει ένα αντίστοιχο αρχείο. Αυτό σημαίνει ότι η εξωτερική ένωση χρειάζεται μια εγγραφή για να βρει μια αντίστοιχη εγγραφή για να εμφανιστεί στο αποτέλεσμα. Αντ 'αυτού, θα επιστρέψει όλα τα αρχεία, αλλά οι αμέτρητες εγγραφές θα έχουν μηδενικές τιμές. Οι εξωτερικές συνδέσεις χωρίζονται σε τρεις υποκατηγορίες. Αυτά είναι η εξωτερική ένωση, η δεξιά εξωτερική ένωση και η πλήρης εξωτερική ένωση. Αυτή η διαφοροποίηση βασίζεται στον πίνακα τραπέζι (αριστερό τραπέζι, δεξιό πίνακα ή και οι δύο πίνακες) που διατηρούνται όταν εντοπιστούν αμέτρητες εγγραφές. Οι αριστερές εξωτερικές συνδέσεις (επίσης γνωστές ως απλά αριστερή ένωση) διατηρούν όλες τις εγγραφές του αριστερού πίνακα. Αυτό σημαίνει ότι ακόμα και αν οι εγγραφές αντιστοιχούν σε αριθμούς είναι μηδέν, τότε θα υπάρχουν εγγραφές στον πίνακα αποτελεσμάτων, αλλά θα έχουν μηδενικές τιμές για όλες τις στήλες του Β. Με άλλα λόγια, όλες οι τιμές από τον αριστερό πίνακα επιστρέφονται με αντιστοιχισμένες τιμές από δεξιά πίνακα (ή μηδενικές τιμές όταν δεν έχουν αντιστοιχιστεί). Εάν οι τιμές από πολλές σειρές από τον αριστερό πίνακα αντιστοιχίζονται με μία μόνο γραμμή από το δεξιό τραπέζι, η σειρά από το δεξιό πίνακα θα επαναληφθεί όπως απαιτείται. Η δεξιά εξωτερική ένωση είναι σχεδόν παρόμοια με την αριστερή εξωτερική ένωση, αλλά η θεραπεία των τραπεζιών είναι σεβαστή. Αυτό σημαίνει ότι το αποτέλεσμα θα έχει όλες τις σειρές του δεξιού πίνακα τουλάχιστον μία φορά με τις αντιστοιχισμένες αξίες αριστερού πίνακα (και τις τιμές null για τις αμέτρητες σωστές τιμές). Η πλήρης εξωτερική ένωση είναι πιο ολοκληρωμένη από την αριστερή και τη δεξιά εξωτερική ένωση. Αποτελεί συνδυασμός της επίδρασης της εφαρμογής του αριστερού και δεξιού εξωτερικού ενωμένου μεταξύ τους.

Ποια είναι η διαφορά μεταξύ εσωτερικού και εξωτερικού μέλους;

Το Inner Join δεν διατηρεί τις αμέτρητες σειρές στο αποτέλεσμα, αλλά η εξωτερική ένωση θα κρατήσει όλα τα αρχεία από τουλάχιστον έναν πίνακα (ανάλογα με το ποια εξωτερική ένωση έχει χρησιμοποιηθεί). Έτσι, η συμπεριφορά της μη ύπαρξης πληροφοριών που υπάρχουν σε αμέτρητες σειρές στον πίνακα αποτελεσμάτων είναι ανεπιθύμητη, πρέπει πάντα να χρησιμοποιήσετε μία από τις εξωτερικές συνδέσεις (στη θέση της εσωτερικής σύνδεσης). Η εσωτερική ένωση δεν μπορεί να παράγει αποτέλεσμα αν δεν βρεθούν καμιά αντιστοιχία. Αλλά η εξωτερική ένωση θα παράγει πάντα ένα προκύπτον τραπέζι, ακόμη και χωρίς τις αντίστοιχες σειρές. Η εσωτερική συμμετοχή θα επιστρέφει πάντοτε πίνακες με τιμές (αν επιστραφεί). Αλλά οι εξωτερικές συνδέσεις μπορεί να έχουν σαν αποτέλεσμα πίνακες με τιμές null.