Κοινή χρήση τεχνολογίας

Διαχείριση βάσης δεδομένων DBA Εσωτερική σύνδεση

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

εσωτερική σύνδεση

Συνδυάστε πολλούς πίνακες σε έναν προσωρινό πίνακα μέσω συνδέσμων

επιλέξτε όνομα κεφαλίδας από όνομα πίνακα 1 όνομα πίνακα εσωτερικής ένωσης 2 .

επιλέξτε * από τα εσωτερικά τμήματα εργαζομένων

επιλέξτε όνομα κεφαλίδας από όνομα πίνακα 1 όνομα πίνακα εσωτερικής ένωσης 2 σε συνθήκη σύνδεσης.

επιλέξτε * από τα τμήματα εσωτερικής ένωσης υπαλλήλων στο staffs.dept_id = Departments.dept_id;
Στον προσωρινό νέο πίνακα, μπορεί να γίνει επεξεργασία ως εξής

επιλέξτε όνομα κεφαλίδας από το όνομα του πίνακα 1 στο πλαίσιο της συνθήκης σύνδεσης [όπου |.

Ισοδύναμος σύνδεσμος: Η υπόθεση είναι ότι υπάρχει μια κεφαλίδα που αποθηκεύει τα ίδια δεδομένα στη σύνδεση

επιλέξτε * από τα τμήματα εσωτερικής ένωσης υπαλλήλων στο staffs.dept_id = Departments.dept_id;

Αφού ορίσετε το ψευδώνυμο, πρέπει να χρησιμοποιήσετε το ψευδώνυμο για να αναπαραστήσετε το όνομα του πίνακα

  1. επιλέξτε e.* , d.dept_name
  2. από υπαλλήλους ως εσωτερικά τμήματα ως d στο e.dept_id=d.dept_id;

Ζητήστε τον συνολικό μισθό κάθε εργαζόμενου το 2018

select name ,sum(basic+bonus) as total from employees inner join salary on employees.employee_id = salary.employee_id where year(date)=2018 group by name;

select salary.employee_id ,sum(basic+bonus) as total from employees inner join salary on employees.employee_id = salary.employee_id  where year(date)=2018 group by employee_id having total > 300000 order by total desc ,employee_id asc;查询2018年总工资大于30万的员工,按2018年总工资降序排列

Μη ισοδύναμος σύνδεσμος: Δεν υπάρχει κεφαλίδα που να αποθηκεύει τα ίδια δεδομένα στον πίνακα

επιλέξτε υπάλληλος_αναγνωριστικό ,βασικός, γκαρντ από μισθό εσωτερική ένωση wage_grade on salary.basic μεταξύ wage_grade.low και wage_grade.high όπου έτος(ημερομηνία)=2018 και μήνα(ημερομηνία)=12.
Ζητήστε βασικό μισθό υπαλλήλου Δεκεμβρίου 2018

επιλέξτε garde ως επίπεδο,count(employee_id) ως συνολικός αριθμός ατόμων από το μισθό inner join wage_grade on salary.basic μεταξύ wage_grade.low και wage_grade.high όπου έτος(ημερομηνία)=2018 και μήνα(ημερομηνία)=12 ομάδα ανά κατηγορία 2018 Αριθμός εργαζομένων σε επίπεδο βασικού μισθού τον Δεκέμβριο

Παράδειγμα ένωσης 3 πινάκων

επιλέξτε όνομα ,βασικός ,γκάρδα από εργαζομένους inner join salary on staffs.employee_id = salary.employee_id inner join wage_grade on salary.basic μεταξύ wage_grade.low και wage_grade.high όπου έτος(ημερομηνία)=2018 και μήνα(ημερομηνία)=12.

Ερώτημα εξωτερικού συνδέσμου

Οι εξωτερικοί σύνδεσμοι συγκρίνουν τις διαφορές μεταξύ δύο πινάκων

Ο αριστερός σύνδεσμος χρησιμοποιεί τα δεδομένα στον αριστερό πίνακα και τα δεδομένα στον δεξιό πίνακα για σύγκριση Το αποτέλεσμα εξόδου εμφανίζει όλα τα δεδομένα στην αριστερή κεφαλίδα του πίνακα.

Μόνο οι σειρές που ταιριάζουν με τον σύνδεσμο εμφανίζονται στα δεξιά

επιλέξτε το όνομα της κεφαλίδας από το όνομα του πίνακα 1 αριστερά το όνομα πίνακα 2 jion σε κατάσταση σύνδεσης.

επιλέξτε όνομα κεφαλίδας από το όνομα του πίνακα 1 αριστερά στο όνομα του πίνακα·[όπου |ομάδα κατά|.

επιλέξτε το όνομα_τμήματος, το όνομα από τα τμήματα που απομένουν.
 

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

Μόνο οι σειρές που ταιριάζουν με τον σύνδεσμο εμφανίζονται στα δεξιά

επιλέξτε το όνομα της κεφαλίδας από το όνομα του πίνακα 1 δεξιά για το όνομα του πίνακα·[όπου |ομάδα κατά|.

mysql> επιλέξτε dept_name,name από τμήματα ως d δεξιά join των υπαλλήλων ως e στο d.dept_id=e.dept_id όπου το dept_name είναι null.

ενημέρωση υπαλλήλων σετ dept_id=11 όπου name="bob";

Πλήρες ερώτημα συνδέσμου

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

Καταργήθηκε η έξοδος διπλών γραμμών

mysql> (επιλέξτε ημερομηνία , μέγ.(βασικό) ως 工资 από μισθό όπου ημερομηνία=20180110)ένωση(επιλέξτε ημερομηνία,min(βασικό) από μισθό όπου ημερομηνία=20180110);

(επιλογή εντολής ερωτήματος) ένωση (εντολή επιλογής ερωτήματος).

Έξοδος χωρίς αναδιπλασιασμό

εντολή επιλογής ερωτήματος) ένωση όλων (εντολή επιλογής ερωτήματος).

Ένθετο ερώτημα

Η εντολή επιλογής ερωτήματος περιέχει την εντολή επιλογής ερωτήματος

Ένθετη ομαδοποίηση ερωτημάτων μετά το πού

επιλέξτε όνομα κεφαλίδας από library.table όπου το σύμβολο κρίσης ονόματος κεφαλίδας (εντολή επιλογής ερωτήματος)

επιλέξτε υπάλληλο_αναγνωριστικό,ημερομηνία,βασικό,μπόνους από μισθό όπου έτος(ημερομηνία)=2018 και μήνα(ημερομηνία)=12 και βασικός > (επιλέξτε βασικό από μισθό όπου έτος(ημερομηνία)=2018 και μήνα(ημερομηνία)=12 και αναγνωριστικό_εργαζομένου=100 )


Αφού έχετε ένθετα ερωτήματα, χρησιμοποιήστε τα αποτελέσματα του ερωτήματος σε () ως συνθήκες φίλτρου,

επιλέξτε όνομα κεφαλίδας από library.table με σύμβολο κρίσης ονόματος κεφαλίδας (εντολή επιλογής ερωτήματος)

επιλέξτε dept_id , count(name) ως σύνολο από ομάδα υπαλλήλων ανά dept_id

έχοντας συνολικά < (

επιλέξτε count(name) από υπαλλήλους όπου dept_id=(

επιλέξτε dept_id από τμήματα όπου dept_name='Τμήμα Ανάπτυξης')

Τοποθετήστε το ερώτημα μετά από από και χρησιμοποιήστε τα αποτελέσματα ερωτήματος του () ως πίνακα

επιλέξτε όνομα κεφαλίδας από (επιλογή αποτελέσματος ερωτήματος) ως προσωρινό όνομα πίνακα όπου συνθήκη φίλτρου.

επιλέξτε staff_id ,name, email, dept_name from (επιλέξτε d.dept_name,e.* από τμήματα ως d inner join staff as e on d.dept_id=e.dept_id) ως tmp_table όπου dept_id=3;

Ένθετο ερώτημα μετά την επιλογή

επιλέξτε όνομα κεφαλίδας, (επιλογή εντολής ερωτήματος) ως όνομα κεφαλίδας από το library.table όπου η συνθήκη φίλτρου.

επιλέξτε d.* ,(επιλέξτε πλήθος(όνομα)από υπαλλήλους ως e όπου d.dept_id=e.dept_id)ως vumen από τμήματα ως d;