Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε

Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL150 Κεφάλαιο 4 Η Γλώσσα SQL και Σχεσιακός Λογισμός.

Παρόμοιες παρουσιάσεις


Παρουσίαση με θέμα: "Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL150 Κεφάλαιο 4 Η Γλώσσα SQL και Σχεσιακός Λογισμός."— Μεταγράφημα παρουσίασης:

1 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL150 Κεφάλαιο 4 Η Γλώσσα SQL και Σχεσιακός Λογισμός

2 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL151 Σχεσιακός Λογισμός: ΕΙΣΑΓΩΓΗ n Ο Σχεσιακός Λογισμός (RC) είναι μια μη-διαδικαστική, τυπική γλώσσα που βασίζεται στον κατηγορηματικό λογισμό πρώτης τάξης n Οι ερωταποκρίσεις στην RC προδιαγράφουν ΤΙ πρόκειται να ανακληθεί (δηλωτικά) ενώ το σύστημα (που υποστηρίζει την γλώσσα) αναλαμβάνει το ΠΩΣ n Οι περισσότερες εμπορικές σχεσιακές γλώσσες έχουν τις ρίζες τους στον Σχεσιακό Λογισμό (QUEL, QBE, SQL). Αυτές οι γλώσσες δίνουν έμφαση στην ευκολία χρήσης. n Ως προς την εκφραστικότητα, ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ και ΣΧΕΣΙΑΚΟΣ ΛΟΓΙΣΜΟΣ είναι ταυτόσημοι.

3 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL152 Σχεσιακός Λογισμός: ΕΙΣΑΓΩΓΗ (2) n Ο Σχεσιακός Λογισμός χρησιμοποιεί την έννοια της ΜΕΤΑΒΛΗΤΗΣ n Υπάρχουν δυο μορφές της Γλώσσας: –Λογισμός Πλειάδων οι μεταβλητές αναφέρονται σε πλειάδες από μια Σχέση π.χ., t είναι μια μεταβλητή πλειάδος που αναφέρεται σε μια πλειάδα της r(R) –Λογισμός Πεδίων Τιμών οι μεταβλητές αναφέρονται σε τιμές από ένα Πεδίο π.χ., d είναι μια μεταβλητή πεδίου που αναφέρεται σε μια τιμή, που έχει μια πλειάδα της r(R) για το γνώρισμα A (από το πεδίο D)

4 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL153 Σχεσιακός Λογισμός Πλειάδων n Μια ΕΚΦΡΑΣΗ στον ΣΧΕΣΙΑΚΟ ΛΟΓΙΣΜΟ ορίζει μια νέα Σχέση με βάση της υπάρχουσες σχέσεις. n Μια έκφραση κατασκευάζεται από τα παρακάτω στοιχεία: (1) Μεταβλητές πλειάδων (π.χ., t, v, w, t 1, t 2, t 3,... t n ), οι οποίες ορίζονται να παίρνουν τιμές από ένα στιγμιότυπο σχέσης r(R) Οι μεταβλητές μπορεί να είναι περιορισμένες (restricted,) όπου, t.A, με A ένα γνώρισμα της R, συμβολίζει το A-τμήμα της τιμής του t Παράδειγμα: t.Name (2)Συνθήκες της μορφής x τελεστής y, όπου x, y είναι περιορισμένες μεταβλητές πλειάδος ή σταθερές τιμές και ο τελεστής   Παράδειγμα: t.Name = ‘Μαρία’, t.City  v.City

5 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL154 Εκφράσεις στον Λογισμό Πλειάδων (3) Well-Formed Formulas (WFFs), ορίζονται ως:  μια συνθήκη είναι WFF  αν f είναι μια WFF, τότε είναι και η (f) και η  (f) (όπου  είναι το Λογικό NOT)  αν f και g είναι WFFs, τότε είναι και η (f  g) και η (f  g) (όπου  είναι τα Λογικά AND, OR αντίστοιχα)  αν f είναι WFF με ελεύθερη μεταβλητή t, τότε είναι και οι  t(f),  t(f) (όπου ,  είναι οι υπαρξιακός (existential) και καθολικός (universal) ποσοδείκτες) Μια μεταβλητή πλειάδος t ονομάζεται δεσμευμένη (bound) σε μια έκφραση f αν είναι μια από μεταβλητές που ποσοδεικτούνται στην f. Αλλιώς, η t είναι ελεύθερη (free) στην f. Παράδειγμα: t είναι free στην f 1 : (t.City = ‘london’) και είναι bound στην f 2 : (  t ) (t.DNumber = v.Dno), ενώ η v είναι free in f 2

6 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL155 Εκφράσεις στον Λογισμό Πλειάδων n Παραδείγματα των WFFs –t.City = v.City –(t.City = v.City) –  (t.City = v.City) –(t.City  v.City) –(t.City = v.City)  (w.City = London) –  t (t.City = v.City) –  t (t.City = Athens) n αν f είναι μια WFF, τότε μια έκφραση στον λογισμό πλειάδων είναι κάθε έκφραση της μορφής: { t i.A j | t i  r(R k ) AND f } όπου τα R k είναι σχήματα σχέσεων και τα A j είναι γνωρίσματα στις R k

7 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL156 Παραδείγματα Ερωταποκρίσεων (1) n Επανερχόμαστε στην γνωστή ΒΔ των Ναυτικών SAILORS (Sid, SName, Rating) BOATS (Bid, BName, Color) RESERVE (Sid, Bid, Date) n QUERY1: Βρες τα ονόματα των ΝΑΥΤΙΚΩΝ που έχουν id μεγαλύτερο από 10 και έχουν διαβάθμιση (rating) ‘α’ RANGE of t is SAILORS t.SName where (t.Sid > 10)  (t.Rating = ‘a’) Παρακάτω δίνεται σαν θεωρητικά καθαρό RC query: { t.SName | t  r(SAILORS)  (t.Sid > 10)  (t.Rating = ‘a’)) }

8 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL157 Παραδείγματα Ερωταποκρίσεων (2) n QUERY2: Βρες τα ονόματα και διαβαθμίσεις των ΝΑΥΤΙΚΩΝ που έχουν κρατήσει το ΣΚΑΦΟΣ με νούμερο 3 RANGE of t is SAILORS RANGE of v is RESERVE t.SName, t.Rating where  v ( (t.Sid = v.Sid)  v.Bid = 3) ) n QUERY3: Βρες τα ονόματα των ΝΑΥΤΙΚΩΝ που δεν έχουν κρατήσει το ΣΚΑΦΟΣ με νούμερο 3 RANGE of t is SAILORS RANGE of v is RESERVE t.SName where  (  v ( (t.Sid = v.Sid)  v.Bid = 3) ) )

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

10 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL159 SQL - Διαχρονικά n Η γλώσσα 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)

11 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL160 SQL - Άτυπος Ορισμός n Θεωρήστε τη Σχέση EMPLOYEE και την παρακάτω ερωταπόκριση: “Βρείτε τα ονόματα των Υπαλλήλων που έχουν μισθό μεγαλύτερο των 600,000” Στην SQL: selecte.Name fromEMPLOYEE e where(e.Salary > ) –e είναι μια μεταβλητή πλειάδος που ορίζεται να παίρνει τιμές από την Σχέση EMPLOYEE (στην from πρόταση) –e.Name, ως περιορισμένη μεταβλητή πλειάδος, προσδιορίζει την τιμή του e στο γνώρισμα Name, και αποτελεί το target list (προσδιορίζει στην select πρόταση τις προβολές των στηλών) –(e.Salary > 30000) είναι η ικανοποίηση συνθήκης (qualification ) (προσδιορίζει στην where πρόταση όλες τις επιλογές και συνενώσεις)

12 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL161 SQL – Τυπικός Ορισμός (1) Η selection clause είναι μια σύγκριση μεταξύ μιας περιορισμένης μεταβλητής πλειάδος x και μιας σταθεράς c της μορφής : x operator c where operator  Παράδειγμα: t.Name = ‘mary’, t.Salary  Η join clause είναι μια σύγκριση μεταξύ δύο περιορισμένων μεταβλητών πλειάδος x και y της μορφής: x operator y όπου x, y ανήκουν σε διαφορετικές Σχέσεις και operator  Παράδειγμα: t.Name = v.EName

13 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL162 SQL -- Τυπικός Ορισμός (2) Η qualification είναι ένας Boolean συνδυασμός (δηλαδή, με τα Λογικά and, or, not) μεταξύ selection και join προτάσεων.) Παράδειγμα: (t.Name = v.EName) and (t.Salary > 30000) n Σημασιολογία του 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

14 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL163 SQL -- Σημασιολογία Εκτέλεσης. X = Τέλος, αφού κατασκευαστεί το υποσύνολο της EMPLOYEE X DEPARTMENT που ικανοποιεί τη συνθήκη Q, παίρνουμε δυο πλειάδες: Καρτεσιανό Γινόμενο EMPLOYEEDEPARTMENT  

15 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL164 SQL -- Πλήρης Μορφή select[ distinct ]target_list fromtuple_variable_list [ wherequalification ] [ group bygrouping_attributes ] [ havinggroup_condition ] [ order bytarget_list_subset ] –Μια ερωταπόκριση αποτιμάται πρώτα με την εφαρμογή της WHERE πρότασης, μετά των GROUP-BY και HAVING (προαιρετικά), και τέλος της SELECT πρότασης (στόχος λίστα γνωρισμάτων) – με ταξινόμηση των πλειάδων στην απάντηση ή διαγραφή διπλών τιμών, αν απαιτείται από την ORDER BY πρόταση ή το DISTINCT (επίσης προαιρετικά).

16 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL165 SQL: Παραδείγματα στην ΒΔ Ναυτικών (1) n Επανερχόμαστε στην ΒΔ των Ναυτικών: SAILORS (Sid, SName, Rating) BOATS (Bid, BName, Color) RESERVE (Sid, Bid, Date) n SQUERY1: Βρες τα ονόματα των ΝΑΥΤΙΚΩΝ που έχουν κάνει κράτηση για το ΣΚΑΦΟΣ με νούμερο 2 selects.SName fromSAILORS s, RESERVE r wheres.Sid = r.Sid and r.Bid = 2

17 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL166 SQL: Παραδείγματα στην ΒΔ Ναυτικών (2) n SQUERY2: Βρες τα ονόματα των ΝΑΥΤΙΚΩΝ που έχουν κρατήσει ΣΚΑΦΗ με χρώμα κόκκινο selects.SName fromSAILORS s, BOATS b, RESERVE r wheres.Sid = r.Sid and r.Bid = b.Bid and b.Color = “red” n SQUERY3: Βρες τα χρώματα των σκαφών που έχει κρατήσει η ναυτικός με το όνομα Ελένη selectb.Color fromSAILORS s, BOATS b, RESERVE r wheres.Sid = r.Sid and r.Bid =b.Bid and s.SName= “eleni”

18 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL167 SQL: Παραδείγματα στην ΒΔ Ναυτικών (3) n SQUERY4: Βρες τα ονόματα των ΝΑΥΤΙΚΩΝ που έχουν κρατήσει τουλάχιστον ένα ΣΚΑΦΟΣ selects.SName fromSAILORS s, RESERVE r wheres.Sid = r.Sid n SQUERY5: Βρες τα ονόματα των ΝΑΥΤΙΚΩΝ που έχουν κρατήσει ένα κόκκινο ή ένα πράσινο ΣΚΑΦΟΣ selects.SName fromSAILORS s, BOATS b, RESERVE r wheres.Sid = r.Sid and r.Bid = b.Bid and (b.Color = “red” or b.Color = “green”)

19 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL168 SQL: Παραδείγματα στην ΒΔ Ναυτικών (4) n SQUERY6: Βρες τα ονόματα των ΝΑΥΤΙΚΩΝ που έχουν κρατήσει ένα κόκκινο και ένα πράσινο ΣΚΑΦΟΣ selects.SName fromSAILORS s, BOATS b1, RESERVE r1, BOATS b2, RESERVE r2 wheres.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”

20 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL169 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)

21 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL170 SQL: Παραδείγματα για target list (1) n TARGET LISTS: Κάθε στοιχείο στην target list είναι σε γενική μορφή: attribute_name = expression όπου expression είναι μια αριθμητική έκφραση σε περιορισμένες μεταβλητές πλειάδος και σταθερές (όπως επίσης, built-ins και aggregates.) n CQUERY1: Παρουσίασε, αυξημένους κατά τους μισθούς των Υπαλλήλων, που έχουν εργαστεί σε δύο διαφορετικά έργα περισσότερο από 25 ώρες selecte.Name, Salary = e.Salary fromEMPLOYEE e, WORKS_ON w1, WORKS_ON w2 wheree.SSN = w1.SSN and e.SSN = w2.SSN and w1.HoursPW > 25 and w2.HoursPW > 25 and w1.PNumber != w2.PNumber

22 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL171 SQL: Παραδείγματα για target list (2) n Τα TARGET Lists μπορεί επίσης να περιέχουν τη λέξη κλειδί DISTINCT –Εφόσον η SQL δεν θεωρεί τις Σχέσεις ως σύνολα, διπλές πλειάδες είναι δυνατόν να παρουσιαστούν, σε αυτή την περίπτωση το DISTINCT χρησιμοποιείται για διαγραφή των διπλών τιμών n CQUERY2: Δείξε όλες τις ΔΙΑΦΟΡΕΤΙΚΕΣ τιμές των μισθών Υπαλλήλων selectdistinct e.Salary fromEMPLOYEE e n Αυτή η ερωταπόκριση δείχνει επίσης ότι η WHERE πρόταση είναι προαιρετική (χωρίς WHERE, όλες οι πλειάδες παρουσιάζονται)

23 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL172 SQL: Παραδείγματα για target list (3) n ΤοTARGET List μπορεί να περιέχει τον ειδικό χαρακτήρα: “ * ” (αστεράκι) Όταν ένα * χρησιμοποιείται, σημαίνει ότι όλα τα γνωρίσματα από τις Σχέσεις πρέπει να ανακτηθούν n CQUERY3: Δείξε όλους τους Υπαλλήλους του Τμήματος 4 select* fromEMPLOYEE e wheree.Dnumber = 4

24 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL173 SQL: Χρήση Μεταβλητών Πλειάδας n Τα ονόματα των Σχέσεων μπορεί να χρησιμοποιηθούν αντί για τις μεταβλητές πλειάδος n Αν το Σύστημα μπορεί να καταλάβει σε ποια Σχέση κάθε Γνώρισμα ανήκει, τότε οι μεταβλητές πλειάδος μπορεί να είναι συνεπαγόμενες (implicit) n CQUERY4: Για κάθε έργο που εκτελείται στην Αθήνα, παρουσίασε το όνομά του, το νούμερο του τμήματος που το ελέγχει και το όνομα του μάνατζερ του Τμήματος selectPName, DEPARTMENT.DNumber, Name fromEMPLOYEE, DEPARTMENT, PROJECT wherePROJECT.DNumber = DEPARTMENT.DNumber and MgrSSN = SSN and Location = “Athens”

25 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL174 SQL: Παραδείγματα με Qualification (1) n QUALIFICATIONS: Κάθε στοιχείο μιας qualification έχει τη γενική μορφή: expression = expression n CQUERY5: Βρες τα ονόματα των Υπαλλήλων, των οποίων ο μισθός είναι περισσότερου του διπλασίου του μισθού κάποιου άλλου Υπαλλήλου (δώστε και τα ονόματα των δευτέρων) selectName1 = e1.Name, Name2 = e1.Name fromEMPLOYEE e1, EMPLOYEE e2 where2 * e1.Salary < e2.Salary

26 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL175 SQL: Παραδείγματα με Qualification (2) n Η SQL υποστηρίζει άμεσα τις πράξεις συνόλων, όπως: –union –minus –intersect CQUERY6 : Βρες τα ονόματα των Υπαλλήλων που εργάζονται στο Τμήμα με νούμερο 4 και έχουν μισθό τουλάχιστον (selectName fromEMPLOYEE whereDNumber = 4 ) minus (selectName fromEMPLOYEE whereSalary < )

27 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL176 SQL: Παραδείγματα με Qualification (3) n 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” )

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

29 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL178 SQL: Παραδείγματα με Qualification (5) n Συσχετισμένα (CORRELATED) NESTED Queries: Εάν η συνθήκη στην WHERE πρόταση ενός nested query αναφέρεται σε ένα γνώρισμα του outer query, τότε τα δύο λέγονται Συσχετιζόμενα n Το αποτέλεσμα του nested query είναι διαφορετικό για κάθε πλειάδα των Σχέσεων στο outer query n CQUERY9: Παρουσίασε το όνομα κάθε Υπαλλήλου, που έχει έναν εξαρτώμενο ιδίου φύλλου με τον Υπάλληλο selectName fromEMPLOYEE e wheree.SSN in (select d.SSN from DEPENDENT d where d.SSN = e.SSN and d.Sex = e.Sex )

30 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL179 SQL: Παραδείγματα με Qualification (6) n Κάθε ερωταπόκριση που χρησιμοποιεί τον τελεστή IN (ελέγχει τη συμμετοχή σε σύνολο) μπορεί πάντα να εκφραστεί χωρίς εμφωλιασμό (flat query) n CQUERY9a: Παρουσίασε το όνομα κάθε Υπαλλήλου, που έχει έναν εξαρτώμενο ιδίου φύλλου με τον Υπάλληλο selectName fromEMPLOYEE e, DEPENDENT d wheree.SSN = d.SSN and d.Sex = e.Sex )

31 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL180 SQL: Παραδείγματα με Qualification (7) n Παρόμοιοι τελεστές με το IN είναι:  not in (ελέγχει τη μη συμμετοχή σε σύνολο)  OP any (OP συσχέτιση με κάποια πλειάδα σε σύνολο)  OP all (OP συσχέτιση με όλες τις πλειάδες σε σύνολο) where OP  n CQUERY10: Παρουσίασε τους Υπαλλήλους που έχουν μεγαλύτερο μισθό από όλους τους Υπαλλήλους του Τμήματος «Έρευνα» selectName fromEMPLOYEE whereSalary > all (select Salary from EMPLOYEE e, DEPARTMENT d where e.DNumber = d.DNumber and DName = “research” )

32 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL181 SQL: Παραδείγματα με Qualification (8) n Η SQL επίσης παρέχει τελεστές για σύγκριση συνόλων: –contains, not contains (υπερσύνολο ή όχι) –exists, not exists (κενό σύνολο ή όχι) n CQUERY11: Παρουσίασε τους Υπαλλήλους που εργάζονται σε όλα τα έργα που ελέγχονται από το Τμήμα 4 selectName fromEMPLOYEE e where(select w.PNumber from WORKS_ON where w.SSN = e.SSN) contains (select PNumber from PROJECT where DNumber = 4)

33 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL182 SQL: Παραδείγματα με Qualification (9) n CQUERY9b: Παρουσίασε το όνομα κάθε Υπαλλήλου, που έχει έναν εξαρτώμενο ιδίου φύλλου με τον Υπάλληλο selectName fromEMPLOYEE e whereexists (select * fromDEPENDENT d where d.SSN=e.SSN and d.Sex = e.Sex) n CQUERY12: Παρουσίασε τους Υπαλλήλους που δεν έχουν εξαρτώμενους selectName fromEMPLOYEE e wherenot exists (select * from DEPENDENT d where d.SSN=e.SSN )

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

35 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL184 SQL Συναθροιστικές Συναρτήσεις και Ομαδοποίηση (2) n Μερικές SQL υλοποιήσεις έχουν περιορισμούς (π.χ. δεν επιτρέπουν περισσότερες από μια τιμές από συναθροιστική συνάρτηση στο target list) n CQUERY13: Παρουσίασε τον Μέγιστο μισθό, τον Ελάχιστο μισθό, και το Μέσο μισθό μεταξύ όλων των Υπαλλήλων selectmax(Salary), min(Salary), avg(Salary) fromEMPLOYEE n QUERY14: Βρες τον αριθμό των Υπαλλήλων selectcount(*) fromEMPLOYEE

36 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL185 SQL Συναθροιστικές Συναρτήσεις και Ομαδοποίηση (3) n Qualified Aggregates: Το σύνολο στο οποίο οι Συναθροιστικές Συναρτήσεις εφαρμόζονται μπορεί να περιοριστεί από την where-πρόταση n CQUERY15: Παρουσίασε το Μέσο μισθό μεταξύ όλων των Υπαλλήλων στο Τμήμα με νούμερο 4 selectavg(Salary) fromEMPLOYEE whereDNumber = 4

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

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

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

40 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL189 SQL Συναθροιστικές Συναρτήσεις και Ομαδοποίηση(7) n CQUERY19: Βρες τον μέσο μισθό Υπαλλήλων που γεννήθηκαν μετά το 1950, για κάθε Τμήμα με περισσότερους των 10 Υπαλλήλων select e1.DNumber, avg(e1.Salary) from EMPLOYEE e1 where e1.BirthDate > “1.1.51” group by e1.DNumber having 10 < any (select count(e2.SSN) from EMPLOYEE e2 where e2.DNumber = e1.DNumber )

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

42 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL191 SQL Ενημερώσεις - Updates (2) n Έστω ότι έχουμε μια Σχέση DEPT_INFO: DEPT_INFO ( DeptName, NoOfEmpl, TotalSalary) n Μπορούμε να εισάγουμε πλειάδες (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

43 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL192 SQL Ενημερώσεις - Updates (3) n Εντολή DELETE delete from relation_name where-qualification SEMANTICS: -- Εκτέλεσε την ανάλογη SELECT εντολή και έπειτα Διέγραψε τις πλειάδες του αποτελέσματος από τη Σχέση n CUPDATE3: delete from EMPLOYEE where DNumber in (selectDNumber fromDEPARTMENT whereDName = “admin”)

44 Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL193 SQL Ενημερώσεις - Updates (4) n Εντολή UPDATE update relation_name set target_list where qualification SEMANTICS: -- Εκτέλεσε τις δύο ανάλογες SELECT εντολές, μετά, διέγραψε τις πλειάδες από την πρώτη και τέλος, κάνε εισαγωγή των νέων n CUPDATE4: update EMPLOYEE set Salary = Salary * 1.14 where DNumber in (selectDNumber fromDEPARTMENT whereDName = “admin”)


Κατέβασμα ppt "Ι.Β. – Σχεσιακός Λογισμός και η Γλώσσα SQL150 Κεφάλαιο 4 Η Γλώσσα SQL και Σχεσιακός Λογισμός."

Παρόμοιες παρουσιάσεις


Διαφημίσεις Google