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

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

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

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

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

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

Lecture 16: SQL DML III

Lecture 14: SQL DML I

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

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

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

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

Βάσεις Δεδομένων ΗγλώσσαSQL (Structured Query Language)

Βάσεις Δεδομένων Η γλώσσα SQL (Structured Query Language) Εισαγωγή στην SQL (2) Ιστορικά Στοιχεία. SQL - Structured Query Language (1)

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

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

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

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

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


S Q Q L L -- SQL (Structured Query Language) select insert update delete 2.47

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ Σχεσιακός Ορισµός. Μαθ. #12

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

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

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

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

SQL Data Manipulation Language

Η αναλυτική περιγραφή της γλώσσας SQL αποτελεί αντικείµενο των σελίδων που ακολουθούν. Η ΓΛΩΣΣΑ ΟΡΙΣΜΟΥ Ε ΟΜΕΝΩΝ

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ (Relational Model) Μαθ. #10

Διάλεξη 10: Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός (Relational Algebra/Calculus) ΙI

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

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

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


Διδάσκων: Παναγιώτης Ανδρέου

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

Οργάνωση Βάσεων Βιοϊατρικών Δεδομένων Εξόρυξη Γνώσης Βιοϊατρικών Δεδομένων. Σεμινάριο 5: SQL

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

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

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

Department of Computer Science University of Cyprus. EPL342 Databases. Lecture 10: RA IΙ. RA Advanced + Examples

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

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

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

#5. Σχεσιακό Μοντέλο

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

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

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

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

Εισαγωγή στη Σχεσιακή Άλγεβρα

Κεφάλαιο 8. SQL-99: Ορισμός Σχήματος, Περιορισμοί, και Επερωτήσεις και Όψεις

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

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

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

Κεφάλαιο 4. Η Γλώσσα SQL και Σχεσιακός Λογισµός. Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.46

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

Lecture 15: SQL DML II

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

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


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

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

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

Lecture 17: SQL DML IV

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

Κεφάλαιο 5 Σχεσιακή Άλγεβρα

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

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

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

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

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

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

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

ΤΜΗΜΑ ΔΙΟΙΚΗΣΗΣ ΕΠΙΧΕΙΡΗΣΕΩΝ (ΓΡΕΒΕΝΑ)

Certified Data Base Designer (CDBD)

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

Data Cube. Μ.Χατζόπουλος 1

Lecture 16: SQL DML III

Query-by-Example (QBE)

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

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

DELETE, UPDATE, INSERT

Βάσεις Δεδομένων. Σχεσιακή Άλγεβρα. Φροντιστήριο 4 ο

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

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

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

1 / 150

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

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

Η Γλώσσα SQL. Μέρος α. Η Γλώσσα SQL Σελίδα 1

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

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

DELETE, UPDATE, INSERT.

1 / 105


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


Οργάνωση Βάσεων Βιοϊατρικών Δεδομένων Εξόρυξη Γνώσης Βιοϊατρικών Δεδομένων. Σεμινάριο 4: Σχεσιακός Λογισμός

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

Σχεσιακή Άλγεβρα. Συνολοθεωρητικές Πράξεις. Εκφράσεις. Ειδικές Πράξεις. Θεμελίωση της Σχεσιακού Μοντέλου Δεδομένων. Σχεσιακός Λογισμός

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

Transcript:

Βάσεις Δεδομένων Προχωρημένα Ερωτήματα SQL Παύλος Εφραιμίδης Βάσεις Δεδομένων SQL - Μέρος Τρίτο 1

Περιεχόμενα Προχωρημένα Ερωτήματα SQL Συνένωση Συναθροιστικές Συναρτήσεις Ομαδοποίηση Βάσεις Δεδομένων SQL - Μέρος Τρίτο 2

Συνένωση Σχέσεων στην SQL (Join Relations Feature in SQL) Βάσεις Δεδομένων SQL - Μέρος Τρίτο 3

Συνένωση Σχέσεων στην SQL2 Στα μέχρι στιγμής παραδείγματα, πραγματοποιήσαμε συνένωση σχέσεων μέσω καρτεσιανού γινομένου (FROM EMPLOYEE, DEPARTMENT) και συνθήκη επιλογής στον όρο WHERE Μπορούμε στον όρο FROM ενός ερωτήματος να ορίσουμε ρητά τη συνένωση σχέσεων Με τον τρόπο αυτό μπορούμε να ορίσουμε διάφορους τύπους συνένωσης όπως κανονική "theta" JOIN, NATURAL JOIN, LEFT OUTER JOIN, RIGHT OUTER JOIN, CROSS JOIN, κτλ.) Το αποτέλεσμα της συνένωσης έχει τη μορφή μιας σχέσης Βάσεις Δεδομένων SQL - Μέρος Τρίτο 4

Συνένωση Σχέσεων στην SQL2 (2) Παράδειγμα: SELECT FROM WHERE E.FNAME, E.LNAME, S.FNAME, S.LNAME EMPLOYEE E, EMPLOYEE S E.SUPERSSN=S.SSN; Το ίδιο ερώτημα μπορεί να γραφεί ως: SELECT E.FNAME, E.LNAME, S.FNAME, S.LNAME FROM (EMPLOYEE E JOIN EMPLOYEE S ON E.SUPERSSN=S.SSN); Βάσεις Δεδομένων SQL - Μέρος Τρίτο 5

Συνένωση Σχέσεων στην SQL2 (3) Εργαζόμενοι του τμήματος Research : SELECT FNAME, LNAME, ADDRESS FROM (EMPLOYEE JOIN DEPARTMENT ON DNUMBER=DNO) WHERE DNAME='Research ; Το ίδιο ερώτημα: SELECT FNAME, LNAME, ADDRESS FROM (EMPLOYEE NATURAL JOIN DEPARTMENT AS DEPT(DNAME, DNO, MSSN, MSDATE) WHERE DNAME='Research ; Βάσεις Δεδομένων SQL - Μέρος Τρίτο 6

Συνένωση Σχέσεων στην SQL2 (4) Άλλο παράδειγμα: SELECT PNUMBER, DNUM, LNAME, BDATE, ADDRESS FROM (PROJECT JOIN DEPARTMENT ON DNUM=DNUMBER) JOIN EMPLOYEE ON MGRSSN=SSN) ) WHERE PLOCATION= Stafford ; Βάσεις Δεδομένων SQL - Μέρος Τρίτο 7

Συνένωση Σχέσεων στην SQL2 (5) Παράδειγμα: Όνομα και επίθετο κάθε εργαζόμενου μαζί με το όνομα και το επίθετο του προϊσταμένου του. SELECT FROM WHERE E.FNAME, E.LNAME, S.FNAME, S.LNAME EMPLOYEE E, EMPLOYEE S E.SUPERSSN=S.SSN; Το ίδιο ερώτημα μπορεί να γραφεί ως: SELECT E.FNAME, E.LNAME, S.FNAME, S.LNAME FROM (EMPLOYEE E JOIN EMPLOYEE S ON E.SUPERSSN=S.SSN); Ερώτηση Κρίσεως: Στο παραπάνω ερώτημα (και στις δύο εκδοχές) εάν κάποιος εργαζόμενος δεν έχει προϊστάμενο, θα εμφανισθεί το όνομά του στο αποτέλεσμα; Βάσεις Δεδομένων SQL - Μέρος Τρίτο 8

Συνένωση Σχέσεων στην SQL2 (6) Παράδειγμα: Ανάκτηση των ονομάτων των εργαζομένων μαζί με τα ονόματα των τμημάτων που διευθύνει κάθε εργαζόμενος. SELECT E.FNAME, E.LNAME, D.DNAME FROM (DEPARTMENT D JOIN EMPLOYEE E ON E.DNO=D.DNUMBER); Ερώτηση Κρίσεως: Στο παραπάνω ερώτημα εάν κάποιος εργαζόμενος δεν είναι διευθυντής σε κάποιο τμήμα, θα εμφανισθεί το όνομά του στο αποτέλεσμα; Βάσεις Δεδομένων SQL - Μέρος Τρίτο 9

Εξωτερική Συνένωση (Outer Join) Παράδειγμα: Όνομα και επίθετο όλων των εργαζομένων μαζί με το όνομα και το επίθετο του προϊσταμένου κάθε εργαζόμενου για όσους εργαζόμενους έχουν προϊστάμενο. SELECT E.FNAME, E.LNAME, S.FNAME, S.LNAME FROM (EMPLOYEE E LEFT OUTER JOIN EMPLOYEE S ON E.SUPERSSN=S.SSN); Αριστερή Εξωτερική Συνένωση: Στη συνένωση συμμετέχουν όλες οι πλειάδες της σχέσης EMPLOYEE που είναι η αριστερή σχέση της συνένωσης Βάσεις Δεδομένων SQL - Μέρος Τρίτο 10

Εξωτερική Συνένωση (Outer Join) Παράδειγμα: Ανάκτηση των ονομάτων των εργαζομένων μαζί με τα ονόματα των τμημάτων που διευθύνει κάθε εργαζόμενος. SELECT E.FNAME, E.LNAME, D.DNAME FROM ( DEPARTMENT D RIGHT OUTER JOIN EMPLOYEE E ON E.SSN=D.MGRSSN ); Δεξιά Εξωτερική Συνένωση: Στο αποτέλεσμα συμμετέχουν όλες οι πλειάδες της σχέσης EMPLOYEE που είναι η δεξιά σχέση της συνένωσης Βάσεις Δεδομένων SQL - Μέρος Τρίτο 11

Εξωτερική Συνένωση (Outer Join) Εξωτερική Συνένωση: Εάν επιθυμούμε να συμμετέχουν κατά τη συνένωση δύο σχέσεων L και R, υποχρεωτικά όλες οι πλειάδες της L, της R ή καιτωνδύο(l και R), μπορούμε να χρησιμοποιήσουμε εξωτερική συνένωση Είδη Εξωτερικής συνένωσης: Αριστερή Εξωτερική Συνένωση (Left Outer Join) Δεξιά Εξωτερική Συνένωση (Right Outer Join) Πλήρης Εξωτερική Συνένωση (Full Outer Join) Βάσεις Δεδομένων SQL - Μέρος Τρίτο 12

Συναθροιστικές Συναρτήσεις (Aggregate Functions) Βάσεις Δεδομένων SQL - Μέρος Τρίτο 13

Παραδείγματα Παραδείγματα: Ερώτημα: Πωςθαβρούμετοπλήθοςτων εργαζομένων; Ερώτημα: Πωςθαβρούμετομέγιστομισθό μεταξύ των εργαζομένων Βάσεις Δεδομένων SQL - Μέρος Τρίτο 14

Συναθροιστικές Συναρτήσεις (1) Περιλαμβάνονται οι συναρτήσεις COUNT, SUM, MAX, MIN, και AVG Παράδειγμα: Ο μέγιστος μισθός εργαζομένου SELECT MAX(SALARY) FROM EMPLOYEE Παράδειγμα: Ομέγιστος, ο ελάχιστος και ο μέσος μισθός εργαζομένου SELECT MAX(SALARY), MIN(SALARY), AVG(SALARY) FROM EMPLOYEE Βάσεις Δεδομένων SQL - Μέρος Τρίτο 15

Συναθροιστικές Συναρτήσεις (2) Παράδειγμα: Μέγιστος, ελάχιστος και μέσος μισθός των εργαζομένων που ανήκουν στο τμήμα 'Research SELECT MAX(SALARY), MIN(SALARY), AVG(SALARY) FROM EMPLOYEE, DEPARTMENT WHERE DNO=DNUMBER AND DNAME='Research' Βάσεις Δεδομένων SQL - Μέρος Τρίτο 16

Συναθροιστικές Συναρτήσεις (3) Παραδείγματα: Το συνολικό πλήθος των εργαζομένων και το πλήθος των εργαζομένων του τμήματος 'Research' SELECT COUNT (*) FROM EMPLOYEE; SELECT COUNT (*) FROM EMPLOYEE, DEPARTMENT WHERE DNO=DNUMBER AND DNAME= Research ; Βάσεις Δεδομένων SQL - Μέρος Τρίτο 17

Ομαδοποίηση (Grouping) Βάσεις Δεδομένων SQL - Μέρος Τρίτο 18

Παραδείγματα Πως θα βρούμε το πλήθος εργαζομένων για κάθε τμήμα της εταιρείας; Πως θα βρούμε το μέσο μισθό ανά τμήμα και φύλο των εργαζομένων; Βάσεις Δεδομένων SQL - Μέρος Τρίτο 19

Ομαδοποίηση (GROUPING) Υποομάδα: Η ομαδοποίηση επιτρέπει την εφαρμογή συναθροιστικών συναρτήσεων σε υποομάδες πλειάδων μιας σχέσης Γνωρίσματα Ομαδοποίησης: Κάθε υποομάδα αποτελείται από τις πλειάδες που έχουν την ίδια τιμή για το γνώρισμα (ή τα γνωρίσματα εάν είναι περισσότερα από ένα) ομαδοποίησης Συναθροιστική Συνάρτηση: Η συναθροιστική συνάρτηση εφαρμόζεται ξεχωριστά σε κάθε υποομάδα GROUP BY: ΟόροςGROUP-BY καθορίζει τα γνωρίσματα ομαδοποίησης, τα οποία θα πρέπει να εμφανίζονται και μέσα στον όρο SELECT Βάσεις Δεδομένων SQL - Μέρος Τρίτο 20

Ομαδοποίηση (1) Παράδειγμα: Για κάθε τμήμα της εταιρείαςνα βρεθούν ομέσος, μέγιστος, ελάχιστος και συνολικός μισθός των εργαζομένων του τμήματος SELECT AVG(MISTHOS), MAX(MISTHOS), MIN(MISTHOS), SUM(MISTHOS) FROM ERGAZOMENOS GROUP BY arith_tmhma; Βάσεις Δεδομένων SQL - Μέρος Τρίτο 21

Ομαδοποίηση (2) Παράδειγμα: Για κάθε τμήμα της εταιρείας, να ανακτηθεί ο κωδικός του τμήματος, το πλήθος των εργαζομένων του τμήματος και ο μέσος όρων των μισθών τους SELECT DNO, COUNT (*), AVG (SALARY) FROM EMPLOYEE GROUP BY DNO; Στο ερώτημα, οι πλειάδες των εργαζομένων διαμερίζονται σε ομάδες, με βάση την τιμή του γνωρίσματος DNO: Πλειάδες με ίδια τιμή DNO (και μόνο αυτές) βρίσκονται στην ίδια ομάδα Οι συναρτήσεις COUNT και AVG εφαρμόζονται ξεχωριστά σε κάθε μία από τις παραπάνω ομάδες πλειάδων εργαζομένων ΟόροςSELECT περιλαμβάνει μόνο το γνώρισμα ομαδοποίησης DNO και τις συναρτήσεις COUNT και AVG που εφαρμόζονται σε κάθε ομάδα πλειάδων Βάσεις Δεδομένων SQL - Μέρος Τρίτο 22

Ομαδοποίηση (3) Παράδειγμα: Για κάθε έργο, να ανακτηθούν ο κωδικός του έργου, το όνομα του έργου και το πλήθος των εργαζομένων που απασχολούνται στο συγκεκριμένο έργο SELECT PNUMBER, PNAME, COUNT (*) FROM PROJECT, WORKS_ON WHERE PNUMBER=PNO GROUP BY PNUMBER, PNAME Στο παραπάνω ερώτημα: Χρησιμοποιείται μια πράξη συνένωσης σε συνδυασμό με ομαδοποίηση Η ομαδοποίηση και οι συναρτήσεις εφαρμόζονται μετά τη συνένωση των δύο σχέσεων Βάσεις Δεδομένων SQL - Μέρος Τρίτο 23

ΟόροςHAVING (1) Συνθήκη σε ομάδες: Σε ορισμένες ερωτήματα με ομαδοποίηση θέλουμε να ανακτήσουμε τιμές συναρτήσεων μόνο για ομάδες που ικανοποιούν ορισμένες συνθήκες Επιλογή Ομάδας: ΟόροςHAVING μας επιτρέπει να ορίζουμε συνθήκη επιλογής ομάδων Οι όροι HAVING και WHERE: HAVING: Επιλογή ομάδων WHERE: Επιλογή πλειάδων Βάσεις Δεδομένων SQL - Μέρος Τρίτο 24

ΟόροςHAVING (2) Παράδειγμα: Για κάθε έργο, στο οποίο απασχολούνται περισσότεροι από δύο εργαζόμενοι, να ανακτηθεί ο κωδικός το έργου, το όνομα του έργου και το πλήθος των εργαζομένων που απασχολούνται στο έργο SELECT PNUMBER, PNAME, COUNT(*) FROM PROJECT, WORKS_ON WHERE PNUMBER=PNO GROUP BY PNUMBER, PNAME HAVING COUNT (*) > 2; Βάσεις Δεδομένων SQL - Μέρος Τρίτο 25

Σύγκριση SUBSTRING (1) Ο τελεστής LIKE επιτρέπει παραμετροποιημένη σύγκριση strings Υποστηρίζονται δύο ειδικοί χαρακτήρες: Ο χαρακτήρας % (ή '*' σε ορισμένες υλοποιήσεις της SQL): Αντικαθιστά οποιοδήποτε πλήθος διαδοχικών χαρακτήρων Ο χαρακτήρας _ : Αντικαθιστά ένα οποιοδήποτε χαρακτήρα Βάσεις Δεδομένων SQL - Μέρος Τρίτο 26

Σύγκριση SUBSTRING (2) Παράδειγμα: Να ανακτηθούν όλο οι εργαζόμενοι με διεύθυνση στο Houston, Texas. Παρατήρηση: Θα πρέπει το γνώρισμα ADDRESS του εργαζομένου να περιέχει το substring 'Houston,TX SELECT FNAME, LNAME FROM EMPLOYEE WHERE ADDRESS LIKE %Houston,TX% ; Βάσεις Δεδομένων SQL - Μέρος Τρίτο 27

Σύγκριση SUBSTRING (2) Παράδειγμα: Να ανακτηθούν όλοι οι εργαζόμενοι που το δεύτερο γράμμα του ονόματός τους είναι a SELECT FNAME, LNAME FROM EMPLOYEE WHERE FNAME LIKE _a% ; Ο τελεστής LIKE μας επιτρέπει να παραβιάζουμε την αρχή ότι οι τιμές των γνωρισμάτων στο σχεσιακό μοντέλο δεδομένων είναι ατομικές Επομένως στην SQL ο τύπος δεδομένων string μπορεί να αντιμετωπισθεί και ως μη ατομικός τύπος Βάσεις Δεδομένων SQL - Μέρος Τρίτο 28

Αριθμητικοί Τελεστές Οι αριθμητικοί τελεστές '+', '-'. '*', and '/' μπορούν να εφαρμοστούν σε αριθμητικές τιμές αποτελεσμάτων SQL ερωτημάτων Παράδειγμα: Δημιουργία λίστας των εργαζομένων που απασχολούνται στο έργο με όνομα 'ProductX. Ηλίστα να περιλαμβάνει για κάθε εργαζόμενο το όνομα, το επίθετο και το μισθό που θα είχε ο εργαζόμενος εάν έπαιρνε αύξηση 10% SELECT FROM WHERE FNAME, LNAME, 1.1*SALARY EMPLOYEE, WORKS_ON, PROJECT SSN=ESSN AND PNO=PNUMBER AND PNAME='ProductX ; Βάσεις Δεδομένων SQL - Μέρος Τρίτο 29

Σύνοψη Ερωτημάτων SQL (Summary of SQL Queries) Βάσεις Δεδομένων SQL - Μέρος Τρίτο 30

Σύνοψη Ερωτημάτων SQL (1) Ένα ερώτημα στη SQL μπορεί να περιλαμβάνει μέχρι και 6 όρους Υποχρεωτικοί όροι είναι οι όροι SELECT και FROM Οι όροι δίνονται με την παρακάτω σειρά: SELECT <attribute list> FROM <table list> [WHERE <condition>] [GROUP BY <grouping attribute(s)>] [HAVING <group condition>] [ORDER BY <attribute list>] Βάσεις Δεδομένων SQL - Μέρος Τρίτο 31

Σύνοψη Ερωτημάτων SQL (2) Οι όροι ενός ερωτήματος SQL SELECT: Προσδιορίζει τα γνωρίσματα και τις συναρτήσεις που θα ανακτηθούν/υπολογιστούν FROM: Δηλώνει όλες τις σχέσεις (ηταψευδώνυμα) που απαιτούνται στο ερώτημα (εξαιρούνται οι σχέσεις που απαιτούνται στα εμφωλευμένα ερωτήματα) WHERE: Δηλώνει τις συνθήκες για επιλογή και συνένωση πλειάδων των σχέσεων που ορίζονται στον όρο FROM GROUP BY: Δηλώνει γνωρίσματα για την ομαδοποίηση HAVING: Προσδιορίζει συνθήκες για την επιλογή ομάδων ORDER BY: Προσδιορίζει τη διάταξη για την εμφάνιση των αποτελεσμάτων του ερωτήματος Ένα ερώτημα υπολογίζεται εφαρμόζοντας πρώτα τον όρο WHERE, μετά τους όρους GROUP BY και HAVING, και τέλος τον όρο SELECT Βάσεις Δεδομένων SQL - Μέρος Τρίτο 32