ΣΥΝΔΕΣΕΙΣ στον SQL Server: Τύποι με παραδείγματα

⚡ Έξυπνη Σύνοψη

Οι σύνδεσμοι JOIN στον SQL Server συνδυάζουν γραμμές από δύο ή περισσότερους πίνακες με βάση μια σχετική στήλη, χρησιμοποιώντας συνδέσμους INNER, LEFT OUTER, RIGHT OUTER και FULL OUTER για να ελέγξουν ποιες γραμμές ταιριάζουν και ποιες μη ταιριάζουν εμφανίζονται στο αποτέλεσμα.

  • 🔗 Σκοπός: Μια ΣΥΝΔΕΣΗ (JOIN) ανακτά σχετικά δεδομένα από δύο ή περισσότερους πίνακες αντιστοιχίζοντας μια κοινή στήλη, συνήθως ένα κλειδί.
  • 🎯 ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ: Η συνάρτηση INNER JOIN επιστρέφει μόνο τις γραμμές όπου η συνθήκη σύνδεσης ισχύει και στους δύο πίνακες.
  • ⬅️ ΑΡΙΣΤΕΡΗ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ: Η συνάρτηση LEFT OUTER JOIN επιστρέφει κάθε γραμμή από τον αριστερό πίνακα, γεμίζοντας τις μη ταιριασμένες στήλες του δεξιού πίνακα με NULL.
  • ➡️ ΔΕΞΙΑ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ: Η συνάρτηση RIGHT OUTER JOIN επιστρέφει κάθε γραμμή από τον δεξιό πίνακα, γεμίζοντας τις μη ταιριασμένες στήλες του αριστερού πίνακα με NULL.
  • 🔄 ΠΛΗΡΗΣ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ: Η συνάρτηση FULL OUTER JOIN επιστρέφει όλες τις γραμμές και από τους δύο πίνακες, χρησιμοποιώντας NULL όπου δεν πληρούται η συνθήκη.
  • 🔑 Κατάσταση ON: Η ρήτρα ON ονομάζει τις στήλες που συνδέουν τους πίνακες, τις περισσότερες φορές ένα ζεύγος πρωτεύοντος κλειδιού και ένα ζεύγος ξένου κλειδιού.

ΣΥΝΔΕΣΕΙΣ στον SQL Server: Παραδείγματα ΕΣΩΤΕΡΙΚΗΣ, ΑΡΙΣΤΕΡΗΣ, ΔΕΞΙΑΣ και ΠΛΗΡΟΥΣ ΕΞΩΤΕΡΙΚΗΣ ΣΥΝΔΕΣΗΣ

Τι είναι οι σύνδεσμοι (Joins) στον SQL Server;

Τα δεδομένα μπορούν να ανακτηθούν από περισσότερους από έναν πίνακες χρησιμοποιώντας την εντολή JOIN στο Ο SQL ServerΜια ΣΥΝΔΕΣΗ συνδυάζει γραμμές από δύο ή περισσότερους πίνακες με βάση μια συσχετιζόμενη στήλη μεταξύ τους, συνήθως μια πρωτεύων κλειδί που ταιριάζει με ένα ξένο κλειδίΥπάρχουν κυρίως τέσσερις τύποι JOIN στον SQL Server:

  • ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ / απλή σύνδεση
  • ΑΡΙΣΤΕΡΗ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ / ΑΡΙΣΤΕΡΗ ΣΥΝΔΕΣΗ
  • ΔΕΞΙΑ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ / ΔΕΞΙΑ ΣΥΝΔΕΣΗ
  • ΠΛΗΡΗΣ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ

Ο παρακάτω πίνακας συνοψίζει ποιες γραμμές επιστρέφει κάθε τύπος JOIN:

Τύπος ΣΥΝΔΕΣΗΣ Επιστρεφόμενες γραμμές
ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ Μόνο γραμμές όπου η συνθήκη σύνδεσης ταιριάζει και στους δύο πίνακες.
ΑΡΙΣΤΕΡΑ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ Όλες οι γραμμές από τον αριστερό πίνακα, καθώς και οι αντίστοιχες γραμμές του δεξιού πίνακα (NULL όπου δεν υπάρχει καμία αντιστοιχία).
ΔΕΞΙΑ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ Όλες οι γραμμές από τον δεξιό πίνακα, καθώς και οι αντίστοιχες γραμμές του αριστερού πίνακα (NULL όπου δεν υπάρχει καμία αντιστοιχία).
ΠΛΗΡΗΣ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ Όλες οι γραμμές και από τους δύο πίνακες, με NULL όπου δεν πληρούται η συνθήκη.

Τα παρακάτω παραδείγματα χρησιμοποιούν δύο πίνακες, Φοιτητές και Τέλη, ενωμένα στη στήλη κοινής εισαγωγής. Κάθε ενότητα εξηγεί έναν τύπο ΣΥΝΔΕΣΜΟΥ με τη σύνταξή του, ένα επεξεργασμένο ερώτημα και το αποτέλεσμα.

ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ

Αυτό το είδος της Ο SQL Server Η συνάρτηση JOIN επιστρέφει γραμμές από όλους τους πίνακες στους οποίους η συνθήκη σύνδεσης είναι αληθής. Λαμβάνει την ακόλουθη σύνταξη:

SELECT columns
FROM table_1 
INNER JOIN table_2
ON table_1.column = table_2.column;

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

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

Ο παρακάτω πίνακας τελών καταγράφει το ποσό που έχει καταβάλει κάθε αριθμός εισαγωγής:

Πίνακας τελών που παραθέτει τους αριθμούς εισαγωγής και τη στήλη amount_paid (πληρωμένο ποσό)

Η ακόλουθη εντολή παρουσιάζει ένα INNER JOIN στον SQL Server με ένα παράδειγμα:

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
INNER JOIN Fee
ON Students.admission = Fee.admission

Η εντολή επιστρέφει το ακόλουθο αποτέλεσμα, εμφανίζοντας μόνο τους αριθμούς εισαγωγής που υπάρχουν και στους δύο πίνακες:

Το αποτέλεσμα INNER JOIN εμφανίζει μόνο τους φοιτητές των οποίων η εισαγωγή εμφανίζεται και στους δύο πίνακες

Μπορούμε να καταλάβουμε ποιοι φοιτητές έχουν πληρώσει τα δίδακτρα τους. Χρησιμοποιήσαμε τη στήλη με τις κοινές τιμές και στους δύο πίνακες, η οποία είναι η στήλη εισαγωγής.

ΑΡΙΣΤΕΡΑ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ

Αυτός ο τύπος σύνδεσης επιστρέφει όλες τις γραμμές από τον αριστερό πίνακα συν τις εγγραφές στον δεξιό πίνακα με αντίστοιχες τιμές. Για παράδειγμα:

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
LEFT OUTER JOIN Fee
ON Students.admission = Fee.admission

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

LEFT OUTER JOIN αποτέλεσμα keeping κάθε Φοιτητής τσακώνεται με NULL για μη συμβατά τέλη

Οι εγγραφές χωρίς αντίστοιχες τιμές αντικαθίστανται με NULL στις αντίστοιχες στήλες.

ΔΕΞΙΑ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ

Αυτός ο τύπος ένωσης επιστρέφει όλες τις σειρές από τον δεξιό πίνακα και μόνο εκείνες με αντίστοιχες τιμές στον αριστερό πίνακα. Για παράδειγμα:

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
RIGHT OUTER JOIN Fee
ON Students.admission = Fee.admission

Η εντολή για OUTER JOINS στον SQL Server επιστρέφει το ακόλουθο αποτέλεσμα:

ΔΕΞΙΑ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ αποτέλεσμα keeping κάθε γραμμή τελών και αντίστοιχες γραμμές Φοιτητών

Ο λόγος για το παραπάνω αποτέλεσμα είναι ότι όλες οι σειρές στον πίνακα Fee είναι διαθέσιμες στον πίνακα Students όταν αντιστοιχίζονται στη στήλη αποδοχής.

ΠΛΗΡΗΣ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ

Αυτός ο τύπος σύνδεσης επιστρέφει όλες τις γραμμές και από τους δύο πίνακες, με τιμές NULL όπου η συνθήκη JOIN δεν είναι αληθής. Για παράδειγμα:

SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid
FROM Students
FULL OUTER JOIN Fee
ON Students.admission = Fee.admission

Ο κώδικας επιστρέφει το ακόλουθο αποτέλεσμα για ερωτήματα FULL OUTER JOIN σε SQL, συνδυάζοντας κάθε γραμμή και από τους δύο πίνακες:

Αποτέλεσμα FULL OUTER JOIN που συνδυάζει όλες τις σειρές Φοιτητών και Διδάκτρων με NULL για κενά

Συχνές Ερωτήσεις

Μια CROSS JOIN επιστρέφει το καρτεσιανό γινόμενο δύο πινάκων, αντιστοιχίζοντας κάθε γραμμή του πρώτου πίνακα με κάθε γραμμή του δεύτερου. Δεν έχει συνθήκη ON, επομένως ένας πίνακας 10 και 5 γραμμών παράγει 50 γραμμές.

Χρησιμοποιείτε μια SELF JOIN: ο πίνακας παρατίθεται δύο φορές με διαφορετικά ψευδώνυμα και, στη συνέχεια, ενώνεται σε μια σχετική στήλη για να συγκριθούν γραμμές μέσα στον ίδιο πίνακα. Είναι σύνηθες για ιεραρχικά δεδομένα, όπως η αντιστοίχιση κάθε υπαλλήλου με τον προϊστάμενό του.

Ένα JOIN συνδυάζει στήλες από σχετικούς πίνακες δίπλα-δίπλα, αντιστοιχίζοντας γραμμές σε μια συνθήκη. Το UNION στοιβάζει τα αποτελέσματα δύο ερωτημάτων SELECT κάθετα, προσθέτοντας γραμμές. Το JOIN διευρύνει το αποτέλεσμα. Το UNION το επιμηκύνει.

Ναι. Η ρήτρα ON μπορεί να ελέγξει πολλές στήλες που συνδέονται με AND, για παράδειγμα ON a.col1 = b.col1 ΚΑΙ a.col2 = b.col2. Οι σύνθετες συνθήκες είναι συνηθισμένες όταν μία μόνο στήλη δεν προσδιορίζει με μοναδικό τρόπο μια γραμμή.

Η ρήτρα ON ορίζει τον τρόπο αντιστοίχισης των πινάκων και εφαρμόζεται κατά την εκτέλεση της ένωσης. Η ρήτρα WHERE φιλτράρει το συνδυασμένο αποτέλεσμα στη συνέχεια. Με τις OUTER JOIN, η μετακίνηση μιας συνθήκης μεταξύ τους μπορεί να αλλάξει τις γραμμές που επιστρέφονται.

Ναι. Η σύνταξη της συνάρτησης JOIN χωρίς πρόθεμα έχει ως προεπιλογή την τιμή INNER JOIN, επομένως επιστρέφει μόνο αντίστοιχες γραμμές. Η προσθήκη των λέξεων LEFT, RIGHT ή FULL πριν από την συνάρτηση OUTER JOIN αλλάζει ποιες γραμμές δεν ταιριάζουν και διατηρούνται στο αποτέλεσμα.

Ναί. GitHub Copilot μπορεί να συντάξει ερωτήματα INNER, LEFT, RIGHT και FULL OUTER JOIN από μια προτροπή φυσικής γλώσσας. Να ελέγχετε πάντα τη συνθήκη ON και τον τύπο σύνδεσης, ώστε το σύνολο αποτελεσμάτων να ταιριάζει με αυτό που θέλατε.

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

Συνοψίστε αυτήν την ανάρτηση με: