Η PostgreSQL ενώνει: Εσωτερικά, εξωτερικά, αριστερά, δεξιά, φυσικά με παραδείγματα

Πίνακας περιεχομένων:

Anonim

Τι είναι το PostgreSQL Joins;

Τα PostgreSQL JOIN χρησιμοποιούνται για την ανάκτηση δεδομένων από περισσότερους από έναν πίνακες. Με τους JOINs, είναι δυνατό να συνδυάσουμε τις δηλώσεις SELECT και JOIN σε μία μόνο δήλωση. Προστίθεται μια συνθήκη JOIN στη δήλωση και επιστρέφονται όλες οι σειρές που πληρούν τις προϋποθέσεις.

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

Σε αυτό το σεμινάριο PostgreSQL, θα μάθετε:

  • Τι είναι το PostgreSQL Joins;
  • Τύποι ενώνει
  • Εσωτερικά ενώνει
    • Εγγραφή
    • Εγγραφή EQUI
    • Φυσική συμμετοχή
  • Εξωτερικές συνδέσεις
    • ΑΡΙΣΤΕΡΑ ΕΓΓΡΑΦΗ
    • ΔΕΞΙΑ ΕΞΩ ΕΓΓΡΑΦΗ
    • Πλήρης εξωτερική συμμετοχή
  • Χρήση του pgAdmin
  • Εσωτερικά ενώνει
    • Εγγραφή
    • Εγγραφή EQUI
    • Φυσική συμμετοχή
    • INNER JOIN (απλή συμμετοχή)
  • Εξωτερικές συνδέσεις
    • ΑΡΙΣΤΕΡΑ ΕΓΓΡΑΦΗ
    • ΔΕΞΙΑ ΕΞΩ ΕΓΓΡΑΦΗ
    • Πλήρης εξωτερική συμμετοχή

Τύποι ενώνει

Υπάρχουν δύο τύποι JOIN στο PostgreSQL:

  • Εσωτερικά ενώνει
  • Εξωτερική συμμετοχή

Εσωτερικά ενώνει

Υπάρχουν 3 τύποι εσωτερικών συνδέσεων:

  • Θήτα εγγραφείτε
  • Φυσική ένωση
  • Εγγραφή στο EQUI

Εγγραφή

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

Το theta join είναι ο πιο βασικός τύπος JOIN. Θα επιστρέψει όλες τις σειρές από τους πίνακες όπου ικανοποιείται η συνθήκη JOIN.

Σύνταξη:

SELECT columnsFROM table-1INNER JOIN table-2ON table-1.column = table-2.column;

Εξετάστε τους παρακάτω πίνακες της βάσης δεδομένων επίδειξης:

Βιβλίο:

Τιμή:

Θέλουμε να δούμε το όνομα κάθε βιβλίου και την αντίστοιχη τιμή. Μπορούμε να εκτελέσουμε την ακόλουθη εντολή:

SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

Αυτό θα επιστρέψει τα ακόλουθα:

Μόνο 3 σειρές ικανοποίησαν την συνθήκη σύνδεσης.

Εγγραφή EQUI

Η συμμετοχή EQUI μας παρέχει έναν τρόπο σύνδεσης δύο πινάκων με βάση τη σχέση πρωτεύοντος κλειδιού / ξένου κλειδιού. Για παράδειγμα:

SELECT *FROM BookJOIN Price ON Book.id = Price.id;

Αυτό θα επιστρέψει τα ακόλουθα:

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

Φυσική συμμετοχή

Αυτός ο τύπος σύνδεσης μας παρέχει έναν άλλο τρόπο σύνταξης μιας συμμετοχής EQUI. Μπορούμε να βελτιώσουμε το προηγούμενο παράδειγμά μας προσθέτοντας τη ΦΥΣΙΚΗ λέξη-κλειδί όπως φαίνεται παρακάτω:

SELECT *FROM BookNATURAL JOIN Price;

Αυτό θα επιστρέψει τα ακόλουθα:

Επιστράφηκε μόνο μία στήλη ταυτότητας. Το NATURAL JOIN μπόρεσε να σημειώσει ότι η στήλη id είναι κοινή στους δύο πίνακες. Μόνο ένα επέστρεψε.

Εξωτερικές συνδέσεις

Υπάρχουν τρεις τύποι εξωτερικών συνδέσεων στο PostgreSQL:

  • Αριστερά εξωτερική εγγραφή.
  • Δεξιά εξωτερική συμμετοχή.
  • Πλήρης εξωτερική συμμετοχή

ΑΡΙΣΤΕΡΑ ΕΓΓΡΑΦΗ

Το LEFT OUTER JOIN θα επιστρέψει όλες τις σειρές στον πίνακα στην αριστερή πλευρά και μόνο τις σειρές στον δεξιό πίνακα όπου έχει ικανοποιηθεί η συνθήκη σύνδεσης.

Σύνταξη:

SELECT columnsFROM table-1LEFT OUTER JOIN table-2ON table-1.column = table-2.column;

Πρέπει να δούμε το όνομα κάθε βιβλίου και την αντίστοιχη τιμή. Μπορούμε να εκτελέσουμε την ακόλουθη εντολή:

SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;

Αυτό επιστρέφει τα ακόλουθα:

Έχουν επιστραφεί και οι 4 σειρές στον πίνακα βιβλίων. Μόνο 3 σειρές από τον πίνακα τιμών πληρούσαν την συνθήκη συμμετοχής. Έτσι επέστρεψαν. Το τελευταίο βιβλίο δεν έχει αντίστοιχη τιμή.

ΔΕΞΙΑ ΕΞΩ ΕΓΓΡΑΦΗ

Το RIGHT OUTER JOIN επιστρέφει όλες τις σειρές στον πίνακα στη δεξιά πλευρά και τις σειρές στον πίνακα στην αριστερή πλευρά όπου ικανοποιήθηκε η συνθήκη σύνδεσης.

Σύνταξη:

SELECT columnsFROM table-1RIGHT OUTER JOIN table-2ON table-1.column = table-2.column;

Για παράδειγμα:

SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;

Αυτό επιστρέφει τα ακόλουθα:

Έχουν επιστραφεί όλες οι σειρές στον πίνακα τιμών. Επιστράφηκαν μόνο οι σειρές στον πίνακα "Βιβλίο" που πληρούσαν την συνθήκη σύνδεσης. Το 3 ος σειρά δεν έχει καμία αξία για το όνομα Εφόσον δεν διαπιστώθηκε αγώνα.

Πλήρης εξωτερική συμμετοχή

Αυτός ο τύπος JOIN θα επιστρέψει όλες τις σειρές στον πίνακα στην αριστερή πλευρά και όλες τις σειρές στον πίνακα στη δεξιά πλευρά με null όπου η συνθήκη σύνδεσης δεν ικανοποιείται.

Σύνταξη:

SELECT columnsFROM table-1FULL OUTER JOIN table-2ON table-1.column = table-2.column;

Για παράδειγμα:

SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;

Αυτό επιστρέφει τα ακόλουθα:

Έχουν επιστραφεί όλες οι σειρές από όλα τα τραπέζια, με μηδέν όπου δεν βρέθηκε αντιστοιχία.

Χρήση του pgAdmin

Οι παραπάνω εργασίες μπορούν να επιτευχθούν στο pgAdmin ως εξής:

Εσωτερικά ενώνει

Εγγραφή

Βήμα 1) Συνδεθείτε στον λογαριασμό σας στο pgAdmin.

Βήμα 2)

  1. Από τη γραμμή πλοήγησης στα αριστερά- Κάντε κλικ στις Βάσεις δεδομένων.
  2. Κάντε κλικ στην επιλογή Επίδειξη.

Βήμα 3) Πληκτρολογήστε το ερώτημα στο πρόγραμμα επεξεργασίας ερωτημάτων:

SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

Βήμα 4) Κάντε κλικ στο κουμπί Εκτέλεση.

Θα πρέπει να επιστρέψει τα ακόλουθα:

Εγγραφή EQUI

Βήμα 1) Συνδεθείτε στον λογαριασμό σας στο pgAdmin.

Βήμα 2)

  1. Από τη γραμμή πλοήγησης στα αριστερά- Κάντε κλικ στις Βάσεις δεδομένων.
  2. Κάντε κλικ στην επιλογή Επίδειξη.

Βήμα 3) Πληκτρολογήστε το ερώτημα στο πρόγραμμα επεξεργασίας ερωτημάτων:

SELECT *FROM BookJOIN Price ON Book.id = Price.id;

Βήμα 4) Κάντε κλικ στο κουμπί Εκτέλεση.

Θα πρέπει να επιστρέψει τα ακόλουθα:

Φυσική συμμετοχή

Βήμα 1) Συνδεθείτε στον λογαριασμό σας στο pgAdmin.

Βήμα 2)

  1. Από τη γραμμή πλοήγησης στα αριστερά- Κάντε κλικ στις Βάσεις δεδομένων.
  2. Κάντε κλικ στην επιλογή Επίδειξη.

Βήμα 3) Πληκτρολογήστε το ερώτημα στο πρόγραμμα επεξεργασίας ερωτημάτων:

SELECT *FROM BookNATURAL JOIN Price;

Βήμα 4) Κάντε κλικ στο κουμπί Εκτέλεση.

Θα πρέπει να επιστρέψει τα ακόλουθα:

INNER JOIN (απλή συμμετοχή)

Βήμα 1) Συνδεθείτε στον λογαριασμό σας στο pgAdmin.

Βήμα 2)

  1. Από τη γραμμή πλοήγησης στα αριστερά- Κάντε κλικ στις Βάσεις δεδομένων.
  2. Κάντε κλικ στην επιλογή Επίδειξη.

Βήμα 3) Πληκτρολογήστε το ερώτημα στο πρόγραμμα επεξεργασίας ερωτημάτων:

SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;

Βήμα 4) Κάντε κλικ στο κουμπί Εκτέλεση.

Θα πρέπει να επιστρέψει τα ακόλουθα:

Εξωτερικές συνδέσεις

ΑΡΙΣΤΕΡΑ ΕΓΓΡΑΦΗ

Βήμα 1) Συνδεθείτε στον λογαριασμό σας στο pgAdmin.

Βήμα 2)

  1. Από τη γραμμή πλοήγησης στα αριστερά- Κάντε κλικ στις Βάσεις δεδομένων.
  2. Κάντε κλικ στην επιλογή Επίδειξη.

Βήμα 3) Πληκτρολογήστε το ερώτημα στο πρόγραμμα επεξεργασίας ερωτημάτων:

SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;

Βήμα 4) Κάντε κλικ στο κουμπί Εκτέλεση.

Θα πρέπει να επιστρέψει τα ακόλουθα:

ΔΕΞΙΑ ΕΞΩ ΕΓΓΡΑΦΗ

Βήμα 1) Συνδεθείτε στον λογαριασμό σας στο pgAdmin.

Βήμα 2)

  1. Από τη γραμμή πλοήγησης στα αριστερά- Κάντε κλικ στις Βάσεις δεδομένων.
  2. Κάντε κλικ στην επιλογή Επίδειξη.

Βήμα 3) Πληκτρολογήστε το ερώτημα στο πρόγραμμα επεξεργασίας ερωτημάτων:

SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;

Βήμα 4) Κάντε κλικ στο κουμπί Εκτέλεση.

Θα πρέπει να επιστρέψει τα ακόλουθα:

Πλήρης εξωτερική συμμετοχή

Βήμα 1) Συνδεθείτε στον λογαριασμό σας στο pgAdmin.

Βήμα 2)

  1. Από τη γραμμή πλοήγησης στα αριστερά- Κάντε κλικ στις Βάσεις δεδομένων.
  2. Κάντε κλικ στην επιλογή Επίδειξη.

Βήμα 3) Πληκτρολογήστε το ερώτημα στο πρόγραμμα επεξεργασίας ερωτημάτων:

SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;

Βήμα 4) Κάντε κλικ στο κουμπί Εκτέλεση.

Θα πρέπει να επιστρέψει τα ακόλουθα:

Περίληψη:

  • Στη PostgreSQL, χρησιμοποιούμε JOIN όταν πρέπει να ανακτήσουμε τιμές από περισσότερους από έναν πίνακες.
  • Το INNER JOIN είναι ο πιο βασικός τύπος JOIN. Επιστρέφει όλες τις εγγραφές όπου ικανοποιήθηκε η καθορισμένη συνθήκη JOIN.
  • Το LEFT OUTER JOIN επιστρέφει όλες τις σειρές στον αριστερό πίνακα και μόνο τις σειρές στον άλλο πίνακα όπου έχει ικανοποιηθεί η συνθήκη σύνδεσης.
  • Το RIGHT OUTER JOIN επιστρέφει όλες τις σειρές στον δεξιό πίνακα και μόνο τις σειρές στον άλλο πίνακα όπου έχει ικανοποιηθεί η συνθήκη σύνδεσης.
  • Αυτός ο τύπος JOIN επιστρέφει όλες τις σειρές στον αριστερό πίνακα και όλες τις σειρές στον δεξιό πίνακα με null όπου η συνθήκη σύνδεσης δεν ικανοποιείται.

Κατεβάστε τη βάση δεδομένων που χρησιμοποιείται σε αυτό το σεμινάριο