Ένας γρήγορος οδηγός για τη χρήση εσωτερικών συνδέσεων στο SQL

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

Τι είναι μια δήλωση SQL JOIN;

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

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

Παράδειγμα εσωτερικής συμμετοχής

Για παράδειγμα, πάρτε πίνακες που περιέχουν προγράμματα οδήγησης

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

Η παρακάτω δήλωση SQL συνδυάζει δεδομένα από τους πίνακες προγραμμάτων οδήγησης και οχημάτων σε περιπτώσεις όπου ο οδηγός και το όχημα βρίσκονται στην ίδια πόλη:

ΕΠΙΛΕΞΤΕ επώνυμο, όνομα, ετικέτα
ΑΠΟ οδηγούς, οχήματα
WHERE drivers.location = cars.location

Αυτό το ερώτημα παράγει τα ακόλουθα αποτελέσματα:

ετικέτα επώνυμου επώνυμου

Baker Roland H122JM
Smythe Michael D824HA
Smythe Michael P091YF
Jacobs Abraham J291QR
Jacobs Abraham L990ΜΤ

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

ΕΠΙΛΕΞΤΕ επώνυμο, όνομα, ετικέτα, open_weekends
ΑΠΟ οδηγούς, οχήματα, τοποθεσίες
WHERE drivers.location = cars.location
AND cars.location = location.location
ΚΑΙ τοποθεσίες.open_weekends = "Ναι"

Αυτό το ερώτημα παράγει τα ακόλουθα αποτελέσματα:

επώνυμο όνομα πρώτου ονόματος open_weekends

Baker Roland H122JM ναι
Jacobs Abraham J291QR ναι
Jacobs Abraham L990MY ναι

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

Άλλοι τύποι ενώνει

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

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

  • Αριστερή εξωτερική ένωση (αριστερή ένωση): Περιέχει κάθε εγγραφή από τον αριστερό πίνακα, ακόμη και αν ο σωστός πίνακας δεν έχει αντίστοιχη εγγραφή.
  • Δεξιά εξωτερική ένωση (δεξί ένωση): Επιστρέφει όλες τις σχετικές πληροφορίες από το δεξί τραπέζι ακόμα και αν ο αριστερός πίνακας δεν έχει αγώνα.
  • Πλήρης συμμετοχή: Επιλέγει όλες τις εγγραφές από δύο πίνακες, ανεξάρτητα από το αν έχουν αντίστοιχη συνθήκη σύνδεσης.
instagram story viewer