ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis SQL: Ερωτήματα, προγραμματισμός και εναύσματα ΕΣΔ232 – Οργάνωση Δεδομένων.

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΕΡΩΤΗΜΑΤΑ ΕΠΙΛΟΓΗΣ ΜΑΘΗΜΑ 6. SELECTSELECT SELECT * FROM όνομα_πίνακα ; • Με τη εντολή SELECT ανασύρουμε δεδομένα από την βάση δεδομένων. • Το αστεράκι.
Advertisements

ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ 2 ΜΑΘΗΜΑ 4.
ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2012 Nicolas Tsapatsoulis Φυσική Σχεδίαση – Υλοποίηση βάσης ΕΣΔ232 – Οργάνωση Δεδομένων στη.
Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ
ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis Εισαγωγή στην SQL ΕΣΔ232 – Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας.
Δρ. Παναγιώτης Συμεωνίδης
Βάσεις Δεδομένων (ΚΒΔ)
Αποθηκευμένες Διαδικασίες και Εναύσματα Δρ. Παναγιώτης Συμεωνίδης.
Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ
Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ
Ανάλυση Συστημάτων Αυτομάτου Ελέγχου:
ΕΡΩΤΗΜΑΤΑ ΕΠΙΛΟΓΗΣ ΜΕ ΣΥΖΕΥΞΗ ΠΙΝΑΚΩΝ
Ο Μετασχηματισμός Laplace και ο Μετασχηματισμός Ζ
ΕΣΔ 232: Οργάνωση δεδομένων στην Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis Φόρμες Δημιουργία Περιεχομένου Ι.
Προχωρημένα Θέματα Τεχνολογίας και Εφαρμογών Βάσεων Δεδομένων Επεξεργασία και βελτιστοποίηση ερωτήσεων Πάνος Βασιλειάδης Σεπτέμβρης 2005.
Microsoft Excel 4.4 Τύποι και Συναρτήσεις
9 Η Γλώσσα SQL Ορισμός Δεδομένων (data definition)
Βάσεις Δεδομένων II Ενότητα 4: Σχεσιακός λογισμός II Γεωργία Γκαράνη Επίκουρος Καθηγήτρια Τμήμα Μηχανικών Πληροφορικής Τ.Ε. T.E.I. Θεσσαλίας.
Ιόνιο Πανεπιστήμιο ΠΜΣ Επιστήμη της Πληροφορίας Διατύπωση Ερωτημάτων σε XML τεκμήρια με τη γλώσσα XQuery Εργασία για το μάθημα Ηλεκτρονική Δημοσίευση Υπεύθυνος.
Μεταβλητές – εντολές εκχώρησης- δομή ακολουθίας
ΤΗΣ ΦΟΙΤΗΤΡΙΑΣ : ΤΣΑΛΤΑ ΑΝΑΣΤΑΣΙΑ Α.Μ. : 30920
Βάσεις Δεδομένων Ι Ενότητα 7: H γλώσσα SQL Γεωργία Γκαράνη Επίκουρος Καθηγήτρια Τμήμα Μηχανικών Πληροφορικής Τ.Ε. T.E.I. Θεσσαλίας.
31 Μαρτίου 2015 ΔΙΑΦΑΝΕΙΑ 1 ΤΥΠΙΚΕΣ ΜΕΘΟΔΟΙ ΑΝΑΛΥΣΗΣ ΣΥΣΤΗΜΑΤΩΝ ΤΜ. ΠΛΗΡΟΦΟΡΙΚΗΣ Α.Π.Θ. – ΔΙΔΑΣΚΩΝ: Π. ΚΑΤΣΑΡΟΣ ΚΑΤΗΓΟΡΗΜΑΤΙΚΟΣ ΛΟΓΙΣΜΟΣ Ι Για τον προτασιακό.
HY340 : ΓΛΩΣΣΕΣ ΚΑΙ ΜΕΤΑΦΡΑΣΤΕΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ, ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ, ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΔΙΔΑΣΚΩΝ Αντώνιος Σαββίδης.
ΒΕΣ 06: Προσαρμοστικά Συστήματα στις Τηλεπικοινωνίες © 2007 Nicolas Tsapatsoulis Προσαρμοστικοί Αλγόριθμοι Υλοποίησης Βέλτιστων Ψηφιακών Φίλτρων: Ο αναδρομικός.
Βάσεις Δεδομένων Εργαστήριο ΙΙI Τμήμα Πληροφορικής ΑΠΘ
1 Εναύσματα και Περιορισμοί Database Management Systems, Antonis Sidiropoulos.
Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Σχεσιακό Μοντέλο.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Σχεσιακό Μοντέλο.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 SQL.
ΕΡΩΤΗΜΑΤΑ ΕΠΙΛΟΓΗΣ 2 ΜΑΘΗΜΑ 8. ΑΠΑΛΟΙΦΗ ΔΙΠΛΟΕΓΓΡΑΦΩΝ DISTINCT Μπορούμε να απαλείψουμε τις διπλοεγγραφές που μας επιστρέφονται και που οφείλονται στην.
1 Βάσεις Δεδομένων ΙI Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ SQL (3 από 3) T Manavis.
9 Η Γλώσσα SQL  Εισαγωγή – Βασικές Έννοιες  Τύποι Δεδομένων  Ορισμός Δεδομένων  Χειρισμός Δεδομένων.
Γιώργος Γεωργιάδης (σύμφωνα με τις παραδόσεις του Λευτέρη Κυρούση)
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή στην Επεξεργασία Ερωτήσεων.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Σχεσιακή Άλγεβρα.
9 Η Γλώσσα SQL  Εισαγωγή – Βασικές Έννοιες  Τύποι Δεδομένων  Ορισμός Δεδομένων (data definition)  Χειρισμός Δεδομένων (data manipulation)
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Η Γλώσσα SQL.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Επεξεργασία Ερωτήσεων.
ΚΕΦΑΛΑΙΟ Τι είναι αλγόριθμος
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Η Γλώσσα SQL.
Σχεσιακή Άλγεβρα.
Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Εισαγωγή Σχεδιασμός μιας ΒΔ ανάλυση ποιας πληροφορίας και της σχέσης ανάμεσα στα στοιχεία της περιγραφή.
Βασικά στοιχεία της Java
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Η Γλώσσα SQL.
ΚΕΦΑΛΑΙΟ Το αλφάβητο της ΓΛΩΣΣΑΣ
Συνδετικότητα γραφήματος (graph connectivity). α β Υπάρχει μονοπάτι μεταξύ α και β; Παραδείγματα: υπολογιστές ενός δικτύου ιστοσελίδες ισοδύναμες μεταβλητές.
ΤΕΙ ΙΟΝΙΩΝ ΝΗΣΩΝ ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ ΠΑΡΆΡΤΗΜΑ ΛΕΥΚΑΔΑΣ ΥΠΕΥΘΥΝΗ ΚΑΘΗΓΉΤΡΙΑ Δρ. ΤΣΙΝΤΖΑ ΠΑΝΑΓΙΩΤΑ Οι παρουσιάσεις του μαθήματος βασίζονται στο.
1 Σχεσιακή Άλγεβρα Προβολή, Επιλογή, Καρτεσιανό Γινόμενο, Ένωση, Διαφορά, Σύνθεση Τελεστών, Μετονομασία, Παραδείγματα Ερωτήσεων, Τομή Συνόλων, Φυσική Σύζευξη.
Για μτ από ατ μέχρι ττ [με_βήμα β] εντολές Τέλος_επανάληψης : περιοχή εντολών μτ : η μεταβλητή της οποίας η τιμή θα περάσει από την αρχική.
ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2012 Nicolas Tsapatsoulis Το σχεσιακό μοντέλο βάσεων δεδομένων ΕΣΔ232 – Οργάνωση Δεδομένων στη.
Βάσεις Δεδομένων Ι 4η διάλεξη
ΑΛΓΟΡΙΘΜΟΣ ΠΡΟΒΛΗΜΑ ΑΛΓΟΡΙΘΜΟΣ ΛΥΣΗ
Η Γλώσσα SQL Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Βάσεις Δεδομένων Ι Επανάληψη
Βάσεις Δεδομένων Ενότητα 3: Σχεσιακή Άλγεβρα Βασίλης Βουτσινάς
Εισαγωγή στις βάσεις δεδομένων ISBN
9 Η Γλώσσα SQL Εισαγωγή – Βασικές Έννοιες Τύποι Δεδομένων
Οι Συναρτήσεις Ομαδοποίησης
Περιγραφή Ενότητας Σκοπός του μαθήματος είναι η παρουσίαση δηλώσεων SQL που περιλαμβάνουν EXIST, ANY, ALL. Χ. Σκουρλάς.
Ενότητα 2 : Το σύστημα βάσεων δεδομένων MySQL (II) Ιωάννης Τσούλος
Βάσεις Δεδομένων Ι 8η διάλεξη
Βάσεις Δεδομένων Ι 7η διάλεξη
SQL Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Β.ΕΠΑΛ-Γενικής Παιδείας  ΜΑΘΗΜΑ: Εισαγωγή στης αρχές Επιστήμης των Η/Υ  ΚΕΦΑΛΑΙΟ 4: Γλώσσες Αναπαράστασης Αλγορίθμων  ΕΝΟΤΗΤΑ 4.2: Δομή Ακολουθίας 
Ερωτήματα Επιλογής σε ACCESS
Ερωτήματα Επιλογής Δεδομένων
Ερωτήματα Επιλογής σε ACCESS
SQL Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
Μεταγράφημα παρουσίασης:

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis SQL: Ερωτήματα, προγραμματισμός και εναύσματα ΕΣΔ232 – Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα  Περιεχόμενα  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα Περιεχόμενα

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis  Βιβλιογραφία  [Ramakrishnan 2002a]: Chapter 5  [Ullman 2007]: Chapter 5  [Seyed 2007]: Chapter 5  [Forta 2005]: Chapters 2-3  [Oppel 2004]: Chapter 4  [Petersen 2002]: Chapter 8  [Taylor 2000]: Chapter 12  Αθ. Μάργαρης, Πανεπιστήμιο Μακεδονίας: SQL Βιβλιογραφία Ενότητας  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis  Η βασική δομή σύνταξης ενός SQL ερωτήματος έχει την πιο κάτω μορφή: SELECT [DISTINCT] target-list FROM relation-list WHERE qualification  relation-list Κατάλογος με τα ονόματα πινάκων οι οποίοι θα χρησιμοποιηθούν για τον υπολογισμό του ερωτήματος (είναι πιθανό τα ονόματα αυτά να ακολουθούνται από μεταβλητές διαστήματος -range-variables).  target-list Κατάλογος πεδίων από τους πίνακες τα οποία θέλουμε να εμφανιστούν στα αποτελέσματα  qualification Κριτήρια επιλογής μέσω συγκριτικών τελεστών (Attr op const or Attr1 op Attr2, όπου op είναι ένας από τους πιο κάτω τελεστές, =, ≥, ≤, ≠) οι οποίοι συνδυάζονται μέσω των λογικών τελεστών AND, OR και NOT.  DISTINCT είναι μια προαιρετική επιλογή η οποία υποδεικνύει ότι η απάντηση του ερωτήματος πρέπει να περιέχει μόνο διαφορετικές γραμμές. Το βασικό SQL ερώτημα  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis  Στα επόμενα παραδείγματα θα χρησιμοποιήσουμε τα πιο κάτω στιγμιότυπα των πινάκων Sailors (2 διαφορετικά στιγμιότυπα S1 και S2) και Reserves (στιγμιότυπο R1). Οι πίνακες (στιγμιότυπα) των παραδειγμάτων  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis  Το αποτέλεσμα ενός SQL ερωτήματος προκύπτει με την εκτέλεση των πιο κάτω βημάτων: 1.Υπολογισμός του καρτεσιανού γινομένου των πινάκων στο relation-list. 2.Απόρριψη των εγγραφών που δεν πληρούν τα κριτήρια επιλογής που περιλαμβάνονται στα qualifications 3.Απόκρυψη των πεδίων που δεν περιλαμβάνονται στο target-list. 4.Αν υπάρχει η επιλογή DISTINCT οι γραμμές με όμοιο περιεχόμενο διαγράφονται.  Στην πράξη η πιο πάνω στρατηγική υπολογισμού των ερωτημάτων SQL δεν είναι καθόλου αποδοτική.  Τα συστήματα DBMS χρησιμοποιούν εναλλακτικές μεθόδους υπολογισμού των αποτελεσμάτων σε SQL ερωτήματα. Η μελέτη των μεθόδων αυτών δεν εμπίπτει στο αντικείμενο του μαθήματος Η στρατηγική υπολογισμού των ερωτημάτων  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis SELECT S.sname FROM Sailors S, Reserves R WHERE S.sid=R.sid AND R.bid=103 1.Υπολογισμός καρτεσιανού γινομένου SxR πινάκων S και R. 2.Έλεγχος κριτηρίων S.sid=R.sid και R.bid= Απόκρυψη όλων των πεδίων πλην του S.sname 4.DISTINCT δεν έχει οριστεί (έτσι και αλλιώς δεν υπάρχουν όμοιες γραμμές στο αποτέλεσμα). Παράδειγμα υπολογισμού  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis  Οι μεταβλητές διαστήματος είναι απαραίτητες αν ο ίδιος πίνακας εμφανίζεται δύο φορές στη συνιστώσα FROM (δηλαδή στο relation_list).  Το προηγούμενο ερώτημα μπορεί να γραφεί και ως: SELECT S.sname FROM Sailors S, Reserves R WHERE S.sid=R.sid AND bid=103 ή SELECT sname FROM Sailors, Reserves WHERE Sailors.sid=Reserves.sid AND bid=103  Σε κάθε περίπτωση η χρήση μεταβλητών διαστήματος είναι καλή πρακτική! Μεταβλητές διαστήματος  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis SELECT S.age, age1=S.age-5, 2*S.age AS age2 FROM Sailors S WHERE S.sname LIKE ‘B_%B’  Το πιο πάνω παράδειγμα δείχνει τη χρήση αριθμητικών εκφράσεων στην εμφάνιση των αποτελεσμάτων αλλά και της χρήσης ταύτισης συμβολοσειρών στα κριτήριο επιλογής:  Βρες τις τριάδες (ηλικία ναυτικών και δύο πεδίων τα οποία ορίζονται βάση αριθμητικών εκφράσεων) για τους ναυτικούς των οποίων το όνομα αρχίζει και τελειώνει σε B και περιέχει το πολύ τρεις χαρακτήρες  Οι τελεστές AS και = είναι οι δύο τρόποι μέσω των οποίων δίνουμε όνομα στις αριθμητικές εκφράσεις (2*S.age AS age2, age1=S.age-5).  Ο τελεστής LIKE χρησιμοποιείται για σύγκριση συμβολοσειρών. ‘_’ χρησιμοποιείται για οποιοδήποτε (μη κενό) χαρακτήρα και το `%’ υποδηλώνει 0 ή περισσότερους τυχαίους χαρακτήρες. Εκφράσεις και συμβολοσειρές (strings)  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis  Έστω ότι ζητούμε τα sid των ναυτικών που έχει κάνει κράτηση για μια κόκκινη ή πράσινη βάρκα: SELECT S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND (B.color=‘red’ OR B.color=‘green’)  Ο τελεστής UNION χρησιμοποιείται για τον υπολογισμό της ένωσης δύο συμβατών (ως προς τα πεδία) συνόλων από εγγραφές (οι οποίες προκύπτουν ως αποτέλεσμα SQL ερωτημάτων). SELECT S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND B.color=‘red’ UNION SELECT S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND B.color=‘green’  Αν αντικαθιστούσαμε το OR με AND στο πρώτο ερώτημα τι αποτέλεσμα θα παίρναμε;  Ο τελεστής EXCEPT εξαιρεί τα αποτελέσματα του δευτέρου ερωτήματος από αυτά του πρώτου (Δηλαδή: βρες τα sid των ναυτικών που έχουν κάνει κράτηση σε κόκκινη αλλά όχι σε πράσινη βάρκα) Οι τελεστές UNION, EXCEPT και INTERSECT  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis  Έστω ότι ζητούμε τα sid των ναυτικών που έχει κάνει κράτηση για μια κόκκινη ή πράσινη βάρκα: SELECT S.sid FROM Sailors S, Boats B1, Reserves R1, Boats B2, Reserves R2 WHERE S.sid=R1.sid AND R1.bid=B1.bid AND S.sid=R2.sid AND R2.bid=B2.bid AND (B1.color=‘red’ AND B2.color=‘green’)  Ο τελεστής INTERSECT χρησιμοποιείται για τον υπολογισμό της τομής δύο συμβατών (ως προς τα πεδία) συνόλων από εγγραφές (οι οποίες προκύπτουν ως αποτέλεσμα SQL ερωτημάτων) SELECT S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND B.color=‘red’ INTERSECT SELECT S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid Οι τελεστές UNION, EXCEPT και INTERSECT (2)  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis  Στη MySQL οι τελεστές EXCEPT και INTERSECT δεν υποστηρίζονται. Υλοποιούνται συνήθως με χρήση των τελεστών NOT IN και IN: EXCEPT: SELECT DISTINCT S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND B.color='red' AND S.sid NOT IN (SELECT DISTINCT S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND B.color='green'); INTERSECT: SELECT DISTINCT S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND B.color='red' AND S.sid IN (SELECT DISTINCT S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND B.color='green'); Οι τελεστές UNION, EXCEPT και INTERSECT (3)  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis Φωλιασμένα ερωτήματα  Φωλιασμένα ερωτήματα ονομάζουμε SQL ερωτήματα τα οποία βρίσκονται στην περιοχή των κριτηρίων WHERE ενός άλλου SQL ερωτήματος:  Να βρεθούν τα ονόματα των ναυτικών που έχουν κάνει κράτηση για τη βάρκα με αριθμό 103: SELECT S.sname FROM Sailors S WHERE S.sid IN (SELECT R.sid FROM Reserves R WHERE R.bid=103)  Τα φωλιασμένα ερωτήματα μπορεί να υπάρχουν και στην περιοχή του FROM αλλά και του HAVING  Για να βρούμε τα ονόματα των ναυτικών που δεν έχουν κάνει κράτηση για τη βάρκα με αριθμό 103 χρησιμοποιούμε στη θέση του IN το NOT IN  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis Φωλιασμένα ερωτήματα με συσχέτιση  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα  Να βρεθούν τα ονόματα των ναυτικών που έχουν κάνει κράτηση για τη βάρκα με αριθμό 103: SELECT S.sname FROM Sailors S WHERE EXISTS ( SELECT * FROM Reserves R WHERE R.bid=103 AND S.sid=R.sid)  Ο τελεστής EXISTS είναι ένας ακόμη τελεστής σύγκρισης συνόλων (όπως ο τελεστής IN).

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis Τελεστές σύγκρισης συνόλων  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα  Αντίστοιχα των τελεστών IN και EXISTS υπάρχουν και τελεστές NOT IN, NOT EXISTS με προφανή ερμηνεία.  Επιπλέον των ανωτέρω υπάρχει και η δυνατότητα της ακόλουθη σύνταξης:  op ANY, op ALL, Όπου ο τελεστής op είναι κάποιος από τους τελεστές σύγκρισης >,<,=,≥,≤, ≠  Βρες τους ναυτικούς με rating μεγαλύτερο από αυτό του ναυτικού με όνομα Horatio: SELECT * FROM Sailors S WHERE S.rating > ANY ( SELECT S2.rating FROM Sailors S2 WHERE S2.sname=‘Horatio’);

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis Παράδειγμα Ι  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα  Υλοποίηση τελεστή INTERSECT με χρήση του τελεστή IN: Να βρεθούν τα sid’s των ναυτικών που έχουν κάνει κράτηση σε κόκκινη αλλά και πράσινη βάρκα: SELECT S.sid FROM Sailors S, Boats B, Reserves R WHERE S.sid=R.sid AND R.bid=B.bid AND B.color=‘red’ AND S.sid IN (SELECT S2.sid FROM Sailors S2, Boats B2, Reserves R2 WHERE S2.sid=R2.sid AND R2.bid=B2.bid AND B2.color=‘green’)  Ομοίως ο τελεστής EXCEPT υλοποιείται με χρήση του NOT IN.  Για να βρούμε τα ονόματα αντί τα sid’s των ναυτικών στα πιο πάνω ερωτήματα αντικαθιστούμε το S.sid με S.sname στο SELECT.

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis Τελεστές συνάθροισης  Οι τελεστές συνάθροισης χρησιμοποιούνται για ομαδική επεξεργασία των αποτελεσμάτων:  COUNT (*) (πλήθος εγγραφών)  COUNT ( [DISTINCT] A) (διακριτές τιμές ως προς το πεδίο Α)  SUM ( [DISTINCT] A) (άθροισμα διακεκριμένων τιμών στο πεδίο Α)  AVG ( [DISTINCT] A) (Μ.Ο. διακεκριμένων τιμών στο πεδίο Α)  MAX (A)  MIN (A)  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα SELECT COUNT (*) FROM Sailors S SELECT AVG (S.age) FROM Sailors S WHERE S.rating=10 SELECT COUNT (DISTINCT S.rating) FROM Sailors S WHERE S.sname=‘Bob’ SELECT AVG ( DISTINCT S.age) FROM Sailors S WHERE S.rating=10 SELECT S.sname FROM Sailors S WHERE S.rating = (SELECT MAX(S2.rating) FROM Sailors S2)

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis  Να βρεθεί το όνομα και η ηλικία του γηραιότερου ναυτικού: SELECT S.sname, S.age FROM Sailors S WHERE S.age =(SELECT MAX(S2.age) FROM Sailors S2); SELECT S.sname, S.age FROM Sailors S WHERE (SELECT MAX(S2.age) FROM Sailors S2) = S.age  Το δεύτερο ερώτημα είναι ισοδύναμο με το πρώτο και υποστηρίζεται από το πράτυπο SQL/92. Σε ορισμένα όμως DBMS δεν υποστηρίζεται. Παράδειγμα ΙΙ  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis  Μέχρι τώρα εξετάσαμε τους τελεστές συνάθροισης όπως αυτοί εφαρμόζονται για όλες τις εγγραφές που πληρούν ένα συγκεκριμένο κριτήριο (π.χ. Μ.Ο ηλικίας, μέγιστη ηλικία κλπ).  Σε μερικές περιπτώσεις επιθυμούμε να εφαρμόσουμε τους τελεστές αυτούς σε ομάδες εγγραφών.  Έστω το ερώτημα:  Βρες την ηλικία του νεαρότερου ναυτικού για κάθε διαφορετική τιμή του πεδίου rating.  Γενικά δεν γνωρίζουμε πόσες διαφορετικές τιμές υπάρχουν για το rating.  Αν ξέραμε ότι υπάρχουν 10 διαφορετικές τιμές θα μπορούσαμε να γράψουμε 10 (!) ερωτήματα ως ακολούθως: For i = 1, 2,..., 10: SELECT MIN (S.age) FROM Sailors S WHERE S.rating = i Οι τελεστές GROUP BY και HAVING  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis  Οι τελεστές GROUB BY και HAVING μας βοηθούν να αποφύγουμε το προηγούμενο πρόβλημα  Σύνταξη: SELECT [DISTINCT] target-list FROM relation-list WHERE qualification GROUP BY grouping-list HAVING group-qualification  Το target-list περιέχει 1.Τα ονόματα πεδίων 2.Όρους με τελεστές συνάθροισης (π.χ., MIN(S.age)).  Ο κατάλογος πεδίων πρέπει να είναι ένα υποσύνολο του grouping-list.  Κάθε εγγραφή στην απάντηση αντιστοιχεί σε μια ομάδα (group) και επομένως τα πεδία αυτά πρέπει να έχουν μια και μοναδική τιμή για το group (Group είναι ένα σύνολο εγγραφών οι οποίες έχουν τις ίδιες τιμές για όλες τις τιμές των πεδίων του grouping-list.) Οι τελεστές GROUP BY και HAVING (2)  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis 1.Το καρτεσιανό γινόμενο των πινάκων στο relation-list υπολογίζεται 2.Εγγραφές οι οποίες δεν πληρούν τα κριτήρια επιλογής διαγράφονται 3.Τα πεδία τα οποία δεν δηλώνονται στο target_list αποκρύπτονται 4.Οι υπόλοιπες εγγραφές ομαδοποιούνται με βάση τα πεδία του grouping-list. 5.Τα κριτήρια επιλογής όπως περιγράφονται στο HAVING (group- qualification) εφαρμόζονται και κάποιες ομάδες (που δεν τα πληρούν) απαλείφονται.  Οι εκφράσεις στο group-qualification πρέπει να παράγουν μια και μοναδική τιμή ανά group!  Μια μόνο εγγραφή ανά group δημιουργείται Υπολογισμός ερωτημάτων που περιέχουν GROUB BY  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis  Να βρεθεί η ηλικία του νεαρότερου ναυτικού, μεγαλύτερου από 18 χρονών, για κάθε διαφορετική τιμή rating και για ratings με τουλάχιστον 2 ναυτικούς SELECT S.rating, MIN(S.age) FROM Sailors S WHERE S.age > 18 GROUP BY S.rating HAVING COUNT(*) > 1  Μόνο τα S.rating και S.age αναφέρονται στις περιοχές των SELECT, GROUP BY ή HAVING, επομένως τα άλλα πεδία δεν χρησιμοποιούνται στο αποτέλεσμα.  Η 2 η στήλη στα αποτελέσματα δεν έχει όνομα. Μπορούμε να χρησιμοποιήσουμε τον τελεστή AS για να της δώσουμε όνομα Παράδειγμα ΙΙΙ  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis  Να βρεθεί η ηλικία του νεαρότερου ναυτικού, μεγαλύτερου από 18 χρονών, για κάθε διαφορετική τιμή rating και για ratings με τουλάχιστον 2 ναυτικούς (κάθε ηλικίας) SELECT S.rating, MIN(S.age) FROM Sailors S WHERE S.age > 18 GROUP BY S.rating HAVING 1 < (SELECT COUNT(*) FROM Sailors S2 WHERE S.rating=S2.rating)  Στο πιο πάνω παράδειγμα η περιοχή HAVING προκύπτει από ένα φωλιασμένο ερώτημα.  Συγκρίνεται τα αποτελέσματα με το προηγούμενο ερώτημα Παράδειγμα ΙV  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis  Για κάθε κόκκινη βάρκα βρείτε τον αριθμό των κρατήσεων που έχουν γίνει για αυτήν SELECT B.bid, COUNT(*) AS scount FROM Sailors S, 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 με τη συνθήκη αυτή? Παράδειγμα V  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis Εναύσματα  Έναυσμα: διαδικασία η οποία ξεκινά αυτόματα εφόσον κάποιες αλλαγές λάβουν χώρα στο σύστημα DBMS  Τρία τμήματα:  Event (ενεργοποίηση εναύσματος)  Condition (συνθήκη εκτέλεσης του εναύσματος)  Action (αποτέλεσμα εκτέλεσης εναύσματος)  Παράδειγμα: CREATE TRIGGER youngSailorUpdate AFTER INSERT ON SAILORS REFERENCING NEW TABLE NewSailors FOR EACH STATEMENT INSERT INTO YoungSailors(sid, name, age, rating) SELECT sid, name, age, rating FROM NewSailors N WHERE N.age <= 18  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Παραδείγματα

ΕΣΔ 232: Οργάνωση Δεδομένων στη Κοινωνία της Πληροφορίας © 2013 Nicolas Tsapatsoulis Παραδείγματα  Να λύσετε τις ασκήσεις: από το βιβλίο σας [Ramakrishnan 2002a]  Το βασικό SQL ερώτημα  Φωλιασμένα ερωτήματα  Τελεστές συνάθροισης  Ενσωματωμένη SQL  Εναύσματα  Σύνοψη / Παραδείγματα