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

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

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

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

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


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


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


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

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

SQL Data Manipulation Language

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

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

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

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

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

ΘΕΜΑΤΑ. Ερώτηση 1 Κατά τη Φυσική Αποθήκευση (Physical storage) μιας ΒΔ αποθηκεύονται στον δίσκο τα:

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

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

Παράδειγμα Select Introduction Group By Join Aliases.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (3)

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

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

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

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

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

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

Βάσεις Δεδομέμωμ. Εξγαζηήξην V. Τκήκα Πιεξνθνξηθήο ΑΠΘ

ΟΝΟΜΑΤΕΠΩΝΥΜΟ : Αντικείμενα: Βάσεις δεδομένων, σχέσεις μεταξύ πινάκων, ερωτήματα, φόρμες και αναφορές.

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

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

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

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

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

SQL Server 2005 Tutorial Αςκήςεισ. Γεράσιμος Μαρκέτος InfoLab, Τμήμα Ρληροφορικήσ, Ρανεπιςτήμιο Ρειραιϊσ (

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

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

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

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

Εισαγωγή στην πληροφορική

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

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

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

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

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

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

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

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

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

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

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

Διάλεξη 16: SQL DML IV, SQL DCL, SQL TCL. Διδάσκων: Παναγιώτης Ανδρέου

ΕΝΗΜΕΡΩΣΗ ΔΕΔΟΜΕΝΩΝ. UPDATE products SET prod_fpa=19 WHERE prod_fpa=23; SELECT prod_descr,purchase,purchase_date FROM products WHERE prod_fpa=9;

DELETE, UPDATE, INSERT.

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #6

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

DELETE, UPDATE, INSERT

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

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

Εργαστήριο βάσεων δεδομένων. Εισαγωγή στη MySQL (2)

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

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

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

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

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

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

1 / 97

1 / 87

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

Η γλώσσα SQL. Βάσεις Δεδομένων : SQL 1

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

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

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

MOCϦϣΎϬϴϠϋϝϮμΤϟϢΗϊΟήϤϟ. USE northwind SELECT employeeid, lastname, firstname, title FROM employees GO

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #3

Εργαστήριο βάσεων δεδομένων. Εισαγωγή στη MySQL (2)

Εξεταστική Περίοδος Ιουνίου 2004

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

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

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

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

Εργαστήριο Σημασιολογικού Ιστού

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

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

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

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

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

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

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

Η Γλώσσα SQL. What is the average salary in the Toy department? Anonymous SQL user

Το θύρηο κέρος ηοσ σιηθού προέρτεηαη από δηαθάλεηες ηοσ Δ. Καηζίθαροσ ( ηολ οποίο εσταρηζηούκε ζερκά

Κεφάλαιο 8 Εμφωλευμένα Ερωτήματα

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

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

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

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

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

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

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

1 / 150

Transcript:

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

2 ο Σύνολο Ασκήσεων Άσκηση 3 Οι λύσεις είναι ενδεικτικές υπάρχουν και άλλες σωστές SQL ερωτήσεις για τα ερωτήματα της άσκησης. 2

(γ)(i) Τους φοιτητές που έχουν παραπάνω από 5 χρόνια σπουδών και δεν έχουν σύμβουλο καθηγητή. (γ)(ii) Τους καθηγητές που διδάσκουν το ίδιο μάθημα με (τουλάχιστον) έναν φοιτητή του οποίου είναι σύμβουλοι. (γ)(iii) Το κενό πίνακα αν και μόνο αν η συμμετοχή των φοιτητών στη σχέση advisedby δεν είναι ολική. (γ)(iv) Το μέσο χρόνο σπουδών των φοιτητών που διδάσκουν τουλάχιστον δύο μαθήματα. (γ)(v) Για κάθε καθηγητή τον αριθμό των φοιτητών που επιβλέπει. Για τους καθηγητές που δεν επιβλέπουν κανένα καθηγητή να εμφανίζεται ο αριθμός 0. (γ)(vi) [προαιρετικό ερώτημα] Για κάθε στάδιο σπουδών, το μέσο όρο ετών σπουδών των φοιτητών που βρίσκονται σε αυτό σε φθίνουσα διάταξη ως προς αυτόν τον μέσο όρο. 3

(γ)(i) Τους φοιτητές που έχουν παραπάνω από 5 χρόνια σπουδών και δεν έχουν σύμβουλο καθηγητή. select ST.s_id from (select s_id from student where yearsinprogram > 5) as ST where ST.s_id not in (select s_id from advisedby); select student.s_id from student left join advisedby on student.s_id = advisedby.s_id (ή student natural left join student) where student.yearsinprogram > 5 and advisedby.s_id = null; 4

(γ)(ii) Τους καθηγητές που διδάσκουν το ίδιο μάθημα με (τουλάχιστον) έναν φοιτητή του οποίου είναι σύμβουλοι. select distinct A.pid from taugthby as T1, taughtby as T2, advisedby as A where T1.course_id = T2.course_id and T1.u_id = A.s_id and T2.u_id = A.p_id; 5

(γ)(iii) Το κενό πίνακα αν και μόνο αν η συμμετοχή των φοιτητών στη σχέση advisedby δεν είναι ολική. select * from student where not exists (select * from student where s_id not in (select s_id from advised by); Το εσωτερικό κενό αν και μόνο αν η σχέση είναι μερική, δηλαδή υπάρχει κάποιος φοιτητής που δεν εμφανίζεται στην advisedby not exists TRUE αν κενή η εσωτερική (δηλαδή, μερική) FALSE αν ολική 6

(γ)(iv) Το μέσο χρόνο σπουδών των φοιτητών που διδάσκουν τουλάχιστον δύο μαθήματα. select average(s.yearinprogram) from (select s_id, count(course_id) Φοιτητές που διδάσκουν from taughtby as T, student as S τουλάχιστον 2 μαθήματα where T.u_id = s_id group by s_id having count(course_id) >=2) as T, student as S where S_s_id = T_s_id; select average(s.yearinprogram) from (select s_id, count(course_id) from taughtby as T, student as S where T.u_id = s_id group by s_id having count(course_id) >=2) natural join S; 7

(γ)(v) Για κάθε καθηγητή τον αριθμό των φοιτητών που επιβλέπει. Για τους καθηγητές που δεν επιβλέπουν κανένα καθηγητή να εμφανίζεται ο αριθμός 0. (select p_id, count(s_id) from advisedby group by p_id) union (select p_id, 0 from professor where p_id not in (select p_id from advisedby); Θα μπορούσε και με εξωτερική συνένωση, αλλά όχι τόσο «καθαρή» η ερμηνεία του count select p_id, count(s_id) from advisedby natural right join professor group by professor.pid; 8

(γ)(vi) [προαιρετικό ερώτημα] Για κάθε στάδιο σπουδών, το μέσο όρο ετών σπουδών των φοιτητών που βρίσκονται σε αυτό σε φθίνουσα διάταξη ως προς αυτόν τον μέσο όρο. select inphase, average(yearsinprogram) from student group by inphase ordered by average(yearsinprogram) desc; 9

(δ) Δώστε την SQL έκφραση που να έχει ως αποτέλεσμα αύξηση κατά ένα των ετών σπουδών των φοιτητών που δεν διδάσκουν κάποιο μάθημα. update student set yearsinprogram = yearsinprogram +1 where student.s_id not in (select u_id from taughtby); 10

(ε) Τα παρακάτω ερωτήματα αφορούν στην χρήση όψεων. (i) Ορίστε μια όψη professor-count(p_id, c_count) που να περιέχει για κάθε καθηγητή που διδάσκει ένα μάθημα τον αριθμό των μαθημάτων που διδάσκει. Δείτε το περιεχόμενο αυτής της όψης, χρησιμοποιώντας το select * from professor-count. (ii) Εισάγετε δυο πλειάδες στη σχέση taughtby. Δείτε το περιεχόμενο της όψης μετά την εισαγωγή χρησιμοποιώντας πάλι το select * from professor-count. (ii) Είναι η παραπάνω όψη τροποποιήσιμη (updatable); Εξηγείστε. create view professorcount(p_id, c_count) as select u_id, count(course_id) from taughtby where u_id in (select p_id from professor) group by u_id; create view professorcount(p_id, c_count) as select u_id, count(course_id) from taughtby inner join professor on taughby.u_id = professor.p_id group by u_id; 11