Διαφορές μεταξύ Αριστεράς και Δεξιάς Συμμετοχή Διαφορά μεταξύ των

Anonim

Αριστερά εναντίον Δεξιάς Συμμετοχής

Όταν ασχολείστε με την SQL, τα joins είναι ένα κοινό όνομα που θα εμφανίζεται κάθε φορά. Η ρήτρα συμμετοχής βοηθά στον συνδυασμό εγγραφών από διαφορετικούς πίνακες σε ένα σύνολο δεδομένων. Η ένωση σε ισχύ δημιουργεί έναν πίνακα που μπορεί είτε να χρησιμοποιηθεί είτε να κυκλοφορήσει με άλλους. Είναι επομένως σκόπιμο να κατανοήσετε αυτές τις συνδέσεις και τις διαφορές μεταξύ τους, ώστε να γνωρίζετε τη συγκεκριμένη συμμετοχή και αν πρέπει να ληφθεί δεξιά ή αριστερά σε ειδικές περιπτώσεις.

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

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

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

Μια αριστερή ένωση αναφέρεται στην διατήρηση όλων των εγγραφών από τον πρώτο πίνακα ανεξάρτητα από το αποτέλεσμα και στην εισαγωγή τιμών NULL όταν οι τιμές του δεύτερου πίνακα δεν ταιριάζουν. Μια δεξιά ένωση, από την άλλη πλευρά, αναφέρεται στην τήρηση όλων των εγγραφών που προέρχονται από τον 2ο πίνακα ανεξάρτητα από το αποτέλεσμα και τη χρήση των τιμών NULL όταν τα αποτελέσματα δεν ταιριάζουν με αυτά του 1ου πίνακα.

Επομένως, μια αριστερή εξωτερική ένωση διατηρεί όλες τις σειρές που βρίσκονται στον αριστερό πίνακα ανεξάρτητα από το αν υπάρχει μια σειρά που ταιριάζει στο τραπέζι 'δεξιά'. Ο αριστερός πίνακας αναφέρεται επομένως στον πίνακα που έρχεται πρώτο στην κοινή δήλωση. Θα πρέπει να εμφανίζεται στα αριστερά της λέξης-κλειδί 'join' που εμφανίζεται στο τραπέζι. Όταν γίνει μια αριστερή εξωτερική ένωση, πρέπει να επιστραφούν όλες οι σειρές από τα αριστερά. Οι μη αντιστοιχίες στήλες στον πίνακα θα συμπληρωθούν με ένα NULL όποτε δεν υπάρχει αντιστοιχία.

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

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

Περίληψη

Οι συνδυασμοί έρχονται σε τρεις κύριες ομάδες - εσωτερική ένωση, εγκάρσια ένωση και εξωτερική ένωση

Μια αριστερή εξωτερική ένωση εμφανίζει όλες τις σειρές από το αριστερό του πίνακα

Μια δεξιά ένωση εμφανίζει όλες τις σειρές δεξιά του πίνακα

Η εναλλαγή της ακολουθίας SQL μπορεί να εξαλείψει τη χρήση των δεξιών και των αριστερών εξωτερικών συνδέσμων και να χρησιμοποιήσει μόνο ένα.