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



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

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

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

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

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ

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

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

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

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

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

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

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

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

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


Κεφάλαιο 3 ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ. I.B. Το Σχεσιακό Μοντέλο Σελίδα 2.1

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

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

SQL Data Manipulation Language

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

Query-by-Example (QBE)

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

Lecture 16: SQL DML III

Ασκήσεις -Επανάληψη. Βάσεις Δεδομένων

Lecture 14: SQL DML I

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

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

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

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΟΝΟΜΑΤΕΠΩΝΥΜΟ ΑΡΙΘΜΟΣ ΜΗΤΡΩΟΥ

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

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

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


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

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

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

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

Κεφάλαιο 5. Ορισµός Βάσεων εδοµένων µε SQL DDL - Άλλες Γλώσσες Σχεσιακών Βάσεων (QBE) Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.

Κεφάλαιο 5. Ορισµός Βάσεων εδοµένων µε SQL DDL - Άλλες Γλώσσες Σχεσιακών Βάσεων (QBE) Ι.Β. Σχεσιακές Γλώσσες Εµφύτευση / DDL Σελίδα 2.

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

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

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


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

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. ΕΠΛ342: Βάσεις Δεδομένων. Χειμερινό Εξάμηνο Φροντιστήριο 10 ΛΥΣΕΙΣ. Επερωτήσεις SQL

Κεφάλαιο 3. ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ B Μέρος. Tο Σχεσιακό Μοντέλο Σελίδα 1

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

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

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

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

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

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

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

Lecture 15: SQL DML II

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

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

SQL Data Definition. REFERENCES (foreign key), CHECKκαι PRIMARY KEY (key)

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

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

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

Κεφάλαιο 8. ΣΧΕ ΙΑΣΜΟΣ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ ΚΑΙ ΚΑΝΟΝΙΚΟΠΟΙΗΣΗ (Normalization) Ι.Β Σχεδιασµός Σχεσιακών Β και Κανονικοποίηση Σελίδα 4.1

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

DELETE, UPDATE, INSERT.

SQL: Συναρτήσεις Συνάθροισης

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

DELETE, UPDATE, INSERT

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

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

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

ΗΓλώσσαSQL. Εισαγωγή Βασικές Έννοιες Τύποι Δεδομένων Ορισμός Δεδομένων Χειρισμός Δεδομένων

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

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

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

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

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

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

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

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

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

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

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

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

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

SQL: Αιτήματα. ( Συνέχεια...) Κεφάλαιο 5. Ενηµέρωση: 23/12/2008. Database Management Systems, R. Ramakrishnan and J. Gehrke

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

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

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

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

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

Τεχνολογία Πολιτισμικού Λογισμικού

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

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

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

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

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

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

Transcript:

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

SQL -ΕΙΣΑΓΩΓΗ SQL (Structured Query Language) είναι η τυποποιηµένη standard γλώσσα στις Σχεσιακές Βάσεις. Η πρώτη χρήση ήταν στο πρότυπο σύστηµα της IBM, που ονοµάστηκε SYSTEM-R, το οποίο ανεπτύχθη στα ερευνητικά εργαστήρια της εταιρείας (San Jose, California) στα µέσα της δεκαετίας το 1970. Η SQL έχει υποστεί πολλές τροποποιήσεις. Υπάρχουν 4 βασικές εντολές: select (δεν είναι το ίδιο µε το SELECTION στην Άλγεβρα) insert update delete Το αποτέλεσµα µιας εντολής / πράξης σε Σχέσεις είναι (πάντα) µια νέα Σχέση Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.47

SQL - ιαχρονικά Η γλώσσα SQL --- παγκόσµια σταθερά σε Β Sequel 75 (System R) SQL86» H Πρώτη προσπάθεια για τυποποίηση SQL89» referential integrity SQL92» agents, client/server, embedded SQL, dynamic SQL (cursors), temporary tables, standard error codes SQL3» object SQL Ιδιότητες» αρµονίαµε DCE, X/Open» multimedia (text, audio, video, BLOBs) Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.48

SQL - ΆτυποςΟρισµός Θεωρήστε τη Σχέση EMPLOYEE και την παρακάτω ερωταπόκριση: Βρείτε τα ονόµατα των Υπαλλήλων που έχουν µισθό µεγαλύτερο των 600,000 Στην SQL: select e.name from EMPLOYEE e where (e.salary > 600000) e είναι µια µεταβλητή πλειάδος που ορίζεται να παίρνει τιµές από την Σχέση EMPLOYEE (στην from πρόταση) e.name, ωςπεριορισµένηµεταβλητήπλειάδος, προσδιορίζει την τιµή του e στο γνώρισµα Name, και αποτελεί το target list (προσδιορίζει στην select πρόταση τις προβολές των στηλών) (e.salary > 30000) είναι η ικανοποίηση συνθήκης (qualification ) (προσδιορίζει στην where πρόταση όλες τις επιλογές και συνενώσεις) Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.49

SQL ΤυπικόςΟρισµός (1) Η selection clause είναι µια σύγκριση µεταξύ µιας περιορισµένηςµεταβλητήςπλειάδος x καιµιαςσταθεράς c τηςµορφής : x operator c where operator { =,, <, >,, } Παράδειγµα: t.name = mary, t.salary > 30000 Η join clause είναι µια σύγκριση µεταξύ δύο περιορισµένων µεταβλητώνπλειάδος x και y τηςµορφής: x operator y όπου x, y ανήκουν σε διαφορετικές Σχέσεις και operator { =,, <, >,, } Παράδειγµα: t.name = v.ename Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.50

SQL --ΤυπικόςΟρισµός (2) Η qualification είναι ένας Boolean συνδυασµός (δηλαδή, µε τα Λογικά and, or, not) µεταξύ selection και join προτάσεων.) Παράδειγµα: (t.name = v.ename) and (t.salary > 30000) Σηµασιολογία του QUALIFICATION Μια qualification Q περιγράφει το υποσύνολο του Καρτεσιανού Γινοµένου όλων των δυνατών τιµών των περιορισµένων της µεταβλητών που ικανοποιεί την Q Παράδειγµα: : Έστω οι Σχέσεις: EMPLOYEE(SSN, DNumber) και DEPARTMENT(Dno, mgrssn), µε e και d µεταβλητές πλειάδος Q = (e.dnumber = d.dno) and (d.mgrssn = 9876) Σηµασιολογία του Q: Το σύνολο των ζευγών e, d που ικανοποιούν την Q Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.51

SQL -- --Σηµασιολογία Εκτέλεσης EMPLOYEE SSN DNumber 1234. 5 9998 4 9876 4 DEPARTMENT Dno MgrSSN 5 3334 4 9876 1 8886 X = Καρτεσιανό Γινόµενο SSN DNumber Dno mgrssn 1234 5 5 3344 1234 5 4 9876 1234 5 1 8886 9998 4 5 3344 9998 4 4 9876 9998 4 1 8886 9876 4 5 3344 9876 4 4 9876 9876 4 1 8886 Τέλος, αφού κατασκευαστεί το υποσύνολο της EMPLOYEE X DEPARTMENT που ικανοποιεί τη συνθήκη Q, παίρνουµε δυο πλειάδες: SSN DNumber Dno mgrssn 9998 4 4 9876 9876 4 4 9876 Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.52

SQL -- --ΠλήρηςΜορφή select [ distinct ] target_list from tuple_variable_list [ where qualification ] [ group by grouping_attributes ] [ having group_condition ] [ order by target_list_subset ] Μια ερωταπόκριση αποτιµάται πρώτα µε την εφαρµογή της WHERE πρότασης, µετά των GROUP-BY και HAVING (προαιρετικά), και τέλος της SELECT πρότασης (στόχος λίστα γνωρισµάτων) µε ταξινόµηση των πλειάδων στην απάντηση ή διαγραφή διπλών τιµών, αν απαιτείται από την ORDER BY πρόταση ή το DISTINCT (επίσης προαιρετικά). Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.53

SQL: Παραδείγµατα στην Β Ναυτικών (1) Επανερχόµαστε στην Β των Ναυτικών: SAILORS (Sid, SName, Rating) BOATS (Bid, BName, Color) RESERVE (Sid, Bid, Date) SQUERY1: Βρες τα ονόµατα των ΝΑΥΤΙΚΩΝ που έχουνκάνεικράτησηγιατοσκαφοσµενούµερο 2 select s.sname from SAILORS s, RESERVE r where s.sid = r.sid and r.bid = 2 Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.54

SQL: Παραδείγµατα στην Β Ναυτικών (2) SQUERY2: Βρες τα ονόµατα των ΝΑΥΤΙΚΩΝ που έχουν κρατήσει ΣΚΑΦΗ µε χρώµα κόκκινο select from where s.sname SAILORS s, BOATS b, RESERVE r s.sid = r.sid and r.bid = b.bid and b.color = red SQUERY3: Βρεςταχρώµατατωνσκαφώνπουέχει κρατήσει η ναυτικός µε το όνοµα Ελένη select from where b.color SAILORS s, BOATS b, RESERVE r s.sid = r.sid and r.bid =b.bid and s.sname= eleni Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.55

SQL: Παραδείγµατα στην Β Ναυτικών (3) SQUERY4: Βρες τα ονόµατα των ΝΑΥΤΙΚΩΝ που έχουν κρατήσει τουλάχιστον ένα ΣΚΑΦΟΣ select from where s.sname SAILORS s, RESERVE r s.sid = r.sid SQUERY5: Βρες τα ονόµατα των ΝΑΥΤΙΚΩΝ που έχουν κρατήσει ένα κόκκινο ή ένα πράσινο ΣΚΑΦΟΣ select from where s.sname SAILORS s, BOATS b, RESERVE r s.sid = r.sid and r.bid = b.bid and (b.color = red or b.color = green ) Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.56

SQL: Παραδείγµατα στην Β Ναυτικών (4) SQUERY6: Βρες τα ονόµατα των ΝΑΥΤΙΚΩΝ που έχουν κρατήσει ένα κόκκινο και ένα πράσινο ΣΚΑΦΟΣ select s.sname from SAILORS s, BOATS b1, RESERVE r1, BOATS b2, RESERVE r2 where s.sid = r1.sid and r1.bid = b1.bid and b1.color = red and s.sid = r2.sid and r2.bid = b2.bid and b2.color = green Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.57

SQL Αναλυτικά: Παραδείγµατα και Σχόλια από τη Β µιας Εταιρείας EMPLOYEE ( SSN, Name, BirthDate, Address, Sex, Salary, SupSSN, DNumber) DEPARTMENT ( DNumber, DName, MgrSSN, MgrStartDate) PROJECT ( PNumber, PName, Location, DNumber) DEPT_LOCATION ( DNumber, DLocation) WORKS_ON ( SSN, PNumber, HoursPW) DEPENDENT ( SSN, DependName, Sex, BirthDate, Relationship) Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.58

SQL: Παραδείγµαταγια target list (1) TARGET LISTS: Κάθε στοιχείο στην target list είναι σε γενικήµορφή: attribute_name = expression όπου expression είναι µια αριθµητική έκφραση σε περιορισµένες µεταβλητές πλειάδος και σταθερές (όπως επίσης, built-ins και aggregates.) CQUERY1: Παρουσίασε, αυξηµένους κατά 10000 τους µισθούς των Υπαλλήλων, που έχουν εργαστεί σε δύο διαφορετικά έργα περισσότερο από 25 ώρες select from where e.name, Salary = e.salary + 10000 AS NewSal EMPLOYEE e, WORKS_ON w1, WORKS_ON w2 e.ssn = w1.ssn and e.ssn = w2.ssn and w1.hourspw > 25 and w2.hourspw > 25 and w1.pnumber!= w2.pnumber Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.59

SQL: Παραδείγµαταγια target list (2) Τα TARGET Lists µπορεί επίσης να περιέχουν τη λέξη κλειδί DISTINCT Εφόσον η SQL δεν θεωρεί τις Σχέσεις ως σύνολα, διπλές πλειάδες είναι δυνατόνναπαρουσιαστούν, σεαυτήτηνπερίπτωσητο DISTINCT χρησιµοποιείται για διαγραφή των διπλών τιµών CQUERY2: είξε όλες τις ΙΑΦΟΡΕΤΙΚΕΣ τιµές των µισθών Υπαλλήλων select from distinct e.salary EMPLOYEE e Αυτή η ερωταπόκριση δείχνει επίσης ότι η WHERE πρόταση είναι προαιρετική (χωρίς WHERE, όλες οι πλειάδες παρουσιάζονται) Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.60

SQL: Παραδείγµαταγια target list (3) ΤοTARGET List µπορείναπεριέχειτονειδικόχαρακτήρα: * (αστεράκι) Όταν ένα * χρησιµοποιείται, σηµαίνει ότι όλα τα γνωρίσµατα από τις Σχέσεις πρέπει να ανακτηθούν CQUERY3: είξε όλους τους Υπαλλήλους του Τµήµατος 4 select * from EMPLOYEE e where e.dnumber = 4 Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.61

SQL: Χρήση Μεταβλητών Πλειάδας Τα ονόµατα των Σχέσεων µπορεί να χρησιµοποιηθούν αντί για τις µεταβλητές πλειάδος ΑντοΣύστηµαµπορείνακαταλάβεισεποιαΣχέσηκάθε Γνώρισµα ανήκει, τότε οι µεταβλητές πλειάδος µπορεί να είναι συνεπαγόµενες (implicit) CQUERY4: ΓιακάθεέργοπουεκτελείταιστηνΑθήνα, παρουσίασε το όνοµά του, το νούµερο του τµήµατος που το ελέγχει και το όνοµα του µάνατζερ του Τµήµατος select from where PName, DEPARTMENT.DNumber, Name EMPLOYEE, DEPARTMENT, PROJECT PROJECT.DNumber = DEPARTMENT.DNumber and MgrSSN = SSN and Location = Athens Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.62

SQL: Παραδείγµαταµε Qualification (1) QUALIFICATIONS: Κάθεστοιχείοµιας qualification έχει τη γενική µορφή: expression = expression CQUERY5: Βρες τα ονόµατα των Υπαλλήλων, των οποίων ο µισθός είναι περισσότερου του διπλασίου του µισθού κάποιου άλλου Υπαλλήλου (δώστε και τα ονόµατα των δευτέρων) select from where Name1 = e1.name, Name2 = e1.name EMPLOYEE e1, EMPLOYEE e2 2 * e1.salary < e2.salary Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.63

Ειδικά Σύµβολα // Χαρακτήρες H SQL χρησιµοποιείειδικάσύµβολαγια string-matching (ταίριασµασυµβολοσειρών) : percent (%). Ο % χαρακτήρας ταιριάζει µε οποιαδήποτε συµβολοσειρά. underscore (_). Ο _ χαρακτήρας ταιριάζει µε οποιοδήποτε χαρακτήρα. Find the names of all customers whose street includes the substring Main. select customer-name from customer where customer-street like %Main% Η SQL υποστηρίζει πολλές πράξεις σε συµβολοσειρές concatenation (µε το ) µετατροπή από κεφαλαία σε πεζά και αντίστροφα µήκος συµβολοσειράς, κλπ. Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.64

SQL: Παραδείγµαταµε Qualification (2) Η SQL υποστηρίζει άµεσα τις πράξεις συνόλων, όπως: union minus intersect CQUERY6: Βρες τα ονόµατα των Υπαλλήλων που εργάζονται στο Τµήµα µε νούµερο 4 και έχουν µισθό τουλάχιστον 400000 (select Name from EMPLOYEE where DNumber = 4 ) minus (select Name from EMPLOYEE where Salary < 400000 ) Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.65

SQL: Παραδείγµαταµε Qualification (3) CQUERY7: Παρουσίασε τα ονόµατα των έργων, που έχουν έναν Υπάλληλο µε όνοµα jenny ως εργαζόµενο ή ως µάνατζερ του Τµήµατος που ελέγχει το έργο (select PName from EMPLOYEE, PROJECT, DEPARTMENT where EMPLOYEE.DNumber=DEPARTMENT.DNumber and MgrSSN = SSN and Name = jenny ) union (select PName from EMPLOYEE, PROJECT, WORKS_ON where PROJECT.PNumber = WORKS_ON.PNumber and WORKS_ON.SSN=EMPLOYEE.SSN and Name = jenny ) Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.66

SQL: Παραδείγµαταµε Qualification (4) ΕΜΦΩΛΙΑΣΜΟΣ (nesting) SQL Ερωταποκρίσεων: Έναπλήρες SELECT query (αποκαλείται, nested query) µπορεί να υπάρχει µέσα στην πρόταση WHERE ενός άλλου query (αποκαλείται, το outer query) CQUERY8: Παρουσίασε όλους τους Υπαλλήλους που εργάζονται στο Τµήµα «Έρευνα» select from where Name EMPLOYEE DNumber in (select DNumber from DEPARTMENT where DName = research ) Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.67

SQL: Παραδείγµαταµε Qualification (5) Συσχετισµένα (CORRELATED) NESTED Queries: Εάν η συνθήκη στην WHERE πρόταση ενός nested query αναφέρεται σε ένα γνώρισµα του outer query, τότε τα δύο λέγονται Συσχετιζόµενα Το αποτέλεσµα του nested query είναι διαφορετικό για κάθε πλειάδα των Σχέσεων στο outer query CQUERY9: Παρουσίασε το όνοµα κάθε Υπαλλήλου, που έχει έναν εξαρτώµενο ιδίου φύλλου µε τον Υπάλληλο select Name from EMPLOYEE e where e.ssn in (select d.ssn from DEPENDENT d where d.ssn = e.ssn and d.sex = e.sex ) Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.68

SQL: Παραδείγµαταµε Qualification (6) Κάθεερωταπόκρισηπουχρησιµοποιείτοντελεστή IN (ελέγχει τη συµµετοχή σε σύνολο) µπορεί πάντα να εκφραστεί χωρίς εµφωλιασµό (flat query) CQUERY9a: Παρουσίασε το όνοµα κάθε Υπαλλήλου, που έχει έναν εξαρτώµενο ιδίου φύλλου µε τον Υπάλληλο select Name from EMPLOYEE e, DEPENDENT d where e.ssn = d.ssn and d.sex = e.sex ) Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.69

SQL: Παραδείγµαταµε Qualification (7) Παρόµοιοι τελεστές µε το IN είναι: not in (ελέγχει τη µη συµµετοχή σε σύνολο) OP any (OP συσχέτιση µε κάποια πλειάδα σε σύνολο) OP all (OP συσχέτιση µε όλες τις πλειάδες σε σύνολο) where OP { =,, <, >,, } CQUERY10: Παρουσίασε τους Υπαλλήλους που έχουν µεγαλύτερο µισθό από όλους τους Υπαλλήλους του Τµήµατος «Έρευνα» select from where Name EMPLOYEE Salary > all (select Salary from EMPLOYEE e, DEPARTMENT d where e.dnumber = d.dnumber and DName = research ) Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.70

SQL: Παραδείγµαταµε Qualification (8) Η SQL επίσης παρέχει τελεστές για σύγκριση συνόλων: contains, not contains (υπερσύνολο ή όχι) exists, not exists (κενό σύνολο ή όχι) CQUERY11: Παρουσίασε τους Υπαλλήλους που εργάζονταισεόλαταέργα πουελέγχονταιαπότοτµήµα 4 select from Name EMPLOYEE e where (select w.pnumber from WORKS_ON where w.ssn = e.ssn) contains (select PNumber from PROJECT where DNumber = 4) Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.71

SQL: Παραδείγµαταµε Qualification (9) CQUERY9b: Παρουσίασε το όνοµα κάθε Υπαλλήλου, που έχει έναν εξαρτώµενο ιδίου φύλλου µε τον Υπάλληλο select Name from EMPLOYEE e where exists (select * from DEPENDENT d where d.ssn=e.ssn and d.sex = e.sex) CQUERY12: Παρουσίασε τους Υπαλλήλους που δεν έχουν εξαρτώµενους select Name from EMPLOYEE e where not exists (select * from DEPENDENT d where d.ssn=e.ssn ) Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.72

SQL Συναθροιστικές Συναρτήσεις και Οµαδοποίηση (1) Η SQL υποστηρίζει ΠΕΝΤΕ Συναθροιστικές Συναρτήσεις (AGGREGATE FUNCTIONS) count ( [DISTINCT] X) :αριθµός διακριτών τιµών στο X sum ( [DISTINCT] X) : άθροισµα των διακριτών τιµών στο X avg ( [DISTINCT] X) : µέσητιµήτωνδιακριτώντιµώνστο X max (X) :µέγιστη τιµή στο X min (X) :ελάχιστη τιµή στο X Οι Συναθροιστικές Συναρτήσεις επιστρέφουν ΜΙΑ τιµή Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.73

SQL Συναθροιστικές Συναρτήσεις και Οµαδοποίηση (2) Μερικές SQL υλοποιήσεις έχουν περιορισµούς (π.χ. δεν επιτρέπουν περισσότερες από µια τιµές από συναθροιστική συνάρτηση στο target list) CQUERY13: Παρουσίασε τον Μέγιστο µισθό, τον Ελάχιστο µισθό, και το Μέσο µισθό µεταξύ όλων των Υπαλλήλων select from max(salary), min(salary), avg(salary) EMPLOYEE QUERY14: Βρες τον αριθµό των Υπαλλήλων select from count(*) EMPLOYEE Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.74

SQL Συναθροιστικές Συναρτήσεις και Οµαδοποίηση (3) Qualified Aggregates: Το σύνολο στο οποίο οι Συναθροιστικές Συναρτήσεις εφαρµόζονται µπορεί να περιοριστεί από την where-πρόταση CQUERY15: Παρουσίασε το Μέσο µισθό µεταξύ όλων των ΥπαλλήλωνστοΤµήµαµενούµερο 4 select from avg(salary) EMPLOYEE where DNumber = 4 Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.75

SQL Συναθροιστικές Συναρτήσεις και Οµαδοποίηση (4) ΟµαδοποίησηκαιΣυναθροιστικέςΣυναρτήσεις: Συσσωρεύσεις ή οµάδες πλειάδων υπολογίζονται µε την GROUP BY πρόταση CQUERY16: Για κάθε τµήµα, βρες την ελάχιστη ηλικία των Υπαλλήλων που έχουν µισθό µεγαλύτερο των 400000 select DNumber, max(birthdate) from EMPLOYEE where Salary > 400000 group by DNumber Σηµειώνεται ότι το Γνώρισµα οµαδοποίησης ΠΡΕΠΕΙ ΕΠΙΣΗΣ να παρουσιάζεται στην select πρόταση Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.76

SQL Συναθροιστικές Συναρτήσεις και Οµαδοποίηση (5) CQUERY17: Γιακάθεέργο, βρεςτονούµεροκαιόνοµατουέργου, καθώς και τον αριθµό των Υπαλλήλων που εργάζονται στο έργο select from where p.pnumber, p.pname, count(*) PROJECT p, WORKS_ON w p.pnumber = w.pnumber group by PNumber, PName Οι οµαδοποιήσεις και συναρτήσεις εφαρµόζονται ΜΕΤΑ τη Συνένωση των Σχέσεων PROJECT και WORKS_ON. Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.77

SQL Συναθροιστικές Συναρτήσεις και Οµαδοποίηση (6) HAVING Πρόταση: Τα Qualifications, που απαιτείται να ικανοποιούνται για κάθε οµάδα που συγκροτείται στην group by- πρόταση, µπαίνουν σε µια HAVING πρόταση CQUERY18: Βρες τον Μέσο µισθό Υπαλλήλων, που γεννήθηκαν µετά το 1950 για κάθε τµήµα µε περισσότερους των 10 Υπαλλήλων select from DNumber, avg(salary) EMPLOYEE where BirthDate > 1.1.51 group by DNumber having count(*) > 10 Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.78

SQL Συναθροιστικές Συναρτήσεις και Οµαδοποίηση(7) CQUERY19: Βρες τον µέσο µισθό Υπαλλήλων που γεννήθηκαν µετάτο 1950, γιακάθετµήµαµεπερισσότερουςτων 10 Υπαλλήλων select from e1.dnumber, avg(e1.salary) EMPLOYEE e1 where e1.birthdate > 1.1.51 group by e1.dnumber having 10 < any (select from count(e2.ssn) EMPLOYEE e2 where e2.dnumber = e1.dnumber ) Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.79

SQL Ενηµερώσεις - Updates (1) Εντολή INSERT insert into relation_name select-statement ή insert into relation_name values (value_list) CUPDATE1: Εισαγωγή ενός νέου τµήµατος insert into DEPARTMENT values (6, inventory, 9879, 30.5.45 ) Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.80

SQL Ενηµερώσεις - Updates (2) Έστω ότι έχουµε µια Σχέση DEPT_INFO: DEPT_INFO ( DeptName, NoOfEmpl, TotalSalary) Μπορούµε να εισάγουµε πλειάδες (CUPDATE2): insert into DEPT_INFO select d.dname, count(*), sum(e.salary) from DEPARTMENT d, EMPLOYEE e where d.dnumber=e.dnumber group by d.dname Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.81

SQL Ενηµερώσεις - Updates (3) Εντολή DELETE delete from relation_name where-qualification SEMANTICS: -- Εκτέλεσε την ανάλογη SELECT εντολή και έπειτα ιέγραψε τις πλειάδες του αποτελέσµατος από τη Σχέση CUPDATE3: delete from EMPLOYEE where DNumber in (select DNumber from where DEPARTMENT DName = admin ) Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.82

SQL Ενηµερώσεις - Updates (4) Εντολή UPDATE update relation_name set target_list where qualification SEMANTICS: -- Εκτέλεσε τις δύο ανάλογες SELECT εντολές, µετά, διέγραψε τις πλειάδες από την πρώτη και τέλος, κάνε εισαγωγή των νέων CUPDATE4: update EMPLOYEE set Salary = Salary * 1.14 where DNumber in (select DNumber from DEPARTMENT where DName = admin ) Ι.Β. Σχεσιακός Λογισµός και η Γλώσσα SQL Σελίδα 2.83