Συγχώνευση δύο πινάκων σε SQL

Synchoneuse Dyo Pinakon Se Sql



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

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

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







Δείγμα πίνακα

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



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



ΔΗΜΙΟΥΡΓΗΣΤΕ ΤΡΑΠΕΖΑ υπαλλήλους (

υπάλληλος_αναγνωριστικό INT AUTO_INCREMENT ΚΥΡΙΟ ΚΛΕΙΔΙ,

first_name VARCHAR( πενήντα ),

επώνυμο VARCHAR( πενήντα ),

τμήμα VARCHAR( πενήντα )

)

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





ΕΙΣΑΓΩΓΗ ΣΕ υπαλλήλους (όνομα, επώνυμο, τμήμα) ΑΞΙΕΣ

( 'Αλίκη' , 'Σιδηρουργός' , 'Ανθρώπινο δυναμικό' ),

( 'Βαρίδι' , 'Τζόνσον' , 'Εμπορία' ),

( 'Κάρολος' , 'Wilson' , 'Χρηματοδότηση' ),

( 'Δαβίδ' , 'Καφέ' , 'Εκπτώσεις' ),

( 'Εύα' , 'Ντέιβις' , 'Μηχανική' )

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

ΔΗΜΙΟΥΡΓΗΣΤΕ ΠΙΝΑΚΑ μισθούς (

salary_id INT AUTO_INCREMENT ΚΥΡΙΟ ΚΛΕΙΔΙ,

εργαζόμενος_αναγνωριστικό INT,

μισθός ΔΕΚΑΔΙΚΟΣ( 10 , 2 ),

έναρξη_ημερομηνία DATE,

end_date DATE,

ΞΕΝΟ ΚΛΕΙΔΙ (εργαζομένου_αναγνωριστικό) ΑΝΑΦΟΡΕΣ εργαζόμενοι(εργαζόμενος_αναγνωριστικό)

)

Προσθέστε τα δεδομένα του δείγματος εισαγωγής στον πίνακα ως εξής:



INSERT INTO μισθούς (αναγνωριστικό_εργαζομένου, μισθός, ημερομηνία_έναρξης, ημερομηνία_λήξης) VALUES
( 1 , 60000,00 , '01-01-2023' , '2023-12-31' ),
( 2 , 55000,00 , '01-01-2023' , '2023-12-31' ),
( 3 , 65000,00 , '01-01-2023' , '2023-12-31' ),
( 4 , 58000,00 , '01-01-2023' , '2023-12-31' ),
( 5 , 70000,00 , '01-01-2023' , '2023-12-31' )

Αυτό θα πρέπει να μας παρέχει δύο πίνακες που μπορούν να μας βοηθήσουν να δείξουμε την έννοια των ενώσεων/συγχώνευσης πινάκων στην SQL.

Συγχώνευση πινάκων SQL/Συνδέσεις πινάκων

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

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

Ο πρώτος και πιο συνηθισμένος τύπος σύνδεσης πίνακα στην SQL είναι η ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ. Μια ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ μας επιτρέπει να συνδυάσουμε τις σειρές από δύο πίνακες με βάση μια συγκεκριμένη συνθήκη. Αυτός ο τύπος επιστρέφει στη συνέχεια μόνο τις σειρές όπου υπάρχει αντιστοίχιση μεταξύ των πινάκων.

Ας πάρουμε ως παραδείγματα τους πίνακες «εργαζόμενοι» και «μισθοί» που δημιουργήσαμε νωρίτερα. Για να εκτελέσουμε μια ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ στην SQL, χρησιμοποιούμε την ρήτρα ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ ως εξής:

ΕΠΙΛΕΓΩ

e.employee_id,

e.first_name,

e.last_name,

ε.τμήμα,

σ.μισθός

ΑΠΟ

εργαζόμενοι ε

Μισθοί ΕΣΩΤΕΡΙΚΗΣ ΣΥΝΔΕΣΗΣ s ΕΠΙ

e.employee_id = s.employee_id;

Στο συγκεκριμένο παράδειγμα ερωτήματος, χρησιμοποιούμε μια ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ για να συγχωνεύσουμε τους πίνακες 'εργαζόμενοι' και 'μισθοί' στη στήλη 'εργαζόμενος_αναγνωριστικό' που υπάρχει και στους δύο πίνακες. Το σύνολο που προκύπτει περιέχει μόνο τις αντίστοιχες σειρές και από τους δύο πίνακες.

Ένα παράδειγμα εξόδου είναι το εξής:

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

Έχουμε επίσης μια ΑΡΙΣΤΕΡΑ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ που συνδυάζει όλες τις σειρές από τον αριστερό πίνακα και τις αντίστοιχες σειρές από τον δεξιό πίνακα. Εάν δεν υπάρχει αντιστοίχιση στον σωστό πίνακα, η ένωση χρησιμοποιεί την τιμή NULL.

ΕΠΙΛΕΓΩ

e.employee_id,

e.first_name,

e.last_name,

ε.τμήμα,

σ.μισθός

ΑΠΟ

εργαζόμενοι ε

ΑΡΙΣΤΕΡΑ ΕΝΤΑΞΗ μισθοί s

ΕΠΙ

e.employee_id = s.employee_id;

Σε αυτό το παράδειγμα, εκτελούμε μια ΑΡΙΣΤΕΡΑ ΕΞΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ για να συγχωνεύσουμε τους πίνακες 'εργαζόμενοι' και 'μισθοί'. Συμπεριλαμβάνονται όλες οι σειρές από τον πίνακα 'εργαζόμενοι' και προστίθενται οι αντίστοιχες σειρές από τον πίνακα 'μισθοί'. Ωστόσο, οι τιμές NULL περιλαμβάνονται στη στήλη 'μισθός' για μη αντιστοιχισμένες σειρές.

SQL UNION

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

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

Ένα παράδειγμα είναι το εξής:

SELECT υπάλληλος_αναγνωριστικό , όνομα , επώνυμο , τμήμα , NULL AS μισθός

ΑΠΟ εργαζομένους ε

ΕΝΩΣΗ

SELECT staff_id , NULL AS first_name , NULL AS last_name , NULL AS τμήμα , μισθός

ΑΠΟ μισθούς s ;

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

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

συμπέρασμα

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