Βάσεις Δεδομένων (Databases) ΕΠΛ 342 Χειμερινό Εξάμηνο 2011 Διδάσκοντες Καθηγητές Γιώργος Σαμάρας (ΧΩΔ01 109)
Έλεγχος Μέλους Συνόλου (Set Membership) Οι IN και NOT IN τελεστές ελέγχουν για μονό membership Q1: Εμφάνισε το SSN κάθε προϊσταμένου βιβλιοθηκάριου, μαζί με το όνομα του τμήματος τους τους, εκτός από αυτούς των τμημάτων Science και Art. SELECT HeadSSN, Name FROM SECTION WHERE Name NOT IN ('Science', 'Art ); 2
Έλεγχος Μέλους Συνόλου (Set Membership) Q2:.? SELECT L.Name FROM LIBRARIAN AS L WHERE L.SSN IN (SELECT LIBSSN FROM DEPENDENT D WHERE D.LIBSSN = L.SSN AND D.Gender = L.Gender); 3
Quantified Set Comparisons Έλεγχος μέλους με άλλους τελεστές σύγκρισης: ( =, <>, >, >=, <, <= ) Μπορούν να γίνουν ποσοτικοί με την χρήση του ANY (π.χ., SOME) ή ALL. Q: Εμφάνισε τα ονόματα & το SSN όλων των head librarians των οποίων ο μισθός είναι χαμηλότερος από κάθε librarian που δεν είναι head librarian. SELECT Name, SSN FROM LIBRARIAN, SECTION WHERE SSN = HeadSSN AND Salary < ANY (SELECT Salary FROM LIBRARIAN L WHERE L.SSN NOT IN ( SELECT HeadSSN FROM SECTION )); 4
Συνθήκες Συνόλων (Set Comparisons): Κενό Σύνολο Ο EXISTS (μη κενό) και ο NOT EXISTS (κενό) τελεστής ελέγχει την κενότητα του αποτελέσματος Q:? SELECT L.SSN, L.Name FROM LIBRARIAN L WHERE NOT EXISTS (SELECT * FROM SECTION WHERE L.SSN = HeadSSN); 5
Συνθήκες Συνόλων (Set Comparisons): Κανονικό Σύνολο Ο UNIQUE και ο NOT UNIQUE τελεστής ελέγχει για διπλές πλειάδες σε ένα αποτέλεσμα (π.χ, ελέγχει για set και bag, αντιστοίχως) Q: Εμφάνισε όλα τα ονόματα και τα SSNs όλων των librarians που έχουν πάνω από ένα εξαρτώμενο. SELECT Name, SSN FROM LIBRARIAN WHERE NOT UNIQUE (SELECT * FROM DEPENDENT WHERE LIBSSN = SSN); 6
Δομημένη Γλώσσα Ερωτήσεων SQL DML Update Τελεστές
2 Συμβολισμοί για τις πλειάδες Σύνολο από χαρακτηριστικά Σχεσιακό σχήμα R συμβολίζετε με R = {A 1 :D 1, A 2 :D 2,..., A n :D n } or R = {A 1, A 2,, A n } Μια πλειάδα t του r(r) συμβολίζετε με t ={A 1 :v 1, A 2 :v 2,..., A n :v n }, v i D i, 1 i n ή t = <(A 1 :v 1 ), (A 2 :v 2 ),..., (A n :v n )>, v i D i, 1 i n Λίστα με χαρακτηριστικά Σχεσιακό σχήμα R συμβολίζετε με R = (A 1 :D 1, A 2 :D 2,..., A n :D n ) ή R = (A 1, A 2,, A n ) Μια πλειάδα t του r(r) συμβολίζετε με t =(v 1, v 2,..., v n ), v i D i, 1 i n 8
Εισαγωγή STUDENT(SID,Name,Major); Δυο είδη: Έμμεσο (Implicit) και Άμεσο (Explicit) Έμμεσο (λίστα): INSERT INTO STUDENT VALUES (165, Susan, CS ); Άμεσο (σύνολο): INSERT INTO STUDENT (SID, Name) VALUES (165, Susan Jones ); INSERT INTO STUDENT (Name, SID) VALUES ( Susan Jones, 165); Values-clause μπορεί να είναι λίστα από πλειάδες σε κάποια συστήματα 9
Παραγόμενες Πλειάδες/Τιμές Εισαγωγής Χρήσιμο για να γεμίσουμε πίνακες σε μια βάση από δεδομένα που ήδη υπάρχουν στην βάση Οι πλειάδες παρέχονται με την χρήση του SELECT INSERT INTO Dept_Info (Dept_Name, Num_Students) SELECT Major, Count(*) FROM STUDENT GROUP BY Major; 10
Ενημέρωση πλειάδων Η ενημέρωση μπορεί να γίνει μόνο σε μια σχέση Ενημερώνει όλες τις επιλεγμένες πλειάδες που ικανοποιούν το WHERE-clause Παράδειγμα: UPDATE STUDENT UPDATE STUDENT SET Name = Kathy Jones SET Major = CS WHERE SID = 165; WHERE DNO IN ( SELECT DNUM FROM DEPT WHERE Dname = CS ); 11
Διαγραφή Πλειάδων Η διαγραφή αφαιρεί όλες τις επιλεγμένες πλειάδες που ικανοποιούν το WHERE-clause Παραδείγματα: DELETE FROM STUDENT WHERE SID = 165; DELETE FROM STUDENT WHERE DNO IN DELETE FROM STUDENT ( SELECT DNUM WHERE Name = John ; FROM DEPT WHERE Dname = CS ); 12