Βάςεισ Δεδομζνων Ι Ενότθτα 9: SQL-φηευξθ πινάκων Δρ. Σςιμπίρθσ Αλκιβιάδθσ
Άδειεσ Χριςθσ Σο παρόν εκπαιδευτικό υλικό υπόκειται ςε άδειεσ χριςθσ Creative Commons. Για εκπαιδευτικό υλικό, όπωσ εικόνεσ, που υπόκειται ςε άλλου τφπου άδειασ χριςθσ, θ άδεια χριςθσ αναφζρεται ρθτώσ. Βάςεισ Δεδομζνων Ι-
Χρθματοδότθςθ Σο παρόν εκπαιδευτικό υλικό ζχει αναπτυχκεί ςτα πλαίςια του εκπαιδευτικοφ ζργου του διδάςκοντα. Σο ζργο «Ανοικτά Ακαδθμαϊκά Μακιματα ςτο ΣΕΙ Κεντρικισ Μακεδονίασ» ζχει χρθματοδοτιςει μόνο τθ αναδιαμόρφωςθ του εκπαιδευτικοφ υλικοφ. Σο ζργο υλοποιείται ςτο πλαίςιο του Επιχειρθςιακοφ Προγράμματοσ «Εκπαίδευςθ και Δια Βίου Μάκθςθ» και ςυγχρθματοδοτείται από τθν Ευρωπαϊκι Ζνωςθ (Ευρωπαϊκό Κοινωνικό Σαμείο) και από εκνικοφσ πόρουσ. Βάςεισ Δεδομζνων Ι-
Ενότθτα 9 SQL-φηευξθ πινάκων Δρ. Σςιμπίρθσ Αλκιβιάδθσ
Περιεχόμενα ενότθτασ Γενικόσ τφποσ εντολισ SELECT Καρτεςιανό γινόμενο πινάκων Εςωτερικι φηευξθ Ερωτιματα εςωτερικισ ςφηευξθσ WERE και ΙΝΝΕR JOIN 5
κοποί ενότθτασ κοπόσ τθσ ενότθτασ αυτισ είναι κατανόθςθ τθσ ζννοιασ τθσ ςφηευξθσ πινάκων. Είναι ζνασ από τουσ λόγουσ που επικράτθςε το ςχεςιακό μοντζλο. Όταν απαιτοφνται δεδομζνα από πολλοφσ πίνακεσ, οι οποίοι ςυςχετίηονται, κα πρζπει να δίνεται προςοχι ςτα ξζνα κλειδιά που υπάρχουν ςτουσ πίνακεσ και ςτα πρωτεφοντα κλειδιά με τα οποία ςυςχετίηονται. 6
Γενικόσ τφποσ SELECT A1,A2,.., An FROM R1, R2,. WHERE P1 AND P2 OR. NOT. GROUP BY A1, A2, HAVING H1 AND H2 OR. NOT. ORDER BY A1, A2, (ASC/DESC) 7
Άςκθςθ-πουδαςτισ Βακμολογίεσ ΑΕΜ ΚΜ ΒΑΘΜΟ 2 1 5 2 2 8 1 1 8 1 3 6 1 2 4 πουδαςτισ ΑEM Επίκετο Πόλθ 1 AA ΕΡΡΕ 2 BB ΑΘΗΝΑ 3 CC ΑΘΗΝΑ Μάκθμα ΚM Σίτλοσ Εξάμθνο 1 ΒΑΕΙ ΔΕΔΟΜΕΝΩΝ 2 ΠΛΗΡΟΦΟΡΙΚΗ B Γ 3 ΜΑΘΗΜΑΣΙΚΑ B 8
Καρτεςιανό γινόμενο πινάκων Βακμολογίεσ x πουδαςτισ Βακμολογίεσ πουδαςτισ ΑΕΜ ΚΜ ΒΑΘΜΟ ΑEM Επίκετο Πόλθ 2 1 5 1 AA ΕΡΡΕ 2 1 5 2 BB ΑΘΗΝΑ 2 1 5 3 CC ΕΡΡΕ 2 2 8 1 AA ΕΡΡΕ 2 2 8 2 BB ΑΘΗΝΑ 2 2 8 3 CC ΕΡΡΕ 1 1 8 1 AA ΕΡΡΕ Ποιο το ανάλογο ςτθ ςχεςιακι άλγεβρα? 1 1 8 2 BB ΑΘΗΝΑ 1 1 8 3 CC ΕΡΡΕ 1 3 6 1 AA ΕΡΡΕ 1 3 6 2 BB ΑΘΗΝΑ 1 3 6 3 CC ΕΡΡΕ 1 2 4 1 AA ΕΡΡΕ 1 2 4 2 BB ΑΘΗΝΑ 1 2 4 3 CC ΕΡΡΕ 9
Ερωτιματα φηευξθσ Να εμφανίςετε τον τίτλο του μακιματοσ και τον βακμό. Select Σίτλοσ, Βακμόσ From Μάκθμα, Βακμολογίεσ Where Μάκθμα.ΚΜ= Βακμολογίεσ.ΚΜ Ποιο το ανάλογο ςτθ ςχεςιακι άλγεβρα? Να εμφανιςτοφν τα επίκετα των φοιτθτϊν που γράφουν κάτω από τθ βάςθ. Select Επίκετο From Βακμολογίεσ, πουδαςτισ Where πουδαςτισ.αεμ= Βακμολογίεσ.ΑΕΜ And Βακμόσ < 5 10
Ερωτιματα φηευξθσ Να εμφανίςετε Επίκετο, Όνομα, Σίτλοσ, Βακμόσ με τα μακιματα που πζραςαν οι φοιτθτζσ από ζρρεσ. Select Επίκετο, Όνομα, Σίτλοσ, Βακμόσ From Μάκθμα, Βακμολογίεσ, πουδαςτισ Where Μάκθμα.ΚΜ= Βακμολογίεσ.ΚΜ And πουδαςτισ.αεμ=βακμολογίεσ.αεμ And Βακμόσ>=5 And Πόλθ= ζρρεσ Να εμφανιςτοφν ποια μακιματα πζραςαν οι φοιτθτζσ. Select Distinct Σίτλοσ From Βακμολογίεσ, Μάκθμα, Βακμολογίεσ Where Μάκθμα.ΚΜ= Βακμολογίεσ.ΚΜ And πουδαςτισ.αεμ=βακμολογίεσ.αεμ And Βακμόσ>=5 Distinct= Ζχει τθν ιδιότθτα όποια εγγραφι διπλόεμφανίηεται να μθν τθν εμφανίηει 11
Ερωτιματα φηευξθσ Η SQL--92 υποςτθρίηει διάφορουσ τφπουσ ςφηευξθσ που ςυνικωσ χρθςιμοποιοφνται ςτο from, αλλά μποροφν να χρθςιμοποιθκοφν οπουδιποτε μπορεί να χρθςιμοποιθκεί μια ςχζςθ. Σφποι ςφηευξθσ : inner join: εςωτερικι (κιτα) ςυνζνωςθ left outer join: αριςτερι εξωτερικι ςυνζνωςθ right outer join full outer join 12
Ερωτιματα φηευξθσ Να εμφανίςετε τον τίτλοσ του μακιματοσ και τον βακμό. Select Σίτλοσ, Βακμόσ From Βακμολογίεσ inner join Μάκθμα On Μάκθμα.ΚΜ= Βακμολογίεσ.ΚΜ Να εμφανιςτοφν τα επίκετα των φοιτθτϊν που γράφουν κάτω από τθ βάςθ. Select Επίκετο From Βακμολογίεσ inner join πουδαςτισ On πουδαςτισ.αεμ= Βακμολογίεσ.ΑΕΜ And Βακμόσ>5 13
Ερωτιματα φηευξθσ Να εμφανίςετε τισ βακμολογίεσ με τα μακιματα που πζραςαν οι φοιτθτζσ από ζρρεσ. Select From Where Επίκετο, Όνομα, Σίτλοσ, Βακμόσ Βακμολογίεσ inner join (Μάκθμα inner join Βακμολογίεσ on πουδαςτισ.αεμ=βακμολογίεσ.αεμ ) οn Μάκθμα.ΚΜ= Βακμολογίεσ.ΚΜ Βακμόσ>=5 And Πόλθ= ζρρεσ 14
select Βαθμολογία.*, Σπουδαστής.* from Βαθμολογία As B Left JOIN Σπουδαστής As Σ on B.AEM = Σ.ΑΕΜ Σμιμα ΣΕ 15
Ερωτιματα ςτθ ΒΔ ΕΟΠΤΤ Σμιμα ΣΕ 16
Ερωτιματα ςτθ ΒΔ ΕΟΠΤΤ Να εμφανίςετε το ιςτορικό του κάκε αςκενοφσ SELECT ΑΘΕΝΗ.ΑΜΚΑ, ΑΘΕΝΗ.ΕΠΙΘΕΣΟ, ΑΘΕΝΗ.ΟΝΟΜΑ, ΗΜΕΡΟΜΗΝΙΑ, ΙΙΑΣΡΟ.ΕΠΙΘΕΣΟ, ΙΙΑΣΡΟ.ΟΝΟΜΑ, ΕΙΔΙΚΟΣΗΣΑ,ΠΕΡΙΓΡΑΦΗ, TIMH, ΔΟΟΛΟΓΙΑ FROM ΦΑΡΜΑΚΟ INNER JOIN ((ΙΙΑΣΡΟ INNER JOIN (ΑΘΕΝΗ INNER JOIN ΕΠΙΚΕΨΗ ON ΑΘΕΝΗ.ΑΜΚΑ = ΕΠΙΚΕΨΗ.ΑΜΚΑ) ON ΙΙΑΣΡΟ.ΚΙ = ΕΠΙΚΕΨΗ.ΚΙ) INNER JOIN ΤΝΣΑΓΟΓΡΑΦΗΗ ON ΕΠΙΚΕΨΗ.ΚΕ = ΤΝΣΑΓΟΓΡΑΦΗΗ.ΚΕ) ON ΦΑΡΜΑΚΟ.ΚΦ = ΤΝΣΑΓΟΓΡΑΦΗΗ.ΚΦ; Σμιμα ΣΕ 17
Ερωτιματα ςτθ ΒΔ ΕΟΠΤΤ Να εμφανίςετε το ιςτορικό του κάκε αςκενοφσ (ME WHERE) SELECT ΑΘΕΝΗ.ΑΜΚΑ, ΑΘΕΝΗ.ΕΠΙΘΕΣΟ, ΑΘΕΝΗ.ΟΝΟΜΑ, ΗΜΕΡΟΜΗΝΙΑ, ΙΙΑΣΡΟ.ΕΠΙΘΕΣΟ, ΙΙΑΣΡΟ.ΟΝΟΜΑ, ΕΙΔΙΚΟΣΗΣΑ,ΠΕΡΙΓΡΑΦΗ, TIMH, ΔΟΟΛΟΓΙΑ FROM ΦΑΡΜΑΚΟ, ΙΙΑΣΡΟ, ΑΘΕΝΗ,ΕΠΙΚΕΨΗ, ΤΝΣΑΓΟΓΡΑΦΗΗ WHERE ΑΘΕΝΗ.ΑΜΚΑ = ΕΠΙΚΕΨΗ.ΑΜΚΑ AND ΙΙΑΣΡΟ.ΚΙ = ΕΠΙΚΕΨΗ.ΚΙ AND ΕΠΙΚΕΨΗ.ΚΕ = ΤΝΣΑΓΟΓΡΑΦΗΗ.ΚΕ AND ΦΑΡΜΑΚΟ.ΚΦ = ΤΝΣΑΓΟΓΡΑΦΗΗ.ΚΦ; Σμιμα ΣΕ 18
Ερωτιματα ςτθ ΒΔ ΕΟΠΤΤ Να εμφανίςετε το AMKA, ΕΠΙΘΕΣΟ, ΟΝΟΜΑ, ΗΜΕΡΟΜΗΝΙΑ Σων αςφαλιςμζνων που ζκαναν επιςκζψεισ το 2013 SELECT ΑΘΕΝΗ.ΑΜΚΑ, ΕΠΙΘΕΣΟ, ΟΝΟΜΑ, ΗΜΕΡΟΜΗΝΙΑ FROM ΑΘΕΝΗ,ΕΠΙΚΕΨΗ WHERE ΑΘΕΝΗ.ΑΜΚΑ = ΕΠΙΚΕΨΗ.ΑΜΚΑ AND ΗΜΕΡΟΜΗΝΙΑ BETWEEN (#1-1-2013# AND #31-12-2013#) ι ι AND ΗΜΕΡΟΜΗΝΙΑ >=#1-1-2013# AND ΗΜΕΡΟΜΗΝΙΑ <=#31-12-2013# AND YEAR(ΗΜΕΡΟΜΗΝΙΑ)=2013 Σμιμα ΣΕ 19
Ερωτιματα ςτθ ΒΔ ΕΟΠΤΤ Να εμφανίςετε με SQL τουσ Καρδιολόγουσ Ιατροφσ που εξζταηαν ςε επιςκζψεισ τον 12 μινα του 2013 SELECT ΙΑΣΡΟ.ΚΙ, ΕΠΙΘΕΣΟ, ΟΝΟΜΑ, ΕΙΔΙΚΟΣΗΣΑ, ΗΜΕΡΟΜΗΝΙΑ FROM ΙΑΣΡΟ,ΕΠΙΚΕΨΗ WHERE ΙΑΣΡΟ.ΚΙ= ΕΠΙΚΕΨΗ.ΚΙ AND ΕΙΔΙΚΟΣΗΣΑ= ΚΑΡΔΙΟΛΟΓΟ AND ΗΜΕΡΟΜΗΝΙΑ BETWEEN (#1-12-2013# AND #31-12-2013#) ι ι AND ΗΜΕΡΟΜΗΝΙΑ >=#1-12-2013# AND ΗΜΕΡΟΜΗΝΙΑ <=#31-12-2013# AND ΜΟΝΣΗ(ΗΜΕΡΟΜΗΝΙΑ)=12 AND YEAR(ΗΜΕΡΟΜΗΝΙΑ)=2013 Σμιμα ΣΕ 20
Ερωτιματα ςτθ ΒΔ ΕΟΠΤΤ Να εμφανίςετε με SQL τουσ Ιατροφσ που ςυνταγογράφθςαν το 2013 το φάρμακο DEPON SELECT ΙΑΣΡΟ.ΚΙ, ΕΠΙΘΕΣΟ, ΟΝΟΜΑ, ΕΙΔΙΚΟΣΗΣΑ FROM ΙΑΣΡΟ,ΕΠΙΚΕΨΗ, ΦΑΡΜΑΚΟ WHERE ΙΑΣΡΟ.ΚΙ= ΕΠΙΚΕΨΗ.ΚΙ AND ΕΠΙΚΕΨΗ.ΚΕ=ΤΝΣΑΓΟΓΡΑΦΗΗ.ΚΕ ΑΝD ΤΝΑΣΑΓΟΓΡΑΦΗΗ.ΚΦ=ΦΑΡΜΑΚΟ.ΚΦ AND ΠΕΡΙΓΡΑΦΗ= DEPON AND ΗΜΕΡΟΜΗΝΙΑ BETWEEN (#1-1-2013# AND #31-12-2013#) 21