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

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

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

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

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

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

Βάσεις Δεδομένων Ι. Παραδείγματα. Γεώργιος Ευαγγελίδης, Καθηγητής Τμήμα Εφαρμοσμένης Πληροφορικής

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

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

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

PHP 3. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

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


SQL Data Manipulation Language

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

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

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

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

ΒΟΗΘΗΤΙΚΕΣ ΣΗΜΕΙΩΣΕΙΣ

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Ενότητα 3:

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

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

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

ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα. Συστήματα Αυτομάτου Ελέγχου. Ενότητα Α: Γραμμικά Συστήματα

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

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


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

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

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 2: Μοντελο Συσχετίσεων Οντοτήτων, Μελέτη Περίπτωσης: Η βάση δεδομένων των CD

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

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

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

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

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

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

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

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

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

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

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

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

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

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

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

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Αντώνης Χρυσόπουλος Στέλιος Μόσχογλου Θεοδόσης Σουργκούνης MYSQL PHP ADVANCED. Χέρι χέρι με τον Καρατζαφέρη

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

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

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

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

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

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

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Λογιστικές Εφαρμογές Εργαστήριο

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

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Κεφάλαιο 7 Η Πράξη της Συνένωσης

Αυτοματοποιημένη χαρτογραφία

Διαδικαστικός Προγραμματισμός

Υπολογιστικά & Διακριτά Μαθηματικά

ΣΤΑΤΙΣΤΙΚΗ ΑΝΑΛΥΣΗ ΜΕ ΧΡΗΣΗ Η/Υ

Γενικά Μαθηματικά Ι. Ενότητα 15: Ολοκληρώματα Με Ρητές Και Τριγωνομετρικές Συναρτήσεις Λουκάς Βλάχος Τμήμα Φυσικής

Θεωρία Πιθανοτήτων & Στατιστική

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

Αυτοματοποιημένη χαρτογραφία

Βιομηχανικοί Ελεγκτές

Certified Data Base Designer (CDBD)

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

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

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών

Lecture 16: SQL DML III

Μοντελοποίηση Λογικών Κυκλωμάτων

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

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

ΜΑΘΗΜΑ: ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ(Visual Basic)

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

ΓΡΑΜΜΙΚΟΣ & ΔΙΚΤΥΑΚΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Βάςεισ Δεδομζνων Ι. Ενότθτα 11: SQL-Ερωτιματα Ομαδοποίθςθσ με υνζνωςθ Πινάκων. Δρ. Σςιμπίρθσ Αλκιβιάδθσ Σμιμα Μθχανικϊν Πλθροφορικισ ΣΕ

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

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

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

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

Διαδικτυακές Εφαρμογές Ενότητα 7: Προσπέλαση ΒΔ με το JDBC

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

Βάσεις Δεδομένων Ενότητα 6

Αλγόριθμοι και Δομές Δεδομένων(Θ) Ευάγγελος Γ. Ούτσιος

τατιςτική ςτην Εκπαίδευςη II

ΤΕΧΝΗΤΗ ΝΟΗΜΟΣΥΝΗ. Ενότητα 11: Λογική πρώτης τάξης. Ρεφανίδης Ιωάννης Τμήμα Εφαρμοσμένης Πληροφορικής

Ιστορία της μετάφρασης

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

Μικροβιολογία & Υγιεινή Τροφίμων

Οργανωσιακή Συμπεριφορά Ενότητα 1: Η έννοια της οργάνωσης και διοίκησης

Πληροφορική. Εργαστηριακή Ενότητα 3 η : Επεξεργασία Κελιών Γραμμών & Στηλών. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

ΣΤΑΤΙΣΤΙΚΗ ΕΠΙΧΕΙΡΗΣΕΩΝ

Transcript:

Ενότητα 6: SQL (Συζεύξεις, Εμφώλευση, Ομαδοποίηση) Ευαγγελίδης Γεώργιος

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Πανεπιστήμιο Μακεδονίας» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

Σκοποί ενότητας σύζευξη υπό συνθήκη, εξωτερικές συζεύξεις, συναθροιστικά αιτήματα, ομαδοποίηση 4

Query 01 -- σύζευξη υπό συνθήκη (εδώ φυσική σύζευξη) select distinct * from performer, track where performer.pid = track.pid; 5

Query 02 -- εναλλακτικός τρόπος γραφής (δουλεύει και -- χωρίς το inner) select distinct name, cid from performer inner join track on performer.pid = track.pid; 6

Query 03 -- η επιπλέον συνθήκη μπορεί να μπει και στο on select distinct * from performer inner join track on performer.pid = track.pid and cid < 5; 7

Query 04 -- τίτλοι cd με ονόματα ερμηνευτών -- ΠΡΟΣΟΧΗ: δεν δουλεύει στην Oracle - -- η σύζευξη είναι δυαδική πράξη select distinct ctitle, name from (cd c join track t on c.cid=t.cid) join performer p on t.pid=p.pid; select distinct ctitle, name from performer p, cd, track t where p.pid=t.pid and cd.cid=t.cid; 8

Query 05 -- φυσική σύζευξη η οποία κρατά μόνο ένα -- αντίγραφο της κοινής στήλης (όπως στη -- σχεσιακή άλγεβρα!) select distinct * from performer natural join track; 9

Query 06 -- φυσική σύζευξη με χρήση του using -- (καλύτερη πρακτική) select distinct * from performer join track using(pid); 10

Query 07 -- ζεύγη cd που κυκλοφόρησαν την ίδια χρονιά -- (από το προηγούμενο μάθημα) select c1.ctitle, c1.year, c2.ctitle, c2.year from cd c1, cd c2 where c1.year = c2.year and c1.cid < c2.cid; 11

Query 08 -- σύζευξη πίνακα με τον εαυτό του με using select c1.ctitle, c1.year, c2.ctitle, c2.year from cd c1 join cd c2 using (year) where c1.cid > c2.cid; 12

Query 09 -- φυσική σύζευξη πίνακα με τον εαυτό του select * from cd c1 natural join cd c2; 13

Query 10 -- η φυσική σύζευξη επιστρέφει μόνο τις -- ταιριαστές εγγραφές select ctitle, year, name from cd inner join company using(comid); 14

Query 11 -- left outer join για να πάρουμε όλες τις -- εγγραφές των cd -- μπορούμε να παραλείψουμε το outer -- μπορούμε να χρησιμοποιήσουμε -- natural left join select ctitle, year, name from cd left outer join company using(comid); 15

Query 12 -- τρόπος υλοποίησης left join αν δεν -- υποστηρίζεται από το DBMS select ctitle, year, name from cd join company using(comid) union select ctitle, year, NULL from cd where comid not in (select comid from company); 16

Query 13 -- right outer join για να πάρουμε όλες τις -- εγγραφές των εταιριών select ctitle, year, name from cd right join company using(comid); 17

Query 14 -- τρόπος υλοποίησης right join αν δεν -- υποστηρίζεται από το DBMS select ctitle, year, name from company join cd using(comid) union select null, null, name from company where not comid in (select comid from cd); 18

Query 15 -- full outer join -- ΠΡΟΣΟΧΗ: δεν υποστηρίζεται από την MySQL select ctitle, year, name from cd full outer join company using(comid); 19

Query 16 -- τρόπος υλοποίησης full outer join αν δεν -- υποστηρίζεται από το DBMS select ctitle, year, name from cd left join company using(comid) union select ctitle, year, name from cd right join company using(comid); 20

Query 17 -- τρόπος υλοποίησης full outer join χωρίς -- συζεύξεις select ctitle, year, name from cd, company where cd.comid = company.comid union select ctitle, year, NULL from cd where comid not in (select comid from company) union select null, null, name from company where not comid in (select comid from cd); 21

Query 18 -- αιτήματα συνάθροισης -- (avg, max, min, sum, count) select avg(year) from cd; 22

Query 19 -- μέση χρονιά κυκλοφορίας των cd της Adele select avg(year) from (cd join track using(cid)) join performer using(pid) where name = 'Adele'; 23

Query 20 -- η σωστή εκδοχή του Query 19 select avg(year) from cd where cid in (select cid from track join performer using(pid) where name = 'Adele'); 24

Query 21 -- πλήθος εγγραφών που ικανοποιούν συνθήκη select count(*) from cd where ctitle > 'k'; 25

Query 22 -- πλήθος ερμηνευτών που ερμηνεύουν κομμάτια select count(pid) from track; 26

Query 23 -- ενδιαφέρουσα χρήση του count στη where -- (δοκιμάστε και με >=, >) select * from performer p1, performer p2 where (select count(pid) from track where pid = p1.pid) = (select count(pid) from track where pid = p2.pid) and p1.pid > p2.pid; 27

Query 24 -- έλεγχος πλήθους δυο ομάδων που -- δημιουργούνται στο from select AtoJ.tracks >= KtoZ.tracks from (select count(pid) as tracks from performer join track using(pid) where name < 'k') AtoJ, (select count(pid) as tracks from performer join track using(pid) where name >= 'k') KtoZ; 28

Query 25 -- το ίδιο με το Query 24 αλλά -- με τα υπο-αιτήματα στο select select (select count(pid) as tracks from performer join track using(pid) where name < 'k') >= (select count(pid) as tracks from performer join track using(pid) where name >= 'k') as result from cd; 29

Query 26 -- ομαδοποίηση select cid, count(*) from track group by cid; 30

Query 27 -- άλλη μια ομαδοποίηση με χρήση -- συναρτήσεων αλφαριθμητικών select substring(stitle,1,1), count(*) cnt from song group by substring(stitle,1,1) order by cnt desc; 31

Query 28 -- πιο πολύπλοκη ομαδοποίηση select pid, name, count(*) from performer p join track t using(pid) where name > 'K' group by pid; 32

Query 29 -- ομαδοποίηση δυο επιπέδων select cid, substring(stitle,1,1) letter, count(*) cnt from track join song using(sid) group by cid, substring(stitle,1,1); 33

Query 30 -- προσοχή στο τί μετράμε select year, count(distinct cid) from cd join track using(cid) group by year; 34

Query 31 -- πως εμφανίζουμε αυτά που δεν -- συμμετέχουν σε μια σύζευξη select comid, count(*) from cd join company using (comid) group by comid union select comid, 0 from company where comid not in (select comid from cd); 35

Query 32 -- συνθήκη σε επίπεδο ομάδας (having) select cid from track group by cid having count(*) > 13; 36

Query 33 -- εναλλακτική σύνταξη χωρίς group by... having select distinct cid from track t1 where 13 < (select count(*) from track t2 where t1.cid = t2.cid); 37

Query 34 -- τα cd που έχουν πλήθος κομματιών μεγα- -- λύτερο από τον μέσο όρο κομματιών ανά cd select cid, count(*) from track group by cid having count(*) > (select avg(trackcount) from (select count(*) as trackcount from track group by cid) A); 38

Τέλος Ενότητας