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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Μαθηματικά. Ενότητα 7: Μη Πεπερασμένα Όρια. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

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


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

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

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

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

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

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

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

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

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

SQL Data Manipulation Language

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

ΜΑΘΗΜΑΤΙΚΑ ΓΙΑ ΟΙΚΟΝΟΜΟΛΟΓΟΥΣ

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

Επιχειρησιακή Έρευνα

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

Υδραυλικά & Πνευματικά ΣΑΕ

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

Πληροφοριακά Συστήματα & Περιβάλλον Ασκήσεις

Πληροφορική. Εργαστηριακή Ενότητα 1 η : Εισαγωγή στα Λογιστικά Φύλλα με το MS Excel. Ι. Ψαρομήλιγκος Τμήμα Λογιστικής & Χρηματοοικονομικής

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

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

Λογική. Δημήτρης Πλεξουσάκης. Ασκήσεις 2ου Φροντιστηρίου: Προτασιακός Λογισμός: Κανονικές Μορφές, Απλός Αλγόριθμος Μετατροπής σε CNF/DNF, Άρνηση

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

Οικονομικά Μαθηματικά

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

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

Μαθηματικά. Ενότητα 9: Όριο Συνάρτησης στο Διηνεκές. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

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

ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ. Λογισμός ΙΙ. Χρήστος Θ. Αναστασίου Τμήμα Μηχανικών Πληροφορικής ΤΕ

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

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

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

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

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Γενικά Μαθηματικά Ι. Ενότητα 1: Συναρτήσεις και Γραφικές Παραστάσεις. Λουκάς Βλάχος Τμήμα Φυσικής ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ

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

ΜΑΘΗΜΑΤΙΚΑ ΓΙΑ ΟΙΚΟΝΟΜΟΛΟΓΟΥΣ

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

Ανοικτά Ακαδημαϊκά Μαθήματα

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

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

Μαθηματικά. Ενότητα 2: Δεκαδικοί αριθμοί, κλάσματα, δυνάμεις, ρίζες και ποσοστά. Σαριαννίδης Νικόλαος Τμήμα Λογιστικής και Χρηματοοικονομικής

Τεχνολογίες & Εφαρμογές Πληροφορικής Ενότητα 6: Συμπίεση Windows

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

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

Εισαγωγή στους Αλγορίθμους

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

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

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

1 η Διάλεξη. Ενδεικτικές λύσεις ασκήσεων

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

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

Εισαγωγή στην Διοίκηση Επιχειρήσεων

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

Λογική Δημήτρης Πλεξουσάκης Φροντιστήριο 6: Προτασιακός Λογισμός: Μέθοδος Επίλυσης Τμήμα Επιστήμης Υπολογιστών

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

Θεσμοί Ευρωπαϊκών Λαών Ι 19 ος -20 ος αιώνας

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

Εισαγωγή στην Πληροφορική & τον Προγραμματισμό

Transcript:

Ενότητα 5: SQL (Απλή SELECT) Ευαγγελίδης Γεώργιος

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

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

Σκοποί ενότητας προβολή, επιλογή, κανονικές εκφράσεις, γινόμενο, φυσική σύζευξη, συναρτήσεις, ένωση, τομή, διαφορά, διπλότυπα, any, all, υπο-αιτήματα 4

Query 01 -- απλή προβολή πεδίων ενός πίνακα select pid, name from performer; 5

Query 02 -- συνθήκη επιλογής πάνω σε πίνακα και -- προβολή, δοκιμάστε και =, >=, <=, >, <, <> select pid, name from performer where pid > 5; 6

Query 03 -- συνθήκη συμμετοχής σε σύνολο select pid, name from performer where pid in (3, 4, 9); 7

Query 04 -- συνθήκη συμμετοχής σε διάστημα -- τιμών [α, β] select pid, name from performer where pid between 3 and 8; 8

Query 05 -- χρήση κανονικών εκφράσεων (reg exp) -- ΠΡΟΣΟΧΗ: η Oracle είναι case sensitive -- στις reg exp select pid, name from performer where name like '%adel%'; -- και '_adel%' 9

Query 06 -- προβολή όλων των πεδίων του πίνακα select * from cd; 10

Query 07 -- αληθής συνθήκη επιλογής (επιστρέφεται -- ολόκληρος ο πίνακας) -- δοκιμάστε με 5 = 2 select * from cd where 2 = 2; 11

Query 08 -- γινόμενο πινάκων select * from cd, track; 12

Query 09 -- φυσική σύζευξη select ctitle, pos from cd, track where cd.cid = track.cid; 13

Query 10 -- στη select χρειαζόμαστε performer.pid ή -- track.pid, αλλιώς υπάρχει ασάφεια για το ποιο -- pid μιλάμε -- χρήση distinct για απάλειψη διπλοτύπων select pid, name from performer, track where performer.pid = track.pid and pos > 11; 14

Query 11 -- όλοι οι τίτλοι τραγουδιών που βρίσκονται -- στη 10η θέση των cd select stitle, pid, cid from track, song where track.sid = song.sid and pos = 10; 15

Query 12 -- φυσική σύζευξη όλων των πινάκων και -- ταξινόμηση βάσει τίτλου τραγουδιού σε -- φθίνουσα σειρά - μπορούμε και πολλαπλή -- ταξινόμηση select name, ctitle, stitle, year from performer, song, track, cd where cd.cid = track.cid and performer.pid = track.pid and song.sid = track.sid order by stitle desc; 16

Query 13 -- τεχνητά πεδία στην απάντηση με χρήση -- συναρτήσεων και πράξεων select ctitle, ceil(year/100) from cd; 17

Query 14 -- ίδιο με το Query 12 αλλά με χρήση μεταβλητών -- ως εναλλακτικών ονομάτων πινάκων select name, ctitle, stitle, year from performer p, song s, track t, cd c where c.cid = t.cid and p.pid = t.pid and s.sid = t.sid; 18

Query 15 -- σύζευξη πίνακα με τον εαυτό του - αλλά -- παίρνω άχρηστη και περιττή πληροφορία -- πρώτα προσθέτω c1.cid <> c2.cid και μετά -- αλλάζω τη συνθήκη σε < ή > select c1.ctitle, c1.year, c2.ctitle, c2.year from cd c1, cd c2 where c1.year = c2.year; 19

Query 16 -- union και union all select ctitle from cd where ctitle like 'S%' union select stitle from song where stitle like 'S%' order by ctitle; 20

Query 17 -- τα cd που περιέχουν κάποιο ομώνυμο -- τραγούδι, intersect -- ΠΡΟΣΟΧΗ: η MySQL δεν υποστηρίζει το -- intersect select ctitle from cd intersect select stitle from song; 21

Query 18 -- εναλλακτική υλοποίηση του intersect select ctitle from song, cd where stitle = ctitle; 22

Query 19 -- τα cd που ΔΕΝ περιέχουν κάποιο ομώνυμο -- τραγούδι, difference -- ΠΡΟΣΟΧΗ: η MySQL δεν υποστηρίζει το -- except και η Oracle χρησιμοποιεί το minus select ctitle from cd except select stitle from song; 23

Query 20 -- εναλλακτική υλοποίηση του except -- (δεν λύνεται με σύζευξη) select distinct cd.ctitle from song, cd where stitle <> ctitle; 24

Query 21 -- εμφωλευμένo αίτημα με in, εναλλακτικός -- τρόπος για intersect select ctitle from cd where ctitle in (select stitle from song); 25

Query 22 -- εμφωλευμένo αίτημα, εναλλακτικός τρόπος -- για difference select ctitle from cd where ctitle not in (select stitle from song); 26

Query 23 -- τα cd που δεν είναι μοναδικά σε κάποια -- χρονιά - εμφωλευμένo αίτημα με exists, -- προσθήκη c1.cid <> c2.cid select * from cd c1 where exists (select * from cd c2 where c1.year = c2.year); 27

Query 24 -- εύρεση μεγαλύτερης (ή μικρότερης) χρονιάς select year from cd c1 where not exists (select * from cd c2 where c2.year > c1.year); 28

Query 25 -- πρώτα διπλότυπα, -- δεν υπάρχει λύση με σύζευξη select c1.ctitle, c1.year from cd c1, cd c2 where c1.year > c2.year; 29

Query 26 -- χρήση all, εύρεση max year -- ΠΡΟΣΟΧΗ: δεν δουλεύει στην Oracle εξαιτίας -- του NULL select ctitle, year from cd where year >= all (select year from cd); 30

Query 27 -- δουλεύει μόνο αν το max (ή min) year είναι -- μοναδικό και δεν έχουμε τιμές NULL!!! select ctitle, year from cd c1 where year < all (select year from cd c2 where c2.cid <> c1.cid); 31

Query 28 -- χρήση any, (< all) == (! >= any) select ctitle, year from cd c1 where not year >= any (select year from cd c2 where c2.year is not null and c2.cid <> c1.cid); 32

Query 29 -- οι ερμηνευτές που το όνομά τους είναι -- ταξινομικά μεγαλύτερο από όλους τους τίτλους -- cd που έχουν κυκλοφορήσει select * from performer p1 where name < all (select ctitle from cd c, track t where c.cid=t.cid and t.pid=p1.pid); 33

Query 30 -- ίδιο με το Query 29: μπορούμε και χωρίς το any -- και το all - χρησιμοποιούμε exists select * from performer p1 where not exists (select * from cd c, track t where c.cid=t.cid and t.pid=p1.pid and p1.name > c.ctitle); 34

Query 31 -- υλοποίηση του Query 22 (difference) με any -- αντί του exists - λάθος η συγκεκριμένη -- υλοποίηση, χρειάζεται "not ctitle = any" select ctitle from cd where ctitle <> any (select stitle from song); 35

Query 32 -- τα cd του 21 αιώνα select ctitle, ceil(year/100) from cd where ceil(year/100) > 20; 36

Query 33 -- όπως το Query 32 με select στο from! select ctitle, century from (select ctitle, ceil(year/100) as century from cd) cdnew where century > 20; 37

Query 34 -- για κάθε cd το τραγούδι με τον ταξινομικά -- μικρότερο τίτλο select ctitle, stitle from cd c, track t, song s where c.cid = t.cid and t.sid = s.sid and s.stitle <= all (select stitle from track t, song s where c.cid = t.cid and t.sid = s.sid); 38

Query 35 -- όπως το Query 34 με χρήση select στην select! -- (προσοχή στο distinct) select ctitle, (select distinct stitle from track t, song s where cd.cid = t.cid and t.sid = s.sid and s.stitle <= all (select stitle from track t, song s where cd.cid = t.cid and t.sid = s.sid)) as orderedfirst from cd; 39

Query 36 -- πρόβλημα όταν το υποερώτημα στην -- select επιστρέφει πολλές τιμές select ctitle, (select distinct stitle from track t, song s where cd.cid = t.cid and t.sid = s.sid) as songs from cd; 40

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