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

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

Βάσεις Δεδομένων Προχωρημένα Ερωτήματα 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

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

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

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

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

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

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

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

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

Lecture 16: SQL DML III

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

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


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

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

Lecture 15: SQL DML II

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


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

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

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

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

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

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

SQL Data Manipulation Language

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1 / 150

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

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

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

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


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

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

1 / 105

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

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

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

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

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

DISTINCT, LIKE, NULL, AND, OR, BETWEEN

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

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

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

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

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

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

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

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

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

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

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

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

1 / 97

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

1 / 87

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

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

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

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

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

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

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

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

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

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

Lecture 21: Functional Dependencies and Normalization

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

DELETE, UPDATE, INSERT.

DELETE, UPDATE, INSERT

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


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

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

SQL Data Manipulation Language

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

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 E, EMPLOYEE S WHERE E.SUPERSSN=S.SSN Ψευδώνυμα (Aliases) (2) Παράδειγμα: Για κάθε εργαζόμενο, να βρεθεί το όνομα του εργαζομένου και το όνομα του προϊσταμένου του SELECT E.FNAME, E.LNAME, S.FNAME, S.LNAME E, EMPLOYEE S WHERE E.SUPERSSN=S.SSN Τα ονόματα E και S είναι ψευδώνυμα για τη σχέση EMPLOYEE Μπορούμε να θεωρήσουμε το E και το S ως δύο διαφορετικά (υποθετικά) αντίγραφα της σχέσης EMPLOYEE Το E αναπαριστά την οντότητα EMPLOYEE στο ρόλο του εργαζόμενου Το S αναπαριστά την οντότητα EMPLOYEE στο ρόλο του προϊσταμένου Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 3 Βάσεις Δεδομένων 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; Ερώτημα χωρίς τον όρο WHERE (1) WHERE: Όταν λείπει ο όρος WHERE από ένα ερώτημα, δεν ορίζεται καμία συνθήκη για την επιλογή των εγγραφών (πλειάδων) της σχέσης Επομένως: Επιλέγονται όλες οι πλειάδες που παράγονται από τον όρο FROM WHERE TRUE: Ουσιαστικά είναι σα να χρησιμοποιούμε τη συνθήκη WHERE TRUE Παράδειγμα: Να ανακτηθούν οι αριθμοί ταυτότητας όλων των εργαζομένων. SELECT SSN ; Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 5 Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 6 1

Ερώτημα χωρίς τον όρο WHERE (2) Καρτεσιανό Γινόμενο: Εάν ορισθούν 2 ή περισσότερες σχέσεις στον όρο FROM και δεν υπάρχει όρος WHERE, το αποτέλεσμα του ερωτήματος θα είναι το καρτεσιανό γινόμενο Παράδειγμα: SELECT SSN, DNAME, DEPARTMENT; Το σύμβολο * Όλαταγνωρίσματα: Δηλώνοντας το σύμβολο * στον όρο SELECT ζητούμεναεμφανισθούνόλαταγνωρίσματααπότις πλειάδες που θα επιλεγούν Παραδείγματα: Q1C: SELECT * WHERE DNO=5 ; Q1D: SELECT *, DEPARTMENT WHERE DNAME='Research' AND DNO=DNUMBER ; Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 7 Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 8 Αστερίσκος και Εντολή χωρίς Where select name, am from students; select * from students; Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 9 DISTINCT Η SQL σε αντίθεση με το σχεσιακό μοντέλο δεδομένων δεν επιβάλλει να είναι κάθε σχέση ένα σύνολο: Επομένως επιτρέπεται να εμφανίζονται διπλές και γενικότερα πολλαπλές πλειάδες Εάν θέλουμε να εξαλειφθούν τυχόν διπλές πλειάδες στο αποτέλεσμα ενός query μπορούμε να χρησιμοποιήσουμε τη λέξη κλειδί DISTINCT Παράδειγμα: Ηλίστατωνμισθώνόλωντωνεργαζομένων: Q11: SELECT SALARY ; Q11A: SELECT DISTINCT SALARY ; Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 10 Συνολοθεωρητικές Πράξεις Η SQL υποστηρίζει βασικές συνολοθεωρητικές πράξεις UNION: Ηπράξητηςένωσης INTERSECT: Τομή συνόλων MINUS: Διαφορά συνόλων Τα αποτελέσματα των πράξεων αυτών είναι σύνολα πλειάδων: Επομένως διπλές πλειάδες εξαλείφονται! Συμβατότητα: Οι συνολοθεωρητικές πράξεις εφαρμόζονται μόνο μεταξύ συμβατών σχέσεων Οι σχέσεις θα πρέπει να έχουν τα ίδια γνωρίσματα και τα γνωρίσματα πρέπει να εμφανίζονται με την ίδια σειρά Σύνολα: Ένωση select s.name as ONOMA where Etos = 3 UNION where Etos = 4; Με διπλότυπες γραμμές: select s.name as ONOMA where Etos = 3 UNION ALL where Etos = 4; Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 11 Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 12 2

Σύνολα: Αφαίρεση select distinct s.name as ONOMA minus where t.supervisor = '2345'; Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 13 Σύνολα: Τομή select distinct s.name as ONOMA intersect 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') Τιμές NULL στην SQL (1) Η SQL επιτρέπει ερωτήματα που ελέγχουν εάν μια τιμή είναι NULL (δεν υπάρχει, δεν προσδιορίζεται ή δεν εφαρμόζεται) Σημείωση: ΗτιμήNULL δεν ισούται με καμία άλλη τιμή. Μάλιστα δύο τιμές NULL δεν θεωρείται ότι είναι ίσες, δηλαδή η συνθήκη NULL = NULL δεν είναι αληθής IS (NOT) NULL: Για τον έλεγχο τιμών NULL η SQL χρησιμοποιεί τις συνθήκες IS NULL και IS NOT ΝULL Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 15 Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 16 Τιμές NULL στην SQL (2) Παράδειγμα: Ανάκτηση των ονομάτων ολων των εργαζομένωνπουδενέχουνεπιβλέποντα Q14: SELECT FNAME, LNAME WHERE SUPERSSN IS NULL Σημείωση: Εάν σε μια συνθήκη συνένωσης υπάρχουν πλειάδες με τιμές NULL στα πεδία συνένωσης, οι πλειάδες αυτές δεν θα περιλαμβάνονται στο αποτέλεσμα. Θα εξετάσουμε την πράξη της εξωτερικής συνένωσης (outer join) για αυτές τις περιπτώσεις Τιμές NULL select * from ergazomenos where proistamenos IS NULL; select * from ergazomenos where proistamenos IS NOT NULL; Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 17 Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 18 3

ΒETWEEN select E.SSN ONOMA from EMPLOYEE E where E.SALARY BETWEEN 1000 and 2000; Ρητά σύνολα τιμών Η SQL επιτρέπει στον where τη δήλωση ενός συγκεκριμένου συνόλου τιμών: Παράδειγμα: Ανάκτηση των αριθμών ταυτότητας των εργαζομένων που απασχολούνται σε ένα τουλάχιστον απόταέργαμεκωδικό1, 2 ή 3. Q13: SELECT DISTINCT ESSN FROM WORKS_ON WHERE PNO IN (1, 2, 3) Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 19 Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 20 Διάταξη των Αποτελεσμάτων select t.name, t.am order by t.am; select t.name, t.am order by t.name ASC, t.am DESC; Εμφωλευμένα Ερωτήματα (1) Εμφωλευμένο Ερώτημα: Ένα ερώτημα SELECT το οποίο δηλώνεται στον όρο WHERE ενός άλλου εξωτερικού ερωτήματος Παράδειγμα: Ανάκτηση των ονομάτων και των διευθύνσεων όλων των εργαζομένων του τμήματος με όνομα 'Research SELECT FNAME, LNAME, ADDRESS WHERE DNO IN (SELECT DNUMBER FROM DEPARTMENT WHERE DNAME='Research' ) Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 21 Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 22 Εμφωλευμένα Ερωτήματα (2) Παράδειγμα: Ανάκτηση των ονομάτων και των διευθύνσεων όλων των εργαζομένων του τμήματος με όνομα 'Research SELECT FNAME, LNAME, ADDRESS WHERE DNO IN (SELECT DNUMBER FROM DEPARTMENT WHERE DNAME='Research' ) ; Το εμφωλευμένο ερώτημα επιλέγει τον κωδικό τμήματος με όνομα 'Research' Το εξωτερικό ερώτημα επιλέγει μια πλειάδα από τη σχέση EMPLOYEE εάν οκωδικόςτμήματοςdno της πλειάδας ανήκει στο αποτέλεσμα του εμφωλευμένου ερωτήματος Ο τελεστής σύγκρισης IN συγκρίνει μια τιμή v με ένα σύνολο ή multi-set τιμών V, και επιστρέφει TRUE εάν το v είναι ένα από τα στοιχεία του V Εμφωλευμένα Ερωτήματα(3) Γενικά, μπορούμε να έχουμε ερωτήματα SELECT με πολλά επίπεδα εμφωλιασμού Σε περίπτωση αμφισημίας κατά την αναφορά σε γνώρισμα για το οποίο που δεν προσδιορίζεται επακριβώς η σχέση, η αναφορά γίνεται στο πιο εμφωλιασμένο επίπεδο του ερωτήματος Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 23 Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 24 4

Εμφωλευμένα Ερωτήματα SQL select t.name, t.am where t.supervisor IN ( select p.am from professor p where p.name like '%Sha ' Συσχετισμένα Εμφωλευμένα Ερωτήματα (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 - Μέρος Δεύτερο 25 Βάσεις Δεδομένων 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 5

Ησυνάρτηση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 6