Lecture 14: SQL DML I

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

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

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

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

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

Lecture 16: SQL DML III

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

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

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

Lecture 14: SQL DML I

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

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

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

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

Lecture 21: Functional Dependencies and Normalization

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

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

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

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

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

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

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

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

Lecture 15: SQL DML II

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

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

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

Διάλεξη 04: Εννοιολογική Σχεδίαση Βάσης Δεδομένων II (Entity Relationship Modelling) Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

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

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

Lecture 8: RM I + RA I

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

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

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

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

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

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

Διάλεξη 16: SQL DML IV, SQL DCL, SQL TCL. Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

Department of Computer Science University of Cyprus. EPL342 Databases. Lecture 5: ER II. Data Modeling Using the ER Model

Lecture 21: Functional Dependencies and Normalization

SQL Data Manipulation Language

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

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

Lecture 23: Functional Dependencies and Normalization

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

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

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

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

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

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

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

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

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

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

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

Κλειδιά (keys) Λογικά, σκεφτόµαστε για «κλειδιά» σαν τα δεδοµένα (τα πεδία) εκείνα τα οποία µας επιτρέπουν να ξεχωρίσουµε τις διάφορες εγγραφές

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

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

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

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

Διάλεξη 12: SQL Data Definition Language. Διδάσκων: Παναγιώτης Ανδρέου

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

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

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

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

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

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL

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

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

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

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

1 / 97

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

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

Διάλεξη 03: Εννοιολογική Σχεδίαση Βάσης Δεδομένων I (Entity Relationship Modelling) Διδάσκων: Παναγιώτης Ανδρέου

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

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

1 / 87

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

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


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

Βάσεις Δεδομένων Ευαγγελία Πιτουρά 2. Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων)

Entity-Relationship Model (Chen) Οντολογικό Σχεσιακό Μοντέλο

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

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

Lecture 12: SQL DDL I

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

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

Βάσεις Δεδομένων Ευαγγελία Πιτουρά 2. Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων)


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

Transcript:

Department of Computer Science University of Cyprus EPL342 Databases Lecture 14: SQL DML I SQL Structured Query Language (Chapter 8.4, Elmasri-Navathe 5ED) ιδάσκων: Παναγιώτης Ανδρέου http://www.cs.ucy.ac.cy/courses/epl342 14-1

Περιεχόμενο ιάλεξης Κεφάλαιο 8.4: SQL DML I Εισαγωγή στην SQL-DML ( ιαφορές SQL-DML με Σχεσιακό Μοντέλο / Άλγεβρα). Άπλες Εκφράσεις σε SQL (SELECT-FROM- WHERE) Απλές Συνενώσεις σε SQL ιφορούμενα Ονόματα Γνωρισμάτων και το Γνώρισμα * Περίπτωση Μη-προσδιορισμένου WHERE Χρήση DISTINCT σε γνωρίσματα. Πράξεις Συνόλων με SQL 14-2

Εισαγωγή στη SQL Στις προηγούμενες δυο διαλέξεις ξεκινήσαμε την μελέτη μιας πραγματική γλώσσα βάσεων δεδομένων την SQL (Structured Query Language). Γλώσσα Ορισμού εδομένων (Data Definition Language, SQL-DDL) Γλώσσα Επεξεργασίας εδομένων (Data Manipulation Language, SQL-DML) Εάν και θα αναφερόμαστε στo πρότυπο SQL:99-DML, αυτό υλοποιείται σε μεγάλο βαθμό από τους κατασκευαστές βάσεων δεδομένων (π.χ., στην TSQL) Αυτό είναι σε αντίθεση με την SQL-DDL η οποία αντιμετωπίζει αρκετά προβλήματα συμβατότητας μεταξύ κατασκευαστών. Σε επερωτήσεις SQL συνιστάται η συμβατότητα με το πρότυπο ANSI/ISO SQL:99 Παρόλο που πολλές φορές θα σας δημιουργείται ένα δίλλημα μεταξύ Επίδοσης (Performance) και Μεταφερσιμότητας (Portability) του κώδικα. 14-3

ιαφορές της SQL και του Σχεσιακού Μοντέλου/Άλγεβρας: ιαφορές SQL και Σχεσιακού Μοντέλου / Άλγεβρας A) H SQL στηρίζεται σε Σύνολα-μη- ιακριτών-τιμών ή αλλιώς Πολυσύνολα (Μulti-set), ενώ το Σχεσιακό Μοντέλο / Άλγεβρα σε Απλά Σύνολα (διακριτών-τιμών). Συνεπώς, η SQL επιτρέπει τα διπλότυπα (duplicates) σε σχέσεις και αποτελέσματα επερωτήσεων ενώ το Σχεσιακό Μοντέλο / Άλγεβρα όχι. Σημειώστε ότι οι σχέσεις SQL μπορούν να περιοριστούν έτσι ώστε να συμπεριφέρονται ως μαθηματικά σύνολα κάνοντας χρήση περιορισμών PRIMARY KEY, UNIQUE, ή με χρήση του DISTINCT το οποίο θα δούμε σε λίγο Β) Σχέσεις SQL και αποτελέσματα έχουν διάταξη (order) ενώ στο Σχεσιακό Μοντέλο / Άλγεβρα δεν έχουν, δηλ., Επίπεδο Σχέσης: Σειρά αποθήκευσης στοιχείων στον δίσκο Επίπεδο Επερώτησης: Αύξουσα Σειρά / Φθίνουσα Σειρά 14-4

ιαφορές της SQL και του Σχεσιακού Μοντέλου/Άλγεβρας: Ένα πολυσύνολο (multi-set or bag) είναι ένα μηδιατεταγμένο σύνολο στοιχείων, όπου ένα στοιχείο μπορεί να εμφανίζεται περισσότερο από μια φορά. Παράδειγμα: {A, B, C, A} είναι ένα πολυσύνολο, ενώ το {A, B, C} είναι πολυσύνολο και απλό σύνολο. Η SQL παράγει πολυσύνολα στα οποία υπάρχει διάταξη (κάποια σειρά) στα αποτελέσματα (ουσιαστικά λίστες). Παράδειγμα: {A, B} = {B, A, A} ως Σύνολα {A, B, A} = {B, A, A} ως Πολυσύνολα [A, B, A] [B, A, A] ως Λίστες (που παράγονται στην SQL) 14-5

Απλές Επερωτήσεις σε SQL H βασική έκφραση SQL για διατύπωση επερωτήσεων ονομάζεται SELECT-FROM-WHERE μπλοκ (ή mapping) SELECT <attribute list> FROM <table list> [WHERE <condition>] <attribute list> Είναι μια λίστα γνωρισμάτων των οποίων η τιμή πρέπει να ανακτηθεί από μια επερώτηση. Αντίστοιχο του τελεστή προβολής π. <table list> είναι μια λίστα από ονόματα σχέσεων από τα οποία θα γίνει η ανάκτηση των αποτελεσμάτων. Αντίστοιχο της σχέσης που συμμετέχει σε ένα Σχεσιακό Τελεστή. <condition> είναι μια λογική έκφραση (Boolean) ή οποία πρέπει να αποτιμηθεί για να επιστραφούν τα αποτελέσματα Αντίστοιχο του τελεστή επιλογής σ. Τα αποτελέσματα επιστρέφονται κάποτε σε αύξουσα σειρά του attribute list (όχι σε SQL Server). 14-6

Άπλες Επερωτήσεις SQL (Simple SQL Queries) Η SQL μπορεί να χρησιμοποιηθεί για να δηλωθούν πολύ σύνθετες και περίπλοκες επερωτήσεις. Σήμερα θα επικεντρωθούμε μόνο στα bold μέρη: SELECT attribute list FROM table list WHERE selection-condition GROUP BY grouping attribute(s) HAVING grouping condition ORDER BY ASC DESC Το απλό SELECT-FROM-WHERE μπλοκ θα επεκταθεί αργότερα με έννοιες ομαδοποίησης, συναθροιστικών συναρτήσεων, εμφωλευμένων επερωτήσεων, κ.α. TSQL SELECT-FROM-WHERE Reference: http://msdn.microsoft.com/en-us/library/ms189499.aspx 14-7

Απλές Επερωτήσεις (Επερώτηση σε 1 Σχέση) Query 0: Ανάκτηση το birthdate και address των employee των οποίων το name είναι 'John B. Smith'. Q0: SELECT BDATE, ADDRESS FROM EMPLOYEE WHERE FNAME='John' AND MINIT='B AND LNAME='Smith Αντίστοιχο με την έκφραση σχεσιακής άλγεβρας Τ1 σ (FNAME='John' AND MINIT='B AND LNAME='Smith ) (EMPLOYEE) T2 π BDATE, ADDRESS (Τ1) Η προβολη (π) παρουσιάζεται με Μπλε ενώ οι επιλογή (σ) με Κόκκινο. Σημειώστε ότι στο Q0 μπορεί να εμπεριέχονται διπλότυπα ενώ στην αντίστοιχη έκφραση Σχεσιακής Άλγεβρας δεν υπάρχουν 14-8

Απλές Επερωτήσεις (Επερώτηση σε 2 Σχέσεις) Query 1: Ανάκτησε τα names και addresses όλων των υπαλλήλων που δουλεύουν για το 'Research' department. Q1:SELECT FNAME, LNAME, ADDRESS FROM WHERE EMPLOYEE, DEPARTMENT DNAME='Research' AND DNUMBER=DNO Αντίστοιχο με την έκφραση σχεσιακής άλγεβρας Τ1 EMPLOYEE DNO=Dnumber (σ DNAME='Research' Department)) T2 π FNAME, LNAME, ADDRESS (Τ1) DNAME='Research': Συνθήκη Επιλογής (σ) DNUMBER=DNO: Συνθήκης Συνένωσης ( ) FNAME,LNAME,ADDRESS: Γνωρίσματα Προβολής (π) 14-9

Απλές Επερωτήσεις (Επερώτηση σε 3 Σχέσεις) Query 2: Για κάθε project στην πόλη 'Stafford', παρουσίασε το project number, το τμήμα που ελέγχει το project και τα ακόλουθα: επίθετο (last name) του department manager, διεύθυνση (address) και ημερομηνία γέννησης (birthdate). Stafford Q2: SELECT PNUMBER,DNUM,LNAME,BDATE,ADDRESS FROM PROJECT, DEPARTMENT, EMPLOYEE WHERE DNUM=DNUMBER AND MGRSSN=SSN AND PLOCATION='Stafford Σχεσιακή Άλγεβρα Τ1 π Pnumber, Dnum (σ PLOCATION= Stafford Project)) T2 π Pnumber, Dnum, Mgr_ssn (Department Dnumber=DNum Τ1) T2 π Pnumber, Dnum, Lname, Bdate, Address (Employee SSN=Mgr_ssn Τ2) 14-10

ιφορούμενα Ονόματα Γνωρισμάτων (Ambiguous Attribute Names) Στην SQL, μπορούμε να χρησιμοποιήσουμε το ίδιο όνομα για δυο ή περισσότερα γνωρίσματα εφόσον τα γνωρίσματα αυτά ανήκουν σε διαφορετικές σχέσεις Π.χ., Employee(ssn, name, dno) και Deparment(dno, name) Για να αποφευχθούν διφορούμενες καταστάσεις σε περιπτώσεις πολλαπλών σχέσεων (στις οποίες δεν θα είναι γνωστό σε πιο ακριβώς γνώρισμα αναφέρεται η επερώτηση), χρησιμοποιούμε ως πρόθεμα (prefix) το όνομα της σχέσης, π.χ., EMPLOYEE.Νame, DEPARTMENT.Name ή ακόμη καλύτερα να χρησιμοποιήσουμε ένα alias (δες επομένη EPL342: διαφάνεια) Databases - Demetris Zeinalipour (University of Cyprus) 14-11

ιφορούμενα Ονόματα Γνωρισμάτων (Ambiguous Attribute Names) Aliases για μετονομασία Σχέσεων/Γνωρισμάτων προαιρετικό Q1a: SELECT E.FNAME, E.LNAME, E.ADDRESS FROM EMPLOYEE [AS] E, DEPARTMENT [AS] D WHERE D.DNAME='Research' AND D.DNUMBER=E.DNO Ακόμη και εάν δεν υπάρχουν διφορούμενα ονόματα, είναι κάλο να χρησιμοποιείται το Alias γιατί έτσι γίνεται πιο ευανάγνωστος ο κώδικας SQL. Για μετονομασία γνωρισμάτων (όχι σε TSQL) FROM Employee AS E(Fn,Mi,Ln,Ssn,Bd,Addr,Sex,Sal,Sssn,Dno) 14-12

ιφορούμενα Ονόματα Γνωρισμάτων (Ambiguous Attribute Names) Μερικές επερωτήσεις αναφέρονται στην ίδια σχέση πολλαπλές φορές. Σε αυτή την περίπτωση, ανατίθενται διαφορετικά aliases στο όνομα της σχέσης έτσι ώστε να δίνεται η εντύπωση ότι υπάρχουν διαφορετικά στιγμιότυπα. Query 8: Για κάθε employee, ανάκτηση το όνομα του employee, και το όνομα του άμεσα προϊσταμένου του. Q8: SELECT E.FNAME, E.LNAME, S.FNAME, S.LNAME FROM EMPLOYEE E, EMPLOYEE S WHERE E.SUPERSSN=S.SSN E: ρόλος υφιστάμενου (supervisee) S: ρόλος EPL342: προϊσταμένου Databases - Demetris (supervisor) Zeinalipour (University of Cyprus) 14-13

Μη-προσδιορισμένο WHERE O όρος WHERE είναι προαιρετικός σε μια επερώτηση SQL. SELECT <attribute list> FROM <table list> [WHERE <condition>] H μη-ύπαρξη ενός τέτοιου όρου υποδηλώνει ότι ΕΝ υπάρχει συνθήκη επιλογής. Ουσιαστικά, είναι αντίστοιχο της συνθήκης WHERE TRUE Συνεπώς, όλες οι πλειάδες μιας σχέσης επιλέγονται σε μια τέτοια περίπτωση. Query 9: Ανάκτησε το SSN όλων των υπαλλήλων. Q9: SELECT SSN FROM EMPLOYEE 14-14

Μη-προσδιορισμένο WHERE (Περίπτωση Καρτεσιανού Γινομένου) Εάν ορίζονται περισσότερο από μια σχέσεις στον όρο FROM, τότε αυτό υποδηλώνει τον τελεστή Καρτεσιανού Γινομένου (Cartesian Product) Παράδειγμα: Q10: SELECT SSN, DNAME FROM EMPLOYEE, DEPARTMENT Είναι πολύ σημαντικό να μην παραβλέπεται ο ορισμός συνθηκών επιλογής (WHERE) σε συνενώσεις για να μην δημιουργούνται μη-επιθυμητά μεγάλα αποτελέσματα. Κάποιες βάσεις υλοποιούν εξειδικευμένους τελεστές καρτεσιανού γινομένου Π.χ. στην TSQL υπάρχει η εντολή CROSS JOIN SELECT SSN, DNAME FROM EMPLOYEE CROSS JOIN DEPARTMENT Καλύτερα ωστόσο να χρησιμοποιείται η ANSI/ISO εντολή (Q10) 14-15

Χρήση Γνωρίσματος-* Για να ανακτήσουμε ΌΛΑ τα γνωρίσματα μιας πλειάδας σε μια επερώτηση κάνουμε χρήση του γνωρίσματος * (all attributes) Παραδείγματα: Q1C: SELECT * FROM EMPLOYEE WHERE DNO=5 Q1D: SELECT * FROM EMPLOYEE, DEPARTMENT WHERE DNAME='Research' AND DNO=DNUMBER 14-16

Χρήση DISTINCT σε Γνωρίσματα Όπως είχαμε αναφέρει νωρίτερα, η SQL χειρίζεται τις σχέσεις ως Πολυσύνολα με διάταξη, συνεπώς είναι δυνατό να υπάρχουν διπλότυπα (duplicate tuples). Για να εξαλείψουμε τα διπλότυπα σε μια επερώτηση, κάνουμε χρήση της λέξης DISTINCT στον όρο SELECT. Παράδειγμα Employee: «DISTINCT *: όλες οι στήλες μαζί να είναι μοναδικές (ίδιο με «*» όταν μια σχέση έχει PK) Q11: SELECT SALARY FROM EMPLOYEE Q11A: SELECT DISTINCT SALARY FROM EMPLOYEE Q11: Q11Α: 14-17

Χρήση DISTINCT σε Γνωρίσματα Σημειώστε ότι πέρα από το SELECT DISTINCT υπάρχει και το SELECT ALL, το οποίο ΕΝ αφαιρεί τα διπλότυπα. Συγκεκριμένα, SELECT [DISTINCT ALL] <attribute-list> FROM <table-list> Το SELECT ALL αντιπροσωπεύει ουσιαστικά την εξορισμού λειτουργία του SELECT. Όπως αναφέραμε και σε προηγούμενες διαλέξεις, στην SQL πολλά πράγματα δηλώνονται ρητά γιατί έτσι: Ξεκαθαρίζει η πρόθεση του σχεδιαστή Αποφεύγονται προβλήματα συμβατότητας που μπορεί να προκύψουν από την μεταφορά της υλοποίησης σε άλλη βάση δεδομένων. 14-18

Πράξεις Συνόλων σε SQL H SQL:99 υλοποιεί αρκετές πράξεις συνόλων τις οποίες ορίσαμε στα πλαίσια της Σχεσιακής Άλγεβρας. Συγκεκριμένα, υποστηρίζονται οι ακόλουθες πράξεις: Ένωση: UNION [ALL] Τομή: INTERSECT ιαφορά Συνόλων: EXCEPT Προϋποθέτουν ότι τα σύνολα είναι i) συμβατά-προς-τοντύπο και ii) η διάταξη των γνωρισμάτων είναι η ίδια (δεν χρειάζεται να έχουν το ίδιο όνομα) ιαφορά Πράξεων Συνόλων από άλλες πράξεις SQL: Τα αποτελέσματα είναι ΣΥΝΟΛΑ όχι ΠΟΛΥΣΥΝΟΛΑ (συνεπώς δεν υπάρχουν διπλότυπα στις πράξεις αυτές) Θα δούμε πως παράγονται Πολυσύνολα σε λίγο. 14-19

Πράξεις Συνόλων σε SQL Query 4: ημιουργήστε μια λίστα από projects τα οποία περιλαμβάνουν ένα υπάλληλο με το επίθετο Smith, ως υπάλληλο ή* ως manager του τμήματος που ελέγχει το εν λόγω project. Smith 14-20

Πράξεις Συνόλων σε SQL Smith Q4: (SELECT W.Pno FROM EMPLOYEE E, WORKS_ON W WHERE W.ESSN=E.SSN AND E.NAME='Smith') UNION (SELECT P.Pnumber FROM PROJECT P, DEPARTMENT D, ΕMPLOYEE E WHERE P.DNUM=P.DNUMBER AND D.MGRSSN=E.SSN AND E.LNAME='Smith') (SMITH_WOR KER_PROJS ) (SMITH_MGR _PROJS ) 14-21

Πράξεις Συνόλων σε SQL Για να επιστραφούν αποτελέσματα Πολυσυνόλων, αντί αποτελέσματα συνόλων, μπορεί να γίνει χρήση των ακόλουθων εντολών: UNION ALL, υποστηρίζεται και σε TSQL Π.χ., {(1,Pet), (2,Cat)} UNION ALL {(2,Cat),(1, Pet)} Επιστρέφει: { (1,Pet), (2,Cat), (2,Cat), (1, Pet) } INTERSECT ALL (δεν υλοποιείται σε TSQL) Π.χ., {(1,Pet), (2,Cat)} INTERSECT ALL {(1, Pet)} Επιστρέφει: { (1,Pet), (1, Pet) } EXCEPT ALL (δεν υλοποιείται σε TSQL) Π.χ., {(1,Pet), (2,Cat), (2,Cat)} EXCEPT ALL {(1, Pet)} Επιστρέφει:{(2,Cat), (2,Cat) } Συνεπώς, με τις πιο πάνω πράξεις δεν διαγράφονται τα διπλότυπα από ένα αποτέλεσμα 14-22

Πράξεις Συνόλων σε SQL Σημειώστε ότι εάν ένας τελεστής δεν υλοποιείται στην SQL τότε μπορεί να υλοποιηθεί με χρήση βασικών τελεστών (π.χ., Συμμετρική ιαφορά, R S = (R S) (S R)) Στην συνέχεια θα δούμε ότι υπάρχουν πολλές άλλες πράξεις σύγκρισης με σύνολα που χρησιμοποιούνται για διατύπωση επερωτήσεων σε SQL ΙΝ, ΑΝΥ, ALL, CONTAINS, EXISTS, NOT EXISTS, κτλ. 14-23