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

Σχετικά έγγραφα
S Q Q L L -- SQL (Structured Query Language) select insert update delete 2.47

ΣΧΕΣΙΑΚΟΣ ΛΟΓΙΣΜΟΣ. Tο Σχεσιακό Μοντέλο Σελίδα 1

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

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

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

H Γλώσσα SQL Σχεδιασμός Βάσεων Δεδομένων

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

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

Query-by-Example (QBE)

SQL Data Manipulation Language

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

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

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

QUERY-BY-EXAMPLE. Η Γλώσσα SQL Σελίδα 1

Ακεραιότητα και Ασφάλεια Μέρος 1 Σχεδιασμός Βάσεων Δεδομένων

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

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

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

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

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

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

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

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

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

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

Η Γλώσσα SQL. Παράδειγμα ΒΔ (Τράπεζα)

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

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


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

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

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

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

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

Βελτιστοποίηση ερωτημάτων Βάσεις Δεδομένων Διδάσκων: Μαρία Χαλκίδη

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Lecture 14: SQL DML I

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

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

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

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

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

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

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

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

Κεφάλαιο 9 Συναθροίσεις

Lecture 16: SQL DML III


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

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

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

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

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

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

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

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

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

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

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

Κεφ 4: Προχωρημένες Εντολές SQL

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

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

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

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

Το εσωτερικό ενός Σ Β

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

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ.

Πανεπιστήμιο Θεσσαλίας Τμήμα Πληροφορικής Ακαδημαϊκό Έτος Εαρινό. Μάθημα 7 Κεφάλαιο 6: Τυπικές Σχεσιακές Γλώσσες

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε.

Η Γλώσσα SQL. What is the average salary in the Toy department? Anonymous SQL user

5. Επερώτηση XML Εγγράφων: Εισαγωγή στη Γλώσσα XQuery

Σύβακας Σταύρος ΠΕ19,MSc. IT ΣΥΒΑΚΑΣ ΣΤΑΥΡΟΣ ΕΡΩΤΗΜΑΤΑ

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι

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

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

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

ΗΥ360: Αρχεία και Βάσεις Δεδομένων Διδάσκων: Πλεξουσάκης Δημήτρης. Φροντιστήριο Σχεσιακή Άλγεβρα Δημητράκη Κατερίνα

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

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

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

SQL. Πριν µια σύντοµη επανάληψη της σχεσιακής άλγεβρας. H SQL έχει διάφορα τµήµατα: Γλώσσα Χειρισµού εδοµένων (ΓΧ )

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

Transcript:

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

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

SQL - ιαχρονικά Η γλώσσα SQL - παγκόσµια σταθερά σε Β Sequel 75 (System R) SQL86 SQL89 SQL92 SQL3 SQL:2003 SQL:2006 SQL:2008 SQL:2011 Η Γλώσσα SQL Σελίδα 3

Βασική δοµή Η SQL βασίζεται σε σχεσιακές πράξεις Ένα τυπικό SQL query είναι της µορφής: select A 1, A 2,..., A n from r 1, r 2,..., r m where P A i s αντιπροσωπεύειγνωρίσµατα r i s αντιπροσωπεύει σχέσεις P είναι ένα κατηγόρηµα Το query είναι ισοδύναµο µε την έκφραση της σχεσιακής άλγεβρας A1, A2,..., An (σ P (r 1 x r 2 x... x r m )) Το αποτέλεσµα του SQL query είναι µια σχέση Η Γλώσσα SQL Σελίδα 4

The select Clause Η select clause είναι η λίστα των αναγνωριστικών που θέλουµε να υπάρχουν στα αποτελέσµατα του query Αντιστοιχεί σε πράξη προβολής (projection) της σχεσιακής άλγεβρας Βρες τα ονόµατα όλων των branches της σχέσης loan select branch-name from loan Στη σχεσιακή άλγεβρα το query θα ήταν: branch-name (loan) NOTE: η SQL δεν επιτρέπει τον χαρακτήρα - στα ονόµατα,» Μπορεί να αντικατασταθεί µε π.χ. branch_name Η Γλώσσα SQL Σελίδα 5

The select Clause (2) Η SQL επιτρέπει duplicates στις σχέσεις και στα αποτελέσµατα των queries Για να µην υπάρχουν duplicates χρησιµοποιούµε τη λέξη-κλειδί distinct µετά το select. Βρες τα ονόµατα όλων των branches στη σχέση loanκαι αφαίρεσε τα διπλότυπα select distinct branch-name from loan Η λέξη-κλειδί all καθορίζει ότι τα duplicates δεν πρέπει να αφαιρεθούν select all branch-name from loan Η Γλώσσα SQL Σελίδα 6

The select Clause (3) Το * στο select clause σηµαίνει όλα τα γνωρίσµατα select * from loan Tο select clause µπορεί να περιέχει αριθµητικές εκφράσεις που εµπλέκουν πράξεις (+,,, /) και δουν πάνω σε σταθερές ή γνωρίσµατα πλειάδων Π.χ.:..: select loan-number, branch-name, amount 100 from loan Η Γλώσσα SQL Σελίδα 7

The where Clause Το where clause καθορίζει τις συνθήκες που πρέπει να ικανοποιεί το αποτέλεσµα Αντιστοιχεί στο selection predicate της σχεσιακής άλγεβρας Βρες όλους τους κωδικούς δανείων στο Perryridge branch µε ποσά µεγαλύτερα του $1200. select loan-number from loan where branch-name = Perryridge and amount > 1200 Λογικές πράξεις and, or, and not. Η Γλώσσα SQL Σελίδα 8

The where Clause (2) Η SQL έχει και operator σύγκρισης between Π.χ.Βρες τους κωδικούς δανείων µε ποσά ανάµεσα σε $90,000 και $100,000 select loan-number from loan where amount between 90000 and 100000 Η Γλώσσα SQL Σελίδα 9

The from Clause To from clause περιέχει όλες τις σχέσεις που εµπλέκονται στο query Αντιστοιχεί στο καρτεσιανό γινόµενο της σχεσιακής άλγεβρας Βρες το καρτεσιανό γινόµενο borrower x loan select from borrower, loan Βρες τοόνοµα, κωδικό δανείου και ποσό για όλους τους πελάτες που έχουν δάνειο στο υποκατάστηµα Perryridge loan (loan-number, branch-name, amount) borrower (customer-name, loan-number) select customer-name, borrower.loan-number, amount from borrower, loan where borrower.loan-number = loan.loan-number and branch-name = Perryridge Η Γλώσσα SQL Σελίδα 10

The Rename Operation Η SQL επιτρέπει τη µετονοµασία σχέσεων και γνωρισµάτων χρησιµοποιώντας το s clause: old-name as new-name Βρες το όνοµα, κωδικό δανείου και ποσό όλων των πελατών. Μετονόµασε το loan-number σε loan-id. select customer-name, borrower.loan-number as loan-id, amount from borrower, loan where borrower.loan-number = loan.loan-number Η Γλώσσα SQL Σελίδα 11

SQL: Χρήση Μεταβλητών Πλειάδας Τα ονόµατα των Σχέσεων µπορεί να χρησιµοποιηθούν αντί για τις µεταβλητές πλειάδος Αν το Σύστηµα µπορεί να καταλάβει σε ποια Σχέση κάθε Γνώρισµα ανήκει, τότε οι µεταβλητές πλειάδος µπορεί να είναισυνεπαγόµενες (implicit) Βρες τοόνοµα, κωδικό δανείου και ποσό για όλους τους πελάτες που έχουν δάνειο στο υποκατάστηµα Perryridge select customer-name, borrower.loan-number, amount from borrower, loan where borrower.loan-number = loan.loan-number and branch-name = Perryridge Η Γλώσσα SQL Σελίδα 12

Tuple Variables Οι µεταβλητές πλειάδων ορίζονται στο from clause µε τη χρήση του as clause. Βρες τα ονόµατα όλων των πελατών µε δάνεια και τον κωδικό των δανείων τους. select customer-name, T.loan-number, S.amount from borrower as T, loan as S where T.loan-number = S.loan-number Η Γλώσσα SQL Σελίδα 13

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

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

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

SQL: Παραδείγµατα στην Β Ναυτικών (4) SQUERY6: Βρες τα ονόµατα των ΝΑΥΤΙΚΩΝ που έχουν κρατήσει ένα κόκκινο και ένα πράσινο ΣΚΑΦΟΣ select s.sname from SAILORS as s, BOATS as b1, RESERVE as r1, BOATS as b2, RESERVE as 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 Σελίδα 17

Πράξεις µε συµβολοσειρές 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% Match the name Main% like Main\% escape \ Η SQL υποστηρίζει πολλές πράξεις σε συµβολοσειρές concatenation (µε το ) µετατροπή από κεφαλαία σε πεζά και αντίστροφα µήκος συµβολοσειράς, κλπ. Η Γλώσσα SQL Σελίδα 18

Ταξινόµηση των αποτελεσµάτων Παρουσίασε µε αλφαβητική σειρά τα ονόµατα όλων των πελατών που έχουν δάνειο στο υποκατάστηµα Perryridge select distinct customer-name from borrower, loan where borrower loan-number = loan.loan-number and branch-name = Perryridge order by customer-name Καθορίζουµε descγια φθίνουσα σειρά και ascγια αύξουσα, για κάθε attribute. Η αύξουσα είναι default. Π.χ., order by customer-name desc Η Γλώσσα SQL Σελίδα 19

Πράξεις συνόλων Οι πράξεις συνόλων union, intersect, και except δρουν πάνω σε σχέσεις και αντιστοιχούν στις πράξεις της σχεσιακής αλγεβρας,,. Οι πράξεις συνόλων αφαιρούν αυτόµατα τα duplicates; Για να διατηρηθούν τα duplicatesχρησιµοποιείται το union all, intersect all and except all. Αν ένα tupleεµφανίζεται mφορές στο r και n φορές στο s, τότε: m + n times in r union all s min(m,n) times in r intersect all s max(0, m n) times in r except all s Η Γλώσσα SQL Σελίδα 20

Πράξεις συνόλων Find all customers who have a loan, an account, or both: (select customer-name from depositor) union (select customer-name from borrower) Find all customers who have both a loan and an account. (select customer-name from depositor) intersect (select customer-name from borrower) Find all customers who have an account but no loan. (select customer-name from depositor) except (select customer-name from borrower) Η Γλώσσα SQL Σελίδα 21

Συναθροιστικές συναρτήσεις avg: average value min: minimum value max: maximum value sum: sum of values count: number of values Η Γλώσσα SQL Σελίδα 22

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

Συναθροιστικές Συναρτήσεις (2) Βρες τον αριθµό των tuples στη σχέση customer select count (*) from customer Βρες το αριθµό των καταθετών της τράπεζας select count (distinct customer-name) from depositor Η Γλώσσα SQL Σελίδα 24

Συναθροιστικές Συναρτήσεις (3) Το σύνολο στο οποίο οι Συναθροιστικές Συναρτήσεις εφαρµόζονται µπορεί να περιοριστεί από την where-πρόταση Find the average account balance at the Perryridge branch. select avg (balance) from account where branch-name = Perryridge Η Γλώσσα SQL Σελίδα 25

Οµαδοποίηση Group By Συσσωρεύσεις ήοµάδεςπλειάδων υπολογίζονταιµε την GROUP BY clause Οµαδοποίησε τους λογαριασµούς ανά υποκατάστηµα select branch-name, account-number from account group by branch-name Σηµειώνεται ότι το Γνώρισµα οµαδοποίησης πρέπει να παρουσιάζεται στην select πρόταση Η Γλώσσα SQL Σελίδα 26

Οµαδοποίηση και συναθροιστικές συναρτήσεις Βρες τον αριθµό των καταθετών ανά υποκατάστηµα select branch-name, count (distinct customer-name) from depositor, account where depositor.account-number = account.account-number group by branch-name Οι οµαδοποιήσεις και συναρτήσεις εφαρµόζονταιμετατη Συνένωση των Σχέσεων Η Γλώσσα SQL Σελίδα 27

Οµαδοποίηση Having Clause Η έκφραση που πρέπει να ικανοποιείται για κάθεοµάδα που συγκροτείται στην group by- clause, µπαίνει σε µια having clause Βρες τα ονόµατα των υποκαταστηµάτων όπου το µέσο υπόλοιπο λογαριασµού είναι µεγαλύτερο από $1,200. select branch-name, avg (balance) from account group by branch-name having avg (balance) > 1200 Note: Τα predicates στο havingεφαρµόζονται µετά τη συγκρότηση των οµάδων, ενώ τα predicatesτου where clauseπριν Η Γλώσσα SQL Σελίδα 28

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 Σελίδα 29

Null Values Άγνωστη τιµή ή τιµή που δεν υπάρχει/δεν την ξέρουµε Το predicate is nullµπορεί να χρησιµοποιηθεί για έλεγχο null τιµών E.g. Βρες όλους τους κωδικούς δανείων στη σχέση loan µε null τιµή στο γνώρισµα amount. select loan-number from loan where amount is null Το αποτέλεσµα µιας αριθµητικής έκφρασης µε null είναι null Π.χ., 5 + null επιστρέφει null Οι συναθροιστικές συναρτήσεις αγνοούν τις τιµές null Η Γλώσσα SQL Σελίδα 30

Null και η λογική των 3 τιµών Κάθε σύγκριση µε null επιστρέφει unknown E.g. 5 < null or null <> null or null = null Λογικές πράξεις µε unknown: OR: (unknown or true) = true (unknown or false) = unknown (unknown or unknown) = unknown AND: (true and unknown) = unknown, (false and unknown) = false, (unknown and unknown) = unknown NOT: (not unknown) = unknown P is unknown είναι true αν το Pείναι unknown Το αποτέλεσµα ενός where clause predicate που είναι unknown, το διαχειριζόµαστε ως false Η Γλώσσα SQL Σελίδα 31

Null τιµές και συναθροιστικές συναρτήσεις Το σύνολο όλων των ποσών των δανείων select sum (amount) from loan Αγνοεί τα null amounts Αποτέλεσµα null αν δεν υπάρχει κανένα non-null amount Όλες οι συναθροιστικές συναρτήσεις εκτός της count(*)αγνοούν τις τιµές null στο γνώρισµα της συνάθροισης Η Γλώσσα SQL Σελίδα 32

Εµφωλιασµός ΕΜΦΩΛΙΑΣΜΟΣ (nesting) SQL Ερωταποκρίσεων: Ένα πλήρες SELECT query (αποκαλείται nested query) µπορεί να υπάρχει µέσα στην πρόταση WHERE ενός άλλου query (αποκαλείται, το outer query) Συνήθως χρησιµοποιείται για έλεγχο συµµετοχής σε σύνολο και σύγκριση συνόλων Η Γλώσσα SQL Σελίδα 33

Example Query Find all customers who have both an account and a loan at the bank. select distinct customer-name from borrower where customer-name in (select customer-name from depositor) Κάθε ερωταπόκριση που χρησιµοποιεί τον τελεστή IN (ελέγχει τη συµµετοχή σε σύνολο) µπορεί πάντα να εκφραστεί χωρίς εµφωλιασµό (flat query) select distinct customer-name from borrower, depositor where borrower.customer-name=depositor.customer-name Η Γλώσσα SQL Σελίδα 34

Εµφωλιασµός Παρόµοιοι τελεστές µε το IN είναι: not in (ελέγχει τη µη συµµετοχή σε σύνολο) OP any (OP συσχέτιση µε κάποια πλειάδα σε σύνολο) OP all (OP συσχέτιση µε όλες τις πλειάδες σε σύνολο) where OP { =,, <, >,, } Find all customers who have a loan at the bank but do not have an account at the bank select distinct customer-name from borrower where customer-name not in (select customer-name from depositor) Η Γλώσσα SQL Σελίδα 35

Εµφωλιασµός σύγκριση Η 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 Σελίδα 36

Έλεγχος για κενές σχέσεις Tο existsεπιστρέφει trueαν το υπο-query δεν επιστρέφει κενό σύνολο exists r r Ø not exists r r = Ø Η Γλώσσα SQL Σελίδα 37

Example Query Find all customers who have an account at all branches located in Brooklyn. select distinct S.customer-name from depositor as S where not exists ( (select branch-name from branch where branch-city = Brooklyn ) except (select R.branch-name from depositor as T, account as R where T.account-number = R.account-number and S.customer-name = T.customer-name)) Η Γλώσσα SQL Σελίδα 38

Έλεγχος για απουσία διπλότυπων Το uniqueελέγχει αν ένα υπο-query έχει διπλότυπα αποτελέσµατα Find all customers who have at most one account at the Perryridge branch. select T.customer-name from depositor as T where unique ( select R.customer-name from account, depositor as R where T.customer-name = R.customer-name and R.account-number = account.account-number and account.branch-name = Perryridge ) Η Γλώσσα SQL Σελίδα 39

Έλεγχος για απουσία διπλότυπων (2) Find all customers who have at least two accounts at the Perryridge branch. select distinct T.customer-name from depositor T where not unique ( select R.customer-name from account, depositor as R where T.customer-name = R.customer-name and R.account-number = account.account-number and account.branch-name = Perryridge ) Η Γλώσσα SQL Σελίδα 40