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

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

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

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

Lecture 14: SQL DML I

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

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

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

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

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

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

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

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

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

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

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

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

Lecture 16: SQL DML III

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

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


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

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

Lecture 15: SQL DML II


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

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

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

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

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

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

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

SQL Data Manipulation Language

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

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

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

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

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

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

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

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

Διάλεξη 07: Σχεσιακό Μοντέλο II (Relational Data Model) Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

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

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

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

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

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

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

1 / 150

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

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


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

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

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

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

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

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

1 / 105

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

Ερωτήματα επιλογής με σύζευξη πινάκων

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

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

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

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

Διαχείριση Πολιτισμικών Δεδομένων

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

DISTINCT, LIKE, NULL, AND, OR, BETWEEN

Τελεστής Προβολής - Παράδειγμα. Π Πόλη, Εξάμηνο (Φοιτητές)

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

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

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

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

1 / 97

Διάλεξη 08: Αντιστοίχηση Εννοιολογικού σε Σχεσιακό Μοντέλο (ER/EER to Relational) Διδάσκων: Παναγιώτης Ανδρέου

1 / 87

Department of Computer Science University of Cyprus. EPL342 Databases. Lecture 8: RM II. Relational Model. (Chapter )

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

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

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

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

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

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

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

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

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

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


ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

Εργαστήριο βάσεων δεδομένων. Εισαγωγή στη MySQL (2)

SQL Data Manipulation Language

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

Lecture 21: Functional Dependencies and Normalization

Βάσεις Δεδομένων (Ε) Εισαγωγή στην υλοποίηση σχεσιακών βάσεων δεδομένων

DELETE, UPDATE, INSERT.

Η Γλώσσα Βάσεων εδοµένων SQL

Transcript:

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

Ασάφεια και Πλήρη Ονόματα Ονόματα Πεδίων: Στην SQL, τα ονόματα των πεδίων (γνωρισμάτων) σε κάθε σχέση είναι τοπικά Ίδια Ονόματα: Επομένως δύο πεδία που ανήκουν σε διαφορετικές σχέσεις (πίνακες) μπορούν να έχουν το ίδιο όνομα, χωρίς αυτό να σημαίνει ότι σχετίζονται Πρόθεμα: Όταν σε μια εντολή SQL υπάρχει περίπτωση να προκύψει ασάφεια μπορούμε να χρησιμοποιήσουμε στο όνομα του πεδίου ως πρόθεμα το όνομα της σχέσης στην οποία ανήκει Παράδειγμα: Εάν υπάρχει πεδίο NAME στον πίνακα EMPLOYEE και πεδίο NAME στον πίνακα DEPARTMENT και εμφανίζονται και οι δύο πίνακες σε ένα ερώτημα SQL, μπορούμε να γράψουμε: SELECT EMPLOYEE.NAME, DEPARTMENT.NAME FROM Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 2

Ψευδώνυμα (Aliases) (1) Μία σχέση είναι πιθανό να εμφανίζεται περισσότερες από μία φορές σε ένα ερώτημα SQL Ψευδώνυμα: Στην περίπτωση αυτή (αλλά και κάθε άλλη περίπτωση) μπορούμε να χρησιμοποιήσουμε ψευδώνυμα γιατοόνοματηςσχέσης Παράδειγμα: Για κάθε εργαζόμενο, να βρεθεί το όνομα του εργαζομένου και το όνομα του προϊσταμένου του SELECT E.FNAME, E.LNAME, S.FNAME, S.LNAME FROM EMPLOYEE E, EMPLOYEE S WHERE E.SUPERSSN=S.SSN Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 3

Ψευδώνυμα (Aliases) (2) Παράδειγμα: Για κάθε εργαζόμενο, να βρεθεί το όνομα του εργαζομένου και το όνομα του προϊσταμένου του SELECT E.FNAME, E.LNAME, S.FNAME, S.LNAME FROM EMPLOYEE E, EMPLOYEE S WHERE E.SUPERSSN=S.SSN Τα ονόματα E και S είναι ψευδώνυμα για τη σχέση EMPLOYEE Μπορούμε να θεωρήσουμε το E και το S ως δύο διαφορετικά (υποθετικά) αντίγραφα της σχέσης EMPLOYEE Το E αναπαριστά την οντότητα EMPLOYEE στο ρόλο του εργαζόμενου Το S αναπαριστά την οντότητα EMPLOYEE στο ρόλο του προϊσταμένου Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 4

Ασαφή Ονόματα και Μετονομασία select ONOMA, ERGAZOMENOS.ONOMA, DIEYHYNSH from ERGAZOMENOS, TMHMA where TMHMA.ONOM = Research and TMHMA.KOD_TMHM=ERGAZOMENOS.KOD_TMHM; select E.ONOMA, E.EPITHETO, S.ONOMA, S.EPITHETO from ERGAZOMENOS E, ERGAZOMENOS S where E.PROISTAMENOS = S.AT; select S.NAME as ONOMA from STUDENT S, STUDENT T where S.AM = T.AM; Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 5

Ερώτημα χωρίς τον όρο WHERE (1) WHERE: Όταν λείπει ο όρος WHERE από ένα ερώτημα, δεν ορίζεται καμία συνθήκη για την επιλογή των εγγραφών (πλειάδων) της σχέσης Επομένως: Επιλέγονται όλες οι πλειάδες που παράγονται από τον όρο FROM WHERE TRUE: Ουσιαστικά είναι σα να χρησιμοποιούμε τη συνθήκη WHERE TRUE Παράδειγμα: Να ανακτηθούν οι αριθμοί ταυτότητας όλων των εργαζομένων. SELECT SSN FROM EMPLOYEE; Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 6

Ερώτημα χωρίς τον όρο WHERE (2) Καρτεσιανό Γινόμενο: Εάν ορισθούν 2 ή περισσότερες σχέσεις στον όρο FROM και δεν υπάρχει όρος WHERE, το αποτέλεσμα του ερωτήματος θα είναι το καρτεσιανό γινόμενο Παράδειγμα: SELECT SSN, DNAME FROM EMPLOYEE, DEPARTMENT; Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 7

Το σύμβολο * Όλαταγνωρίσματα: Δηλώνοντας το σύμβολο * στον όρο SELECT ζητούμεναεμφανισθούνόλαταγνωρίσματααπότις πλειάδες που θα επιλεγούν Παραδείγματα: Q1C: SELECT * FROM EMPLOYEE WHERE DNO=5 ; Q1D: SELECT * FROM EMPLOYEE, DEPARTMENT WHERE DNAME='Research' AND DNO=DNUMBER ; Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 8

Αστερίσκος και Εντολή χωρίς Where select name, am from students; select * from students; Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 9

DISTINCT Η SQL σε αντίθεση με το σχεσιακό μοντέλο δεδομένων δεν επιβάλλει να είναι κάθε σχέση ένα σύνολο: Επομένως επιτρέπεται να εμφανίζονται διπλές και γενικότερα πολλαπλές πλειάδες Εάν θέλουμε να εξαλειφθούν τυχόν διπλές πλειάδες στο αποτέλεσμα ενός query μπορούμε να χρησιμοποιήσουμε τη λέξη κλειδί DISTINCT Παράδειγμα: Ηλίστατωνμισθώνόλωντωνεργαζομένων: Q11: SELECT SALARY FROM EMPLOYEE; Q11A: SELECT DISTINCT SALARY FROM EMPLOYEE; Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 10

Συνολοθεωρητικές Πράξεις Η SQL υποστηρίζει βασικές συνολοθεωρητικές πράξεις UNION: Η πράξη της ένωσης INTERSECT: Τομή συνόλων MINUS: Διαφορά συνόλων Τα αποτελέσματα των πράξεων αυτών είναι σύνολα πλειάδων: Επομένως διπλές πλειάδες εξαλείφονται! Συμβατότητα: Οι συνολοθεωρητικές πράξεις εφαρμόζονται μόνο μεταξύ συμβατών σχέσεων Οι σχέσεις θα πρέπει να έχουν τα ίδια γνωρίσματα και τα γνωρίσματα πρέπει να εμφανίζονται με την ίδια σειρά Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 11

Σύνολα: Ένωση select s.name as ONOMA from student s where Etos = 3 UNION select t.name as ONOMA from student t where Etos = 4; Με διπλότυπες γραμμές: select s.name as ONOMA from student s where Etos = 3 UNION ALL select t.name as ONOMA from student t where Etos = 4; Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 12

Σύνολα: Αφαίρεση select distinct s.name as ONOMA from student s minus select t.name as ONOMA from student t where t.supervisor = '2345'; Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 13

Σύνολα: Τομή select distinct s.name as ONOMA from student s intersect select t.name as ONOMA from student t where t.supervisor = '2345'; Προσοχή: CASE SENSITIVE Επίσης NOT IN, EXISTS, NOT EXISTS (παρακάτω) Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 14

Παράδειγμα Παράδειγμα: Λίστα όλων των έργων στα οποία απασχολείται εργαζόμενος με επίθετο 'Smith' ή το τμήμα που έχει την ευθύνη του έργου έχει διευθυντή με επίθετο 'Smith. (SELECT PNAME FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE DNUM=DNUMBER AND MGRSSN=SSN AND LNAME='Smith') UNION (SELECT PNAME FROM PROJECT, WORKS_ON, EMPLOYEE WHERE PNUMBER=PNO AND ESSN=SSN AND LNAME='Smith') Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 15

Τιμές NULL στην SQL (1) Η SQL επιτρέπει ερωτήματα που ελέγχουν εάν μια τιμή είναι NULL (δεν υπάρχει, δεν προσδιορίζεται ή δεν εφαρμόζεται) Σημείωση: ΗτιμήNULL δεν ισούται με καμία άλλη τιμή. Μάλιστα δύο τιμές NULL δεν θεωρείται ότι είναι ίσες, δηλαδή η συνθήκη NULL = NULL δεν είναι αληθής IS (NOT) NULL: Για τον έλεγχο τιμών NULL η SQL χρησιμοποιεί τις συνθήκες IS NULL και IS NOT ΝULL Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 16

Τιμές NULL στην SQL (2) Παράδειγμα: Ανάκτηση των ονομάτων ολων των εργαζομένων που δεν έχουν επιβλέποντα Q14: SELECT FNAME, LNAME FROM EMPLOYEE WHERE SUPERSSN IS NULL Σημείωση: Εάν σε μια συνθήκη συνένωσης υπάρχουν πλειάδες με τιμές NULL στα πεδία συνένωσης, οι πλειάδες αυτές δεν θα περιλαμβάνονται στο αποτέλεσμα. Θα εξετάσουμε την πράξη της εξωτερικής συνένωσης (outer join) για αυτές τις περιπτώσεις Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 17

Τιμές NULL select * from ergazomenos where proistamenos IS NULL; select * from ergazomenos where proistamenos IS NOT NULL; Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 18

ΒETWEEN select E.SSN ONOMA from EMPLOYEE E where E.SALARY BETWEEN 1000 and 2000; Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 19

Ρητά σύνολα τιμών Η SQL επιτρέπει στον where τη δήλωση ενός συγκεκριμένου συνόλου τιμών: Παράδειγμα: Ανάκτηση των αριθμών ταυτότητας των εργαζομένων που απασχολούνται σε ένα τουλάχιστον απόταέργαμεκωδικό1, 2 ή 3. Q13: SELECT DISTINCT ESSN FROM WORKS_ON WHERE PNO IN (1, 2, 3) Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 20

Διάταξη των Αποτελεσμάτων select t.name, t.am from student t order by t.am; select t.name, t.am from student t order by t.name ASC, t.am DESC; Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 21

Εμφωλευμένα Ερωτήματα (1) Εμφωλευμένο Ερώτημα: Ένα ερώτημα SELECT το οποίο δηλώνεται στον όρο WHERE ενός άλλου εξωτερικού ερωτήματος Παράδειγμα: Ανάκτηση των ονομάτων και των διευθύνσεων όλων των εργαζομένων του τμήματος με όνομα 'Research SELECT FNAME, LNAME, ADDRESS FROM EMPLOYEE WHERE DNO IN (SELECT DNUMBER FROM DEPARTMENT WHERE DNAME='Research' ) Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 22

Εμφωλευμένα Ερωτήματα (2) Παράδειγμα: Ανάκτηση των ονομάτων και των διευθύνσεων όλων των εργαζομένων του τμήματος με όνομα 'Research SELECT FNAME, LNAME, ADDRESS FROM EMPLOYEE WHERE DNO IN (SELECT DNUMBER FROM DEPARTMENT WHERE DNAME='Research' ) ; Το εμφωλευμένο ερώτημα επιλέγει τον κωδικό τμήματος με όνομα 'Research' Το εξωτερικό ερώτημα επιλέγει μια πλειάδα από τη σχέση EMPLOYEE εάν ο κωδικός τμήματος DNO της πλειάδας ανήκει στο αποτέλεσμα του εμφωλευμένου ερωτήματος Ο τελεστής σύγκρισης IN συγκρίνει μια τιμή v με ένα σύνολο ή multi-set τιμών V, και επιστρέφει TRUE εάν το v είναι ένα από τα στοιχεία του V Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 23

Εμφωλευμένα Ερωτήματα(3) Γενικά, μπορούμε να έχουμε ερωτήματα SELECT με πολλά επίπεδα εμφωλιασμού Σε περίπτωση αμφισημίας κατά την αναφορά σε γνώρισμα για το οποίο που δεν προσδιορίζεται επακριβώς η σχέση, η αναφορά γίνεται στο πιο εμφωλιασμένο επίπεδο του ερωτήματος Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 24

Εμφωλευμένα Ερωτήματα SQL select t.name, t.am from student t where t.supervisor IN ( select p.am from professor p where p.name like '%Sha ' ); Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 25

Συσχετισμένα Εμφωλευμένα Ερωτήματα (1) Συσχετισμένα Ερωτήματα: Εάν μια συνθήκη στον όρο WHERE ενός εμφωλιασμένου ερωτήματος αναφέρεται σε γνώρισμα μιας σχέσης που δηλώνεται σε εξωτερικό ερώτημα, τα δύο ερωτήματα λέμε ότι είναι συσχετισμένα (correlated) Το αποτέλεσμα του εμφωλιασμένου ερωτήματος προσδιορίζεται για κάθε πλειάδα του εξωτερικού ερωτήματος Η εσωτερική σχέση αποτιμάται μια φορά για κάθε πλειάδα της εξωτερικής σχέσης (λογική ερμηνεία του αποτελέσματος) Εργαζόμενοι που έχουν συνονόματο εξαρτώμενο: select E.Onoma, E.Epitheto from ergazomenos E where E.AR_TAYT IN ( select E_ARTAYT from EKSARTWMENOS K where E.Onoma=K.ONOMA_EKSARTWMENOY and E.FYLO = K.FYLO ); Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 26

Συσχετισμένα Εμφωλευμένα Ερωτήματα (2) Παράδειγμα: select E.Onoma, E.Epitheto from ergazomenos E where E.AR_TAYT IN ( select E_ARTAYT from EKSARTWMENOS K where E.Onoma=K.ONOMA_EKSARTWMENOY ); Στο παράδειγμα, το εμφωλιασμένο ερώτημα δίνει ένα διαφορετικά αποτέλεσμα για κάθε πλειάδα του εξωτερικού ερωτήματος Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 27

Συσχετισμένα Εμφωλευμένα Ερωτήματα (3) Ένα ερώτημα που γράφεται με εμφωλιασμένους SELECT... FROM... WHERE... όρους και που χρησιμοποιεί τους τελεστές σύγκρισης = ή IN μπορεί πάντοτε να γραφεί ως ερώτημα χωρίς εμφωλιασμό. Παράδειγμα: Το προηγούμενο εμφωλιασμένο μπορεί να γραφεί ως SELECT E.Onoma, E.Epitheto FROM WHERE Ergazomenos E, Eksartwmenos D E. AR_TAYT=D.E_ARTAYT AND E.Onoma=D.ONOMA_EKSARTWMENOY H αρχική SQL είχε και έναν τελεστή σύγκρισης CONTAINS γιασυσχετισμέναεμφωλιασμέναερωτήματα Ο τελεστής αυτός αφαιρέθηκε από τη γλώσσα, πιθανόν λόγω της δυσκολίας υλοποίησής του Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 28

Συσχετισμένα Εμφωλευμένα Ερωτήματα Οι Διευθυντές με έναν τουλάχιστον εξαρτώμενο: select E.Onoma, E.Epitheto from ergazomenos E where exists ( select * from EKSARTWMENOS K where E.AR_TAYT=K.E_ARTAYT ) and exists ( select * from TMHMA T where T.DIEYTHYNTHS=E.AR_TAYT ); Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 29

ΗσυνάρτησηEXISTS EXISTS: ΗσυνάρτησηEXISTS ελέγχει εάν το αποτέλεσμα ενός συσχετισμένου εμφωλευμένου ερωτήματος είναι κενό (δεν περιέχει πλειάδες) ήόχι Μπορούμε να διατυπώσουμε το ερώτημα για εργαζόμενους με συνονόματο εξαρτώμενο με χρήση της συνάρτησης EXISTS: SELECT Onoma, Epitheto FROM ERGAZOMENOS E WHERE EXISTS (SELECT * FROM EKSARTWMENOS WHERE AR_TAYT=D.E_ARTAYT AND E.Onoma=D.ONOMA_EKSARTWMENOY); Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 30

ΗσυνάρτησηEXISTS (2) Παράδειγμα: Ανάκτηση των ονομάτων των εργαζομένων που δεν έχουν εξαρτώμενα μέλη SELECT Onoma, Epitheto FROM WHERE ERGAZOMENOS NOT EXISTS (SELECT * FROM EKSARTWMENOS WHERE AR_TAYT=D.E_ARTAYT); Το συσχετισμένο εμφωλιασμένο ερώτημα ανακτά όλες τις πλειάδες της σχέσης EKSARTWMENOS που σχετίζονται με μία πλειάδα της σχέσης ERGAZOMENOS ΗσυνάρτησηEXISTS είναι απαραίτητη για την εκφραστική ισχύ της γλώσσας SQL Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 31