SQL: Αιτήματα. ( Συνέχεια...) Κεφάλαιο 5. Ενηµέρωση: 23/12/2008. Database Management Systems, R. Ramakrishnan and J. Gehrke

Σχετικά έγγραφα
SQL: Αιτήματα. Κεφάλαιο 5. Database Management Systems, R. Ramakrishnan and J. Gehrke

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

Σχεσιακή Άλγεβρα. Κεφάλαιο 4. Database Management Systems, R. Ramakrishnan and J. Gehrke

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗΝ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο Διδάσκων Καθ.: Νίκος Τσαπατσούλης

Query-by-Example (QBE)

SQL Data Manipulation Language

Αρχεία και Βάσεις Δεδομένων

Η SQL ως γλώσσα ερωτημάτων. Υπενθυμίζουμε: Σχέση = Πίνακας Πλειάδα = Εγγραφή = Γραμμή (Πίνακα) Πεδίο = Γνώρισμα (Σχέσης) = Στήλη (Πίνακα)

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 6: SQL (Συζεύξεις, Εμφώλευση, Ομαδοποίηση) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Βάσεις Δεδομένων. Εργαστήριο ΙV. Τμήμα Πληροφορικής ΑΠΘ

GROUP BY, HAVING, COUNT, MIN, MAX, SUM, AVG, ROLLUP.

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples ΙΙ Ξένου Ρουμπίνη

Η Γλώσσα SQL. Μέρος α. Η Γλώσσα SQL Σελίδα 1

Κεφάλαιο 10 Άλλες Πράξεις Θεωρίας Συνόλων

( Boats)) ( Tempsids, bid. sname. Boats. Boats. Boats. (Reserves)/ > Reserves. Interlake' Sailors) ...

Ηλεκτρονικοί Υπολογιστές II

BΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΞΕΤΑΣΗ ΦΕΒΡΟΥΑΡΙΟΥ 2013

Σύνολα Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 7α: SQL (NULL, Διαίρεση) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Βάσεις Δεδομένων (Databases)

DISTINCT, LIKE, NULL, AND, OR, BETWEEN

Βάσεις δεδομένων. (7 ο μάθημα) Ηρακλής Βαρλάμης


Ηλεκτρονικοί Υπολογιστές II

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Εισαγωγή στη Σχεσιακή Άλγεβρα

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 5: SQL (Απλή SELECT) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Η Άλγεβρα των πινάκων στο γραφικό περιβάλλον SQL Query Builder του Data Studio

Βάσεις Δεδομένων (Databases)

Διαχείριση Πολιτισμικών Δεδομένων

ΕΣΔ 232: ΟΡΓΑΝΩΣΗ ΔΕΔΟΜΕΝΩΝ ΣΤΗ ΚΟΙΝΩΝΙΑ ΤΗΣ ΠΛΗΡΟΦΟΡΙΑΣ. Ακαδημαϊκό Έτος , Εαρινό Εξάμηνο. Εργαστηριακή Άσκηση 5 21/02/2012

PROJECT ΕΡΓΑΣΤΗΡΙΩΝ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ Ι. Τμήμα Μηχανικών Πληροφορικής Τ.Ε.

Διάλεξη 13: Γλώσσα Επεξεργασίας Δεδομένων/ Data Manipulation Language (SQL DML) I. Διδάσκων: Παναγιώτης Ανδρέου

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 7β: SQL (Πρακτική Εξάσκηση 1) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

2 ο Σύνολο Ασκήσεων. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Βάσεις Δεδομένων. Βασίλειος Βεσκούκης Εισαγωγή στη γλώσσα SQL (Structured Query Language) Η γλώσσα SQL

Βάσεις Δεδομένων Σύνθετα SQL queries

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 8: SQL (Πρακτική Εξάσκηση 2) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

Η Άλγεβρα των πινάκων στο γραφικό περιβάλλον SQL Query Builder του Data Studio

Βάσεις εδοµένων Ευαγγελία Πιτουρά 2

Διδάσκων: Παναγιώτης Ανδρέου

Βάσεις Δεδομένων Σύνθετα SQL queries. Ψευδώνυμα (Aliases) (2) Ψευδώνυμα (Aliases) (1) Ασάφεια και Πλήρη Ονόματα. Ερώτημα χωρίς τον όρο WHERE (1)

S Q Q L L -- SQL (Structured Query Language) select insert update delete 2.47

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ342: Βάσεις Δεδομένων. Χειμερινό Εξάμηνο Φροντιστήριο 10 ΛΥΣΕΙΣ. Επερωτήσεις SQL

Βάσεις Δεδομένων Ι SQL Μέρος 2 ο. Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

Βάσεις δεδομένων. (6 ο μάθημα) Ηρακλής Βαρλάμης

Βάσεις Δεδομένων (Databases)

Εαρινό Εξάμηνο

SQL: Συναρτήσεις Συνάθροισης

Βάσεις Δεδομένων Προχωρημένα Ερωτήματα SQL

Βάσεις Περιβαλλοντικών Δεδομένων

SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Βάσεις Δεδομένων. Ενότητα 7.1: Structured Query Language - 1 ο Μέρος. Αθανάσιος Σπυριδάκος Τμήμα Διοίκησης Επιχειρήσεων

Κεφάλαιο 9 Συναθροίσεις

Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός. Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός

SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) ΤΕΙ ΔυτικήςΜακεδονίας

Βάσεις δεδομένων. (8 ο μάθημα) Ηρακλής Βαρλάμης

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ ΣΧΟΛΗ ΕΠΙΣΤΗΜΩΝ ΤΗΣ ΙΟΙΚΗΣΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΟΙΚΟΝΟΜΙΑΣ ΚΑΙ ΙΟΙΚΗΣΗΣ ΣΤΟΧΑΣΤΙΚΑ ΜΟΝΤΕΛΑ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.

Τμήμα Πληροφορικής ΑΠΘ

Τεχνολογία Πολιτισμικού Λογισμικού

Σχεδιασμός Βάσεων Δεδομένων

Τελεστής Προβολής - Παράδειγμα. Π Πόλη, Εξάμηνο (Φοιτητές)

Εισαγωγή στην. Εισαγωγή Σ Β. Αρχεία ευρετηρίου Κατάλογος. συστήματος. Αρχεία δεδομένων

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ


Kεφ.2: Σχεσιακό Μοντέλο (επανάληψη) Κεφ.6.1: Σχεσιακή Άλγεβρα

Βάσεις Δεδομένων (Databases)

ΘΕΜΑΤΑ. Θέμα 1 ο Σύμφωνα με τους παραπάνω πίνακες και τη θέση που έχουν τα ξένα κλειδιά βρείτε τους

Το Σχεσιακό μοντέλο και η γλώσσα SQL

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Επιλέγει όλες τις πλειάδες, από μια σχέση R, που ικανοποιούν τη συνθήκη επιλογής.

Περιεχόμενα. Βάσεις Δεδομένων Προχωρημένα Ερωτήματα SQL. Συνένωση Σχέσεων στην SQL2 (3) Συνένωση Σχέσεων στην SQL2. (Join Relations Feature in SQL)

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

Σχεδίαση και λειτουργία βάσης δεδομένων Το παράδειγμα της μαιευτικής κλινικής Ευάγγελος Καρβούνης

Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας. 3ο Μάθημα: Εισαγωγή στην SQL. Δρ. Κωνσταντίνος Χ.

Βάσεις Δεδομένων. Σχεσιακό Μοντέλο Δεδομένων. Βασίλειος Βεσκούκης Ορισμός Βάσης Δεδομένων Δομή Περιορισμοί

Το σχεσιακό μοντέλο βάσεων δεδομένων

Σχεδίαση Βάσεων Δεδομένων

Κεφάλαιο 4. Η Γλώσσα SQL και Σχεσιακός Λογισµός. Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.46

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων

Τμήμα Διοίκησης Επιχειρήσεων

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ

Διάλεξη 14: Γλώσσα Επεξεργασίας Δεδομένων/ Data Manipulation Language (SQL DML) II. Διδάσκων: Παναγιώτης Ανδρέου

Βάσεις Δεδομένων Ι 8. Ερωτήματα (B) Τμήμα Διοίκησης Επιχειρήσεων (Μεσολόγγι) ΤΕΙ Δυτικής Ελλάδας

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ Relational Model. SQL Μαθ. #11

Κεφάλαιο 3. Ερωτήματα SQL

Διάλεξη 10: Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός (Relational Algebra/Calculus) ΙI

Πανεπιστήµιο Ιωαννίνων Τµήµα Μαθηµατικών Μάθηµα: Βάσεις εδοµένων (741) Εργαστηριακό Τεστ Οµάδα: Α 18/11/2004

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

SQL Data Manipulation Language

Επεξεργασία Ερωτήσεων

Transcript:

SQL: Αιτήματα ( Συνέχεια...) Κεφάλαιο 5 Ενηµέρωση: 23/12/2008 Database Management Systems, R. Ramakrishnan and J. Gehrke

Τελεστές Συνάθροισης Σημαντική π ροέκταση της σχεσιακής άλγεβρας. COUNT (*) COUNT ( [DISTINCT] A) SUM ( [DISTINCT] A) AVG ( [DISTINCT] A) MAX (A) MIN (A) μονό πεδίο

Τελεστές Συνάθροισης Υπ ολογισμός π λήθους ναυτών SELECT COUNT(*) Εύρεση μέσου όρου ηλικίας ναυτών με τιμή διατίμησης (rating) 10 SELECT AVG(S.age) WHERE S.rating=10 Υπ ολογισμός π λήθους διακριτών τιμών διατίμησης για ναύτες με όνομα Yiannis SELECT COUNT(DISTINCT S.rating) WHERE S.sname='Yiannis'

Τελεστές Συνάθροισης Εύρεση ονομάτων ναυτικών με τη μέγιστη τιμή διατίμησης SELECT S.sname WHERE S.rating= (SELECT MAX(S2.rating) 2) π Υ ολογισμός του μέσου όρου των διακριτών τιμών ηλικίας για ναύτες με τιμή διατίμησης 10 SELECT AVG(DISTINCT S.age) WHERE S.rating=10

Η Διαίρεση (1 απ ό 2) Ναυτικοί οι οπ οίοι έχουν κάνει κράτηση σε ΟΛΑ τα σκάφη SELECT S.sname WHERE NOT EXISTS ((SELECT B.bid FROM Boats B) EXCEPT (SELECT R.bid FROM Reserves R WHERE R.sid=S.sid))

Η Διαίρεση (2 απ ό 2) Ναυτικοί οι οπ οίοι έχουν κάνει κράτηση σε ΟΛΑ τα σκάφη SELECT S.sname... Ναυτικοί για τους οπ οίους... WHERE NOT EXISTS (SELECT B.bid FROM Boats B... δεν υπ άρχει σκάφος π ου... WHERE NOT EXISTS (SELECT R.bid FROM Reserves R WHERE R.bid=B.bid... να μην το έχουν κάνει κράτηση... AND R.sid=S.sid))

Εύρεση ονόματος και ηλικίας του αρχαιότερου ναύτη 1) SELECT S.sname, MAX(S.age) 2) SELECT S.sname, S.age WHERE S.age = (SELECT MAX(S2.age) 2) 3) SELECT S.sname, S.age WHERE (SELECT MAX(S2.age) 2) = S.age Πρόβληµα σύνταξης! (Θα εξηγήσουµε γιατί, όταν ασχοληθούµε µε την GROUP BY.) Το τρίτο είναι ισοδύναµο µε το δεύτερο και προβλέπεται από το πρότυπο SQL/92, αλλά δεν υποστηρίζεται από όλα τα συστήµατα.

GROUP BY και HAVING Μέχρι στιγμής εφαρμόσαμε τους τελεστές συνάθροισης σε όλες τις επ ιστρεφόμενες π λειάδες. Μερικές φορές είναι χρήσιμη η εφαρμογή τους σε ομάδες συνόλων π λειάδων. Π. χ.: Η ηλικία του νεαρότερου ναύτη σε κάθε επίπ εδο διατίμησης. Δεν είναι γνωστό ούτε το π λήθος των επιπ έδων, ούτε οι τιμές διατίμησης κάθε επιπ έδου! Ας υπ οθέσουμε ότι το π εδίο των τιμών διατίμησης ειναι απ ό 1 έως 10. Άρα χρειαζόμαστε 10 αιτήματα: For i = 1, 2,..., 10: SELECT MIN(S.age) WHERE S.rating = i

Αιτήματα με GROUP BY και HAVING SELECT [DISTINCT] λίστα-επιλογής FROM λίστα-σχέσεων WHERE καταλληλότητα GROUP BY λίστα-ομαδοποίησης HAVING καταλληλότητα-ομάδας Η λίστα-επιλογής π εριέχει (i) ονομασίες γνωρισμάτων (ii) όρους με τελεστές συνάθροισης (π. χ. MIN(S.age)). Οι ονομασίες γνωρισμάτων (i) πρέπ ει να είναι υπ οσύνολο της λίστας- ομαδοποίησης. Διαισθητικά, κάθε επ ιστρεφόμενη π λειάδα αντιστοιχεί σε μια ομάδα και τα γνωρίσματά της πρέπ ει να είναι μοναδικά για την ομάδα. ( Μια ομάδα είναι ένα σύνολο π λειάδων με την ίδια τιμή για κάθε γνώρισμα της λίστας-ομαδοποίησης).

Ιδεατή Στρατηγική Υπολογισμού Υ ολογίζεται το καρτεσιανό γινόμενο της λίστας-σχέσεων, οι ακατάλληλες π λειάδες απορρίπ τονται, τα π εριττά π εδία διαγράφονται και οι εναπ ομένουσες π λειάδες χωρίζονται σε ομάδες ανάλογα με τις τιμές των γνωρισμάτων της λίστας- ομαδοποίησης. π Η καταλληλότητα ομάδας εφαρμόζεται στη συνέχεια για τη διαγραφή ομάδων. Οι π αραστάσεις στην καταλληλότητα ομάδας πρέπ ει να έχουν μοναδική τιμή ανά ομάδα! Κατά συνέπ εια, ένα γνώρισμα το οπ οίο αναφέρεται στην καταλληλότητα-ομάδας οφείλει επ ίσης να εμφανίζεται στη λίστα-ομαδοποίησης ή να απ οτελεί ονοματισμό του απ οτελέσματος ενός τελεστή συνάθροισης. Μια π λειάδα επ ιστρέφεται για κάθε κατάλληλη ομάδα. 1

Να βρεθεί η ηλικία του νεότερου ενήλικα ναυτικού για κάθε τιμή διατίμησης με τουλάχιστο 2 ενήλικες ναυτικούς SELECT S.rating, MIN(S.age) WHERE S.age >= 18 GROUP BY S.rating HAVING COUNT(*) > 1 Μόνο τα S.rating και S.age αναφέρονται στις συνιστώσες SELECT, GROUP BY or HAVING. Περιττά τα άλλα γνωρίσματα. Η δεύτερη στήλη μπ ορεί να ονοματιστεί χρησιμοπ οιώντας το AS. sid sname rating age 22 dustin 7 45.0 31 lubber 8 55.5 71 zorba 10 16.0 64 horatio 7 35.0 29 brutus 1 33.0 58 rusty 10 35.0 rating age 1 33.0 7 45.0 7 35.0 8 55.5 10 35.0 rating 7 35.0 Σχέση αποτέλεσμα 1

1 Για κάθε κόκκινη βάρκα να βρεθεί ο συνολικός αριθμός κρατήσεών της SELECT B.bid, COUNT(*) AS scount, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND B.color='red' GROUP BY B.bid Ομαδοπ οίηση επ ί σύζευξης τριών σχέσεων. Τι θα συμβεί αν αφαιρέσουμε τη B.color='red' απ ό τη συνιστώσα WHERE και π ροσθέσουμε μια συνιστώσα HAVING με την ίδια συνθήκη; Τι θα συμβεί αν αφαιρέσουμε τη Sailors και τη συνθήκη του S.sid;

Να βρεθεί η ηλικία του νεότερου ενήλικα ναυτικού για κάθε τιμή διατίμησης με τουλάχιστο 2 ναυτικούς SELECT S.rating, MIN(S.age) WHERE S.age > 18 GROUP BY S.rating HAVING 1 < (SELECT COUNT(*) 2 WHERE S.rating=S2.rating) Η HAVING μπ ορεί να π εριέχει υπ οαίτημα. Σύγκριση αυτού του αιτήματος και του αιτήματος με τους δύο ενήλικες ναύτες! Τι θα συμβεί αν η HAVING αντικατασταθεί με: HAVING COUNT(*) >1 1

Να βρεθούν οι τιμές διατίμησης με τη νεότερη μέση τιμής ηλικίας ναύτη Οι λειτουργίες συνάθροισης δεν εμφωλεύονται! ΛΑΘΟΣ: SELECT S.rating WHERE S.age = (SELECT MIN(AVG(S2.age)) 2) Σωστή λύση ( στην SQL/92): SELECT Temp.rating, Temp.avgage FROM (SELECT S.rating, AVG(S.age) AS avgage GROUP BY S.rating) AS Temp WHERE Temp.avgage = (SELECT MIN(Temp.avgage) FROM Temp) 1

1 Τιμές NULL Οι τιμές των π εδίων των στηλών μπ ορεί να είναι άγνωστες (π. χ. η τιμή κάπ οιας διατίμισης δεν έχει οριστεί) ή ανύπαρκτες (π. χ. όνομα συζύγου ). Η SQL προβλέπ ει την ειδική τιμή null γι' αυτές τις περιπ τώσεις. Περιπ λέκονται κάπ οια ζητήματα: Ειδικοί τελεστές ελέγχου τιμών null και not null. Η rating>8 είναι αληθής ή ψευδής για null τιμές του rating; Τι συμβαίνει τότε με AND, OR και NOT; Χρειαζόμαστε λογική τριών τιμών (true, false και άγνωστη). Προσεκτικός ορισμός του νοήματος των δομικών στοιχείων. (π. χ. συνιστώσα WHERE: απορρίπ τει ό, τι δεν είναι true). Νέοι τελεστές ( συγκεκριμένα, στις εξωτερικές συζεύξεις).

Εξάσκηση Θεωρήστε τους π αρακάτω πίνακες Student(snum: integer, sname: sting, major: string, level: string, age: integer) Class(name: string, meets_at: time, room: string, fid: integer) Enrolled(snum: string, cname: string) Faculty(fid: integer, fname: string, deptid: integer) Ο π ίνακας Enrolled καταχωρεί μία γραμμή για κάθε ζεύγος φοιτητή- τάξης και αυτό αντιστοιχεί στην π ληροφορία ότι ο συγκεκριμένος φοιτητής έχει εγγραφεί και π αρακολουθεί τη συγκεκριμένη τάξη ( μάθημα). Ο π ίνακας Faculty απ οθηκεύει π ληροφορίες για το διδακτικό προσωπικό 1

1 Εξάσκηση Να εμφανιστούν τα καταχωρημένα εκπ αιδευτικά επίπ εδα (level) φοιτητών και δίπ λα στην κάθε τιμή επιπ έδου η μέση τιμή ηλικίας των φοιτητών οι οπ οίοι ανήκουν σε αυτό, εκτός απ ό το επίπ εδο level= JR SELECT S.level, AVG(S.age) FROM Student S WHERE S.level <> JR GROUP BY S.level

1 Εξάσκηση Να βρεθούν τα ονόματα όλων των τάξεων οι οπ οίες είτε διδάσκονται στην αίθουσα room= R128, είτε έχουν εγγραφεί σε αυτές για να τις π αρακολουθούν τουλάχιστον π έντε φοιτητές SELECT C.name FROM Class C WHERE C.room= R128 OR C.name IN (SELECT E.cname FROM Enrolled E GROUP BY E.cname HAVING COUNT(*) > 5)

1 Εξάσκηση Να βρεθούν τα ονόματα των μελών του εκπ αιδευτικού προσωπ ικού ο κάθε ένας απ ό τους οπ οίους διδάσκει ( σε όλες τις τάξεις του) σε ακροατήριο μικρότερο των π έντε φοιτητών SELECT DISTINCT F.fname FROM Faculty F WHERE 5 > ALL (SELECT COUNT(*) FROM Class C, Enrolled E WHERE C.name = E.cname AND C.fid = F.fid GROUP BY E.cname)

2 Περίληψη Η SQL απ οτέλεσε σημαντικό π αράγοντα για την απ οδοχη του σχεσιακού μοντέλου. Πιο φυσική απ ό π ροηγούμενες, διαδικαστικές γλώσσες αιτημάτων. Χαρακτηρίζεται απ ό σχεσιακή π ληρότητα. Έχει π ερισσότερες δυνατότητες απ ό τη σχεσιακή άλγεβρα. Αιτήματα π ου εκφράζονται σε ΣΑ εκφράζονται με φυσικότερο τρόπ ο σε SQL. Εναλλακτικοί τρόπ οι διατύπ ωσης αιτημάτων. Ο βελτιστοπ οιητής ανακαλύπ τει τον απ οδοτικότερο. Στην π ράξη ωστόσο οι χρήστες πρέπ ει να έχουν γνώση των σχεδίων βελτιστοπ οίησης.