ΣΥΝΔΕΣΕΙΣ στον SQL Server: Τύποι με παραδείγματα
⚡ Έξυπνη Σύνοψη
Οι σύνδεσμοι JOIN στον SQL Server συνδυάζουν γραμμές από δύο ή περισσότερους πίνακες με βάση μια σχετική στήλη, χρησιμοποιώντας συνδέσμους INNER, LEFT OUTER, RIGHT OUTER και FULL OUTER για να ελέγξουν ποιες γραμμές ταιριάζουν και ποιες μη ταιριάζουν εμφανίζονται στο αποτέλεσμα.
Τι είναι οι σύνδεσμοι (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;
Θα χρησιμοποιήσουμε τους ακόλουθους δύο πίνακες για να το δείξουμε αυτό. Ο παρακάτω πίνακας Φοιτητών παραθέτει κάθε φοιτητή και τον αριθμό εισαγωγής:
Ο παρακάτω πίνακας τελών καταγράφει το ποσό που έχει καταβάλει κάθε αριθμός εισαγωγής:
Η ακόλουθη εντολή παρουσιάζει ένα INNER JOIN στον SQL Server με ένα παράδειγμα:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students INNER JOIN Fee ON Students.admission = Fee.admission
Η εντολή επιστρέφει το ακόλουθο αποτέλεσμα, εμφανίζοντας μόνο τους αριθμούς εισαγωγής που υπάρχουν και στους δύο πίνακες:
Μπορούμε να καταλάβουμε ποιοι φοιτητές έχουν πληρώσει τα δίδακτρα τους. Χρησιμοποιήσαμε τη στήλη με τις κοινές τιμές και στους δύο πίνακες, η οποία είναι η στήλη εισαγωγής.
ΑΡΙΣΤΕΡΑ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ
Αυτός ο τύπος σύνδεσης επιστρέφει όλες τις γραμμές από τον αριστερό πίνακα συν τις εγγραφές στον δεξιό πίνακα με αντίστοιχες τιμές. Για παράδειγμα:
SELECT Students.admission, Students.firstName, Students.lastName, Fee.amount_paid FROM Students LEFT OUTER JOIN Fee ON Students.admission = Fee.admission
Ο κώδικας επιστρέφει το ακόλουθο αποτέλεσμα, keeping κάθε φοιτητής, ακόμη και όταν δεν υπάρχει αντίστοιχο αρχείο διδάκτρων:
Οι εγγραφές χωρίς αντίστοιχες τιμές αντικαθίστανται με 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 επιστρέφει το ακόλουθο αποτέλεσμα:
Ο λόγος για το παραπάνω αποτέλεσμα είναι ότι όλες οι σειρές στον πίνακα 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, συνδυάζοντας κάθε γραμμή και από τους δύο πίνακες:







