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

Σχετικά έγγραφα
Τμήμα Πληροφορικής ΑΠΘ

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

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

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

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

ΕΡΓΑΣΤΗΡΙΟ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ

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

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

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

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

SQL Data Manipulation Language

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


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

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

ΕΡΓΑΣΤΗΡΙΟ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ

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

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

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

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

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

Βάσεις, Αποθήκες και Εξόρυξη Δεδομένων με τον SQL Server

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

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

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

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

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

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

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

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

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

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

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


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

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

Lecture 16: SQL DML III

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

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

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

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

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

Οργάνωση Βάσεων Βιοϊατρικών Δεδομένων Εξόρυξη Γνώσης Βιοϊατρικών Δεδομένων. Σεμινάριο 7: Αλγόριθμοι για επεξεργασία ερωτήσεων και βελτιστοποίηση

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

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

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

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

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

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

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

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

Εργαστήριο 8o. Ερωτήματα επιλογής Παραμετρικά ερωτήματα Ερωτήματα δημιουργίας πεδίων. Ευάγγελος Γ. Καραπιδάκης

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

Εργαςτιριο Βάςεων Δεδομζνων

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


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

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

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

Certified Data Base Designer (CDBD)

Βάσεις, Αποθήκες και Εξόρυξη Δεδομένων με τον SQL Server

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

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

Εργαςτιριο Βάςεων Δεδομζνων

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


DELETE, UPDATE, INSERT

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

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

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

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

Εργαστήριο 10o. Συγκεντρωτικά Ερωτήματα Ερωτήματα Διασταύρωσης Ερωτήματα Ενεργειών. Ευάγγελος Γ. Καραπιδάκης

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

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

Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι

DELETE, UPDATE, INSERT.

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

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

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

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

Κεφάλαιο 5. Δημιουργία φορμών για τη βάση δεδομένων DVDclub

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

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

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

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

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

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

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

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

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

Εργαςτιριο Βάςεων Δεδομζνων

Πανεπιστήμιο Πειραιώς, Τμήμα Πληροφορικής

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

ΕΞΕΤΑΣΤΕΑ ΥΛΗ (SYLLABUS) Ενότητα Advanced Βάσεις Δεδομένων, Προχωρημένο Επίπεδο. Copyright 2013 ECDL Foundation Ref: SL_AM3_Syl2.

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

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

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

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

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

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

Transcript:

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

2 Σκοπός του 4 ου εργαστηρίου Σκοπός αυτού του εργαστηρίου είναι: η μελέτη ερωτημάτων σύνδεσης η μελέτη ερωτημάτων συνάθροισης

3 Εκφράσεις Σύνδεσης (1/3) Οι εκφράσεις σύνδεσης δέχονται ως είσοδο δύο σχέσεις και επιστρέφουν ως αποτέλεσμα μία άλλη σχέση. Η συνθήκη σύνδεσης JOIN: καθορίζει ποιες πλειάδες ανάμεσα στις σχέσεις σύνδεσης ταιριάζουν και βάσει ποιων χαρακτηριστικών (natural, on, using). Ο τύπος σύνδεσης JOIN: Καθορίζει τον τρόπο με τον οποίο θα χειριστούμε τις πλειάδες της μίας σχέσης, οι οποίες δεν ταιριάζουν µε κάποια πλειάδα της άλλης σχέσης σύμφωνα με τη συνθήκη JOIN (INNER JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, FULL OUTER JOIN).

4 Εκφράσεις Σύνδεσης(2/3) Οι εκφράσεις σύνδεσης χρησιμοποιούνται: είτε ως υποερωτήματα στο τμήμα FROM είτε έμμεσα (δηλαδή χωρίς τη λέξη JOIN) στο τμήμα WHERE, όπως είδαμε στο προηγούμενο μάθημα SELECT... FROM R1,R2 WHERE R1.ID= R2.ID SELECT FROM R1 INNER JOIN R2 ON R1.ID= R2.ID

5 Εκφράσεις Σύνδεσης(3/3) Η εντολή INNER JOIN τοποθετείται μόνο μεταξύ δύο σχέσεων οι οποίες μπορούν να συνδεθούν βάσει κάποιου χαρακτηριστικού. Έστω ότι έχουμε τις σχέσεις R1(a,b), R2(b,c) R3(c,d) SELECT FROM R2 INNER JOIN R3 ON INNER JOIN R1 ON. ΛΑΘΟΣ SELECT FROM R1 INNER JOIN R2 ON R1.b= R2.b INNER JOIN R3 ON R2.c= R3.c ΣΩΣΤΟ

6 Παράδειγμα σύνδεσης δύο σχέσεων Να δοθούν οι κωδικοί των ταινιών όπου συμμετείχε ο Alfred Hitchcock. SELECT IDΤαινίας FROM ΤΣ, ΣΥΝΤΕΛΕΣΤΗΣ WHERE ΤΣ.IDΣυντελεστή = ΣΥΝΤΕΛΕΣΤΗΣ.ID AND ΣΥΝΤΕΛΕΣΤΗΣ.Όνομα = 'Alfred Hitchcock' SELECT IDΤαινίας FROM ΤΣ INNER JOIN ΣΥΝΤΕΛΕΣΤΗΣ ON ΤΣ.IDΣυντελεστή = ΣΥΝΤΕΛΕΣΤΗΣ.ID WHERE ΣΥΝΤΕΛΕΣΤΗΣ.Όνομα = 'Alfred Hitchcock'

7 Σύνδεση τριών ή περισσότερων σχέσεων Η σύνδεση γίνεται συνδέοντας διαδοχικά την 1 η με τη 2 η σχέση, τη 2 η με την 3 η, την 3 η με την 4 η, κτλ. SELECT... FROM R1,R2, R3,, Rm WHERE R1.ID= R2.ID AND R2.ID= R3.ID AND Rm-1.ID = Rm.ID SELECT FROM R1 INNER JOIN R2 ON R1.ID= R2.ID INNER JOIN R3 ON R2.ID= R3.ID INNER JOIN. ON Rm-1.ID = Rm.ID

8 Ερώτημα με σύνδεση τριών ή περισσότερων σχέσεων στον SQL Server 2012 Να βρεθούν για κάθε πελάτη (Επίθετο), ο κωδικός και η τιμή των dvd που έχει ενοικιάσει: SELECT ΠΕΛΑΤΗΣ.Επίθετο, DVD.ID, DVD.Τιμή FROM ΠΕΛΑΤΗΣ INNER JOIN ΕΝΟΙΚΙΑΣΗ ON ΠΕΛΑΤΗΣ.ID = ΕΝΟΙΚΙΑΣΗ.IDΠελάτη INNER JOIN DVD ON ΕΝΟΙΚΙΑΣΗ.IDdvd = DVD.ID

9 Αριστερή εξωτερική σύνδεση μεταξύ τριών ή περισσότερων σχέσεων (LEFT OUTER JOIN) LEFT OUTER JOIN περιέχει όλες τις πλειάδες που εμφανίζονται στο INNER JOIN, και επιπλέον όλες τις πλειάδες της αριστερής σχέσης για τις οποίες δεν έγινε ταύτιση τιμών με καμία πλειάδα της δεξιάς σχέσης. Οι στήλες που αντιστοιχούν στη δεξιά σχέση παίρνουν τιμή NULL για τις πλειάδες που δεν υπήρχε ταύτιση τιμών. Κάθε πλειάδα της αριστερής σχέσης συμμετέχει στο αποτέλεσμα.

10 Ερώτημα με σύνδεση LEFT OUTER JOIN στον SQL Server 2012 Να βρεθούν για κάθε πελάτη (Επίθετο), ο κωδικός και η τιμή των dvd που έχει ενοικιάσει και οι πελάτες που δεν έχουν νοικιάσει κάποιο dvd: SELECT ΠΕΛΑΤΗΣ.Επίθετο, DVD.ID, DVD.Τιμή FROM ΠΕΛΑΤΗΣ LEFT OUTER JOIN ΕΝΟΙΚΙΑΣΗ ON ΠΕΛΑΤΗΣ.ID = ΕΝΟΙΚΙΑΣΗ.IDΠελάτη LEFT OUTER JOIN DVD ON ΕΝΟΙΚΙΑΣΗ.IDdvd = DVD.ID

11 Δεξιά εξωτερική σύνδεση μεταξύ τριών ή περισσότερων σχέσεων (RIGHT OUTER JOIN) RIGHT OUTER JOIN περιέχει όλες τις πλειάδες που εμφανίζονται στο INNER JOIN, και επιπλέον όλες τις πλειάδες της δεξιάς σχέσης για τις οποίες δεν έγινε ταύτιση τιμών με καμία πλειάδα της αριστερής σχέσης. Οι στήλες που αντιστοιχούν στην αριστερή σχέση παίρνουν τιμή NULL για τις πλειάδες που δεν υπήρχε ταύτιση τιμών. Κάθε πλειάδα της δεξιάς σχέσης συμμετέχει στο αποτέλεσμα.

12 Ερώτημα με σύνδεση RIGHT OUTER JOIN στον SQL Server 2012 Να βρεθούν για κάθε πελάτη (Επίθετο), ο κωδικός και η τιμή των dvd που έχει ενοικιάσει και, επιπλέον, οι κωδικοί και οι τιμές των dvd που δεν έχουν ενοικιαστεί από κάποιον πελάτη: SELECT ΠΕΛΑΤΗΣ.Επίθετο, DVD.ID, DVD.Τιμή FROM ΠΕΛΑΤΗΣ RIGHT OUTER JOIN ΕΝΟΙΚΙΑΣΗ ON ΠΕΛΑΤΗΣ.ID = ΕΝΟΙΚΙΑΣΗ.IDΠελάτη RIGHT OUTER JOIN DVD ON ΕΝΟΙΚΙΑΣΗ.IDdvd = DVD.ID

13 Πλήρης εξωτερική σύνδεση μεταξύ τριών ή περισσότερων σχέσεων (FULL OUTER JOIN) FULL OUTER JOIN περιέχει όλες τις πλειάδες της δεξιάς και της αριστερής σχέσης για τις οποίες δεν έγινε ταύτιση τιμών. Οι στήλες που αντιστοιχούν στην άλλη σχέση (αριστερή ή δεξιά) παίρνουν την τιμή NULL για τις πλειάδες που δεν υπήρχε ταύτιση τιμών. Κάθε πλειάδα και των δύο σχέσεων συμμετέχει στο αποτέλεσμα.

14 Ερώτημα με σύνδεση FULL OUTER JOIN στον SQL Server 2012 Να βρεθούν για κάθε πελάτη (Επίθετο), ο κωδικός και η τιμή των dvd που έχει ενοικιάσει, οι πελάτες που δεν έχουν ενοικιάσει κάποιο dvd, αλλά και οι κωδικοί και οι τιμές των dvd που δεν έχουν ενοικιαστεί από κάποιον πελάτη: SELECT ΠΕΛΑΤΗΣ.Επίθετο, DVD.ID, DVD.Τιμή FROM ΠΕΛΑΤΗΣ FULL OUTER JOIN ΕΝΟΙΚΙΑΣΗ ON ΠΕΛΑΤΗΣ.ID = ΕΝΟΙΚΙΑΣΗ.IDΠελάτη FULL OUTER JOIN DVD ON ΕΝΟΙΚΙΑΣΗ.IDdvd = DVD.ID

15 Ερώτημα με αυτοσύνδεση στον SQL Server 2012 Να βρεθεί το επίθετο κάθε πελάτη που έχει το ίδιο τηλέφωνο με τον πελάτη που έχει το επίθετο Perkins : SELECT B.Επίθετο FROM ΠΕΛΑΤΗΣ AS Α, ΠΕΛΑΤΗΣ AS Β WHERE A.Τηλέφωνο = B.Τηλέφωνο AND A.Έπίθετο= 'Perkins' AND Β.Επίθετο <> 'Perkins'

16 SQL ερωτήματα στον SQL Server 2012 Δοκιμάστε να εκφράσετε σε SQL τα ερωτήματα: Να βρεθούν τα ονόματα (επίθετο) των πελατών που έχουν ενοικιάσει τουλάχιστον ένα dvd του οποίου η διαθέσιμη ποσότητα είναι πάνω από 2. Να βρεθούν ο κωδικός κάθε ταινίας για την οποία το dvd τύπου 3D είναι σε μεγαλύτερη διαθέσιμη ποσότητα από το αντίστοιχο dvd τύπου SD. (χρήση αυτοσύνδεσης)

17 Συγκεντρωτικοί τελεστές Οι συγκεντρωτικοί τελεστές ή αλλιώς τελεστές συνάθροισης είναι: SUM : υπολογίζει το άθροισμα δύο τιμών AVG : τη μέση τιμή των τιμών MIN : το ελάχιστο των τιμών MAX : το μέγιστο των τιμών COUNT: πλήθος των τιμών DISTINCT: σε συνδυασμό με τους συγκεντρωτικούς τελεστές ώστε να απαλειφθούν τα διπλότυπα, π.χ. COUNT(DISTINCT x).

18 Ερώτημα με συγκεντρωτικό τελεστή στον SQL Server 2012 (1/2) Να βρεθεί η μεγαλύτερη τιμή ενοικίασης ενός dvd: SELECT MAX(Τιμή) AS Μέγιστη τιμή FROM DVD

19 Ερώτημα με συγκεντρωτικό τελεστή στον SQL Server 2012 (2/2) Να βρεθεί ο συνολικός αριθμός των dvd: SELECT COUNT(*) FROM DVD

20 Οι φράσεις GROUP BY και HAVING GROUP BY: ομαδοποιεί τις πλειάδες μίας σχέσης με βάση τις τιμές κάποιου(-ων) χαρακτηριστικού(-ών) μίας σχέσης. HAVING: κάθε μία ομάδα πλειάδων μπορεί να ικανοποιεί ορισμένες συνθήκες.

21 Η σύνταξη ενός SQL ερωτήματος με τις εντολές GROUP BY και HAVING SELECT A 1, A 2,, A k FROM R 1,, R m WHERE <συνθήκη> GROUP BY A 1, A 2,, A n HAVING <συνθήκη> (υπολογίζει μία μόνο τιμή για την κάθε ομάδα πλειάδων που σχηματίζεται βάσει των τιμών των χαρακτηριστικών A 1, A 2,, A n ) Οποιοδήποτε χαρακτηριστικό εμφανίζεται μετά το SELECT πρέπει να εμφανίζεται και μετά το GROUP BY (εξαιρούνται τα χαρακτηριστικά μέσα στους συγκεντρωτικούς τελεστές)

22 Η σειρά εκτέλεσης ενός ερωτήματος ομαδοποίησης με GROUP BY και HAVING 1. Σχηματίζεται το καρτεσιανό γινόμενο των σχέσεων R 1, R 2,, R m του FROM. 2. Επιλέγονται πλειάδες από το καρτεσιανό γινόμενο που ικανοποιούν την συνθήκη του WHERE. 3. Διατηρούνται μόνο τα χαρακτηριστικά που βρίσκονται μετά τις εντολές SELECT, GROUP BY και HAVING. 4. Δημιουργούνται ομάδες πλειάδων σύμφωνα με την εντολή GROUP BY. 5. Εφαρμόζεται η συνθήκη καταλληλότητας της κάθε ομάδας σύμφωνα με την εντολή HAVING. 6. Υπολογίζονται οι πλειάδες εξόδου, πχ. υπολογίζονται όσοι τελεστές συνάθροισης υπάρχουν μετά την εντολή SELECT.

Ερώτημα με GROUP BY στον SQL Server 2012 (1/3) Να βρεθεί ο μέσος όρος τιμής ενοικίασης ανά τύπο dvd( SD ή 3D ): SELECT Τύπος, AVG(Τιμή) AS 'Μέση Τιμή' FROM DVD GROUP BY Τύπος 23

Ερώτημα με GROUP BY στον SQL Server 2012 (2/3) Για κάθε πελάτη (κωδικός) να βρεθεί ο αριθμός των φορών που ενοικίασε κάθε dvd(κωδικός): SELECT IDΠελάτη, IDdvd, COUNT(IDdvd) AS 'Αριθμός Ενοικιάσεων' FROM ΕΝΟΙΚΙΑΣΗ GROUP BY IDΠελάτη, IDdvd 24

Ερώτημα με GROUP BY στον SQL Server 2012 (3/3) Για κάθε συντελεστή (όνομα) να βρεθεί ο αριθμός των διακριτών ρόλων του σε όλες τις ταινίες: SELECT ΣΥΝΤΕΛΕΣΤΗΣ.Όνομα, COUNT(DISTINCT ΤΣ.Ρόλος) AS 'Αριθμός Ρόλων' FROM ΣΥΝΤΕΛΕΣΤΗΣ INNER JOIN ΤΣ ON ΣΥΝΤΕΛΕΣΤΗΣ.ID = ΤΣ.IDΣυντελεστή GROUP BY ΣΥΝΤΕΛΕΣΤΗΣ.Όνομα 25

26 Η φράση GROUP BY ALL GROUP BY ALL: δηλώνει ότι όλες οι ομάδες πρέπει να συμπεριληφθούν στο αποτέλεσμα, ακόμα κι αν καμία πλειάδα τους δεν ικανοποιεί την συνθήκη της εντολής WHERE. Οι ομάδες που δεν έχουν πλειάδες να ικανοποιούν τη συνθήκη της εντολής WHERE περιέχουν NULL.

Ερώτημα με GROUP BY ALL στον SQL Server 2012 Να βρεθεί η μέση ποσότητα ανά τύπο dvd, για τα dvd των οποίων η τιμή είναι μικρότερη από 2. Ακόμη, να παρουσιάζονται οι τύποι dvd που δεν ικανοποιούν την παραπάνω συνθήκη: SELECT Τύπος, AVG(Ποσότητα) AS 'Μέση Ποσότητα' FROM DVD WHERE Τιμή <= 2 GROUP BY ALL Τύπος 27

28 Ερώτημα με HAVING στον SQL Server 2012 Να βρεθούν οι τύποι dvd για τους οποίους ο μέσος όρος τιμής είναι μεγαλύτερος από 2: SELECT Τύπος, AVG(Τιμή) FROM DVD GROUP BY Τύπος HAVING AVG(Τιμή) > 2

29 SQL ερωτήματα στον SQL Server 2012 Δοκιμάστε να εκφράσετε σε SQL τα ερωτήματα: Να βρεθεί η μεγαλύτερη τιμή ενοικίασης ενός dvd που έχει ενοικιαστεί. Να βρεθεί η διαφορά μεταξύ του ακριβότερου και του φθηνότερου DVD. Να βρεθούν τα ονόματα των συντελεστών που έχουν συμμετάσχει σε περισσότερες από μία ταινίες. Να βρεθούν οι κωδικοί των συντελεστών που έχουν σκηνοθετήσει περισσότερες από μία ταινίες.