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

Slides:



Advertisements
Παρόμοιες παρουσιάσεις
ΕΡΩΤΗΜΑΤΑ ΕΠΙΛΟΓΗΣ ΜΑΘΗΜΑ 6. SELECTSELECT SELECT * FROM όνομα_πίνακα ; • Με τη εντολή SELECT ανασύρουμε δεδομένα από την βάση δεδομένων. • Το αστεράκι.
Advertisements

9 Η Γλώσσα SQL Ορισμός Δεδομένων (data definition)
Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ
ΕΡΩΤΗΜΑΤΑ ΕΠΙΛΟΓΗΣ 2 ΜΑΘΗΜΑ 8. ΑΠΑΛΟΙΦΗ ΔΙΠΛΟΕΓΓΡΑΦΩΝ DISTINCT Μπορούμε να απαλείψουμε τις διπλοεγγραφές που μας επιστρέφονται και που οφείλονται στην.
1 Βάσεις Δεδομένων ΙI Επιμέλεια: ΘΟΔΩΡΗΣ ΜΑΝΑΒΗΣ SQL (3 από 3) T Manavis.
9 Η Γλώσσα SQL  Εισαγωγή – Βασικές Έννοιες  Τύποι Δεδομένων  Ορισμός Δεδομένων  Χειρισμός Δεδομένων.
9 Η Γλώσσα SQL  Εισαγωγή – Βασικές Έννοιες  Τύποι Δεδομένων  Ορισμός Δεδομένων (data definition)  Χειρισμός Δεδομένων (data manipulation)
Βάσεις Δεδομένων Ευαγγελία Πιτουρά1 Η Γλώσσα SQL.
Τεχνολογικό Εκπαιδευτικό Ίδρυμα Θεσσαλίας Αντικειμενοστραφής Προγραμματισμός Ι Ενότητα 2: Μεταβλητές και Τύποι Δεδομένων. Διδάσκων: Νικόλαος Θ Λιόλιος,
Υδραυλικά & Πνευματικά ΣΑΕ
Υδραυλικά & Πνευματικά ΣΑΕ
Εφαρμοσμένη Θερμοδυναμική
Ηλεκτρικές Μηχανές ΙΙ Εργαστήριο
Ενότητα 3: Μικροϋπολογιστές Ιωάννης Έλληνας Τμήμα Η/ΥΣ
Βάσεις Δεδομένων Ενότητα 7.2: Structured Query Language - 2 ο Μέρος Αθανάσιος Σπυριδάκος Τμήμα Διοίκησης Επιχειρήσεων ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό.
Ηλεκτρικές Μηχανές ΙΙ Εργαστήριο Ενότητα 5: Χαρακτηριστική Βραχυκύκλωσης Δύγχρονης Γεννήτριας Ηρακλής Βυλλιώτης Τμήμα Ηλεκτρολόγων Μηχανικών ΤΕ ΕΛΛΗΝΙΚΗ.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Εκπαιδευτικά Προγράμματα με Χρήση Η/Υ ΙΙ Θέμα «παιγνίδια» (website address) Διδάσκουσα: Καθηγήτρια Τζένη.
Υδραυλικά & Πνευματικά ΣΑΕ Ενότητα # 8: Προηγμένα Πνευματικά Συστήματα Μιχαήλ Παπουτσιδάκης Τμήμα Αυτοματισμού ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό.
Κλασσική Μηχανική Ενότητα 1: Εισαγωγικές Έννοιες-Ορισμοί Βασίλειος Λουκόπουλος, Επίκουρος Καθηγητής Τμήμα Φυσικής.
Κλασσική Μηχανική Ενότητα 2: Μονοδιάστατες Κινήσεις Βασίλειος Λουκόπουλος, Επίκουρος Καθηγητής Τμήμα Φυσικής.
Η Εντολή Select Select Πεδίο1, Πεδίο2, … Πεδίοn From Πίνακας1, Πίνακας2, …, Πίνακαςm Where συνθήκη;
Στοιχεία Μηχανών ΙΙ Ενότητα 3: Μετωπικοί τροχοί με κεκλιμένη οδόντωση – Κωνικοί οδοντωτοί τροχοί Δρ Α. Δ. Τσολάκης Τμήμα Μηχανολόγων Μηχανικών Τ.Ε. ΕΛΛΗΝΙΚΗ.
Αρχές Διοίκησης και Διαχείρισης Έργων Ενότητα 12: Οικονομική Διαχείριση Έργων – Ταμειακές Ροές. Διδάσκων: Φιτσιλής Παναγιώτης, Καθηγητής. Τμήμα Διοίκησης.
Τμήμα Τεχνολόγων Γεωπόνων Τίτλος Μαθήματος: ΚΑΛΛΩΠΙΣΤΙΚΑ ΔΕΝΤΡΑ ΚΑΙ ΘΑΜΝΟΙ Ενότητα 12: Οδηγίες δημιουργίας φυτολογίου Γρηγόριος Βάρρας Αν. Καθηγητής Άρτα,
Διοίκηση Ανθρωπίνων Πόρων Ενότητα 3: Προσέλκυση Ανθρώπινου Δυναμικού. Διδάσκων: Γεώργιος Ασπρίδης, Επίκουρος Καθηγητής. Τμήμα Διοίκησης Επιχειρήσεων.
ΗΛΕΚΤΡΟΝΙΚΟ ΕΜΠΟΡΙΟ Ενότητα 12 : Η χρήση της MySQL στο Ηλεκτρονικό εμπόριο (ΙΙI) Ιωάννης Τσούλος Ελληνική Δημοκρατία Τεχνολογικό Εκπαιδευτικό Ίδρυμα Ηπείρου.
Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα Επιχειρηματικότητας
Βάσεις Δεδομένων Ι 4η διάλεξη
Βάσεις Δεδομένων Ενότητα 5: Σημασιολογικός Σχεδιασμός
Βάσεις Δεδομένων Ενότητα 3: Σχεδιασμός και Διαχείριση Βάσεων Δεδομένων
Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου
Βάσεις Δεδομένων Ενότητα 3: Σχεσιακή Άλγεβρα Βασίλης Βουτσινάς
Ενότητα 5 : Δομές Δεδομένων και αφηρημένοι
Ενότητα # 1: ΟΔΗΓΙΕΣ ΓΙΑ ΤΗΝ ΕΝΕΡΓΟΠΟΙΗΣΗ ΚΩΔΙΚΟΥ
ΠΛΗΡΟΦΟΡΙΚΗ Ι Ενότητα # 10: Εισαγωγή στο Ms Powerpoint Τμήμα Ιστορίας
9 Η Γλώσσα SQL Εισαγωγή – Βασικές Έννοιες Τύποι Δεδομένων
ΕνΟτητα # 6: Ms Word IΙΙ CLAUDIA BOETTCHER ΤμΗμα ΙστορΙαΣ
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(9)
Υδραυλικά & Πνευματικά ΣΑΕ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ανοιχτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ηπείρου
ΕΥΦΥΗΣ ΕΛΕΓΧΟΣ Κεφάλαιο 10 Λυμένες Ασκήσεις στον Ευφυή έλεγχο
Στοιχεία Μηχανών ΙΙ Ενότητα 4: Πλανητικοί Μηχανισμοί Δρ Α. Δ. Τσολάκης
ΕνΟτητα # 9: Ms Word VI CLAUDIA BOETTCHER ΤμΗμα ΙστορΙαΣ
Διαχείριση Κινδύνου Ενότητα 7: Παρακολούθηση Κινδύνων.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Εισαγωγή στους Η/Υ Ενότητα 11: Αλγεβρικές πράξεις στους Η/Υ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Περιγραφή Ενότητας Σκοπός του μαθήματος είναι η παρουσίαση δηλώσεων SQL που περιλαμβάνουν EXIST, ANY, ALL. Χ. Σκουρλάς.
ΠΑΡΟΥΣΙΑΣΕΙΣ ΜΑΘΗΜΑΤΟΣ ΠΙΘΑΝΟΤΗΤΕΣ(3)
Συστήματα Αυτομάτου Ελέγχου II
Ενότητα 2 : Το σύστημα βάσεων δεδομένων MySQL (II) Ιωάννης Τσούλος
ΜΗΧΑΝΙΚΗ ΤΩΝ ΥΛΙΚΩΝ ΦΡΟΝΤΙΣΤΗΡΙΟ: ΔΙΚΤΥΩΜΑΤΑ
Βάσεις Δεδομένων Ι 8η διάλεξη
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ηλεκτρικές Μηχανές ΙΙ Ενότητα 5: Κανονικοποιημένες Καμπύλες
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Επιχειρησιακές Επικοινωνίες
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ενότητα 3 : Παραδείγματα προγραμματισμού Ιωάννης Έλληνας Τμήμα Η/ΥΣ
ΑΝΑΓΝΩΡΙΣΗ ΠΡΟΤΥΠΩΝ ΝΕΥΡΩΝΙΚΑ ΔΙΚΤΥΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Ερωτήματα Επιλογής σε ACCESS
SQL Βάσεις Δεδομένων Ευαγγελία Πιτουρά.
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ
Μεταγράφημα παρουσίασης:

Βάσεις Δεδομένων Ενότητα 7.1: Structured Query Language - 1 ο Μέρος Αθανάσιος Σπυριδάκος Τμήμα Διοίκησης Επιχειρήσεων ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

Σκοποί Ενότητας Ο φοιτητής που θα παρακολουθήσει με επιτυχία την ενότητα αυτή θα διαθέτει τις απαιτούμενες θεωρητικές και πρακτικές γνώσεις ώστε: Να προστατεύει τις Βάσεις Δεδομένων ώστε τα δεδομένα να είναι ασφαλή τόσο από εξωτερικούς παράγοντες όσο και από αστοχίες του εξοπλισμού. 4

Περιεχόμενα Ενότητας Εισαγωγή στην SQL Οι υποδιαρέσεις της SQL (DDL και DML) Οι εντολές CREATE, ALTER, DROP TABLE Η εντολή ερωτημάτων SELECT και οι εφαρμογές της 5

Παράδειγμα 1 6

Παράδειγμα 2 - Πανεπιστήμιο 7 Department {deptName, phone, faxNo, location, mgrStaffNo, mgrStartDate} Primary key: deptName Foreign key: mgrStaffNo references Staff (staffNo) Staff {staffNo, fName, lName, address, phone, officeNo, sex, salary, post, computerId, deptName} Primary key: staffNo Foreign key: deptName references Department (deptName) Course {cCode, title, duration, leaderStaffNo, deptName} Primary key: cCode Foreign key: leaderStaffNo references Staff (staffNo) Foreign key: deptName reference Department (deptName) Module {mCode, title, startDate, endDate, coursework, exam, courseCode, cordStaffNo} Primary key: mCode Foreign key: courseCode references Course (cCode) Foreign key: cordStaffNo references Staff (staffNo) Student {matericNo, fName, lName, town, street, postCode, dob, sex, loan, courseCode} Primary key: matericNo Foreign key: courseCode references Course (cCode)

Παράδειγμα 2 – Πανεπιστήμιο (2) 8 Next-Of-Kin {matericNo, name, phone, relationship} Primary key: matericNo, name Foreign key: matericNo references Student (matericNo) Undertake {stdMatericNo, moduleCode, performance} Primary key: stdMatericNo, moduleCode Foreign key: stdMatericNo references Student (matericNo) Foreign key: moduleCode references Module (mCode) Teaches {teachStaffNo, moduleCode, hours} Primary key: teachStaffNo, moduleCode Foreign key: teachStaffNo references Staff (staffNo) Foreign key: moduleCode references Module (mCode) Texts {moduleCode, text} Primary key: moduleCode, text Foreign key: moduleCode references Module (mCode) Qualifications {qualStaffNo, qualification} Primary key: qualStaffNo, qualification Foreign Key: qualStaffNo references Staff (staffNo)

Η Εντολή SELECT 9

Εντολή SELECT SELECTΚαθορίζουμε ποιά χαρακτηριστικά θα εμφανίσουμε. FROM Καθορίζουμε τους πίνακες από όπου θα αντλήσουμε δεδομένα WHERE Θέτουμε τα φίλτρα GROUP BY Ομαδοποιούμε τις γραμμές των δεδομένων HAVING Θέτουμε φίλτρα (ειδικές περιπτώσεις). ORDER BY Ταξινόμηση. – Η σειρά σύνταξης δεν πρέπει να αλλάζει – Τα SELECT και FROM είναι υποχρεωτικά 10

Όλες οι στήλες και όλες οι γραμμές ενός πίνακα Κατάλογος (με όλες τις λεπτομέρειες) των φοιτητών του Πανεπιστημίου: SELECT matericNo, fName, lName, town, street, postCode, dob, sex, loan, courseCode FROM student; Χρησιμοποιείται και το * για όλες τις στήλες: SELECT * FROM student; 11

Καθορισμένες Στήλες, Όλες οι γραμμές Κατάλογος του κωδικού, όνομα, επώνυμο και διεύθυνση των φοιτητών. SELECT matericNo, fName, lName, town, street, postCode FROM student; 12

Χρήση DINSTINCT Κατάλογος των Μαθημάτων τα οποία έχουν επιλέξει οι φοιτητές. SELECT moduleCode FROM Undertake; Επιστρέφει τους κωδικούς των μαθημάτων που έχουν επιλεγεί. Κάθε κωδικός εμφανίζεται τόσες φορές, όσες και έχει δηλωθεί από φοιτητές. Χρησιμοποιούμε DINSTINCT για να εξαφανίσουμε τις διπλο-εμφανίσεις: SELECT DISTINCT moduleCode FROM Undertake; 13

Υπολογιζόμενα Πεδία Κατάλογος των προϊόντων, της τιμής τους και του ΦΠΑ SELECT pcode, description, price, price*0.23 FROM product; Στην εμφάνιση των αποτελεσμάτων ο τίτλος της στήλης του ΦΠΑ θα είναι price*0.23. Για την μεταβολή του τίλτου της στήλης έχουμε: SELECT pcode, description, price, price*0.23 AS FPA FROM product; 14

Ερώτημα με Συνθήκη Κατάλογος των προϊόντων με τιμή μεγαλύτερη των 100. SELECT pcode, description, price FROM product WHERE price > 100; 15

Με Πολλές συνθήκες Κατάλογος των φοιτητών που κατοικούν στην Αθήνα ή στη Λάρισα. SELECT matericNo, fName, lName, town, street, postCode FROM student WHERE town= ‘Αθήνα’ OR town= ‘Λάρισα’; Χρησιμοποιούμε τους τελεστές AND και OR. Συνθήκη 1 AND Συνθήκη 2: Η συνθετη συνθήκη ικανοποιείται όταν ικανοποιούνται και οι δυο συνθήκες. (Σ1 AND Σ2) Συνθήκη 1 OR Συνθήκη 2: Η συνθετη συνθήκη ικανοποιείται όταν ικανοποιείται τουλάχιστον μια από τις δυο συνθήκες. (Σ1 OR Σ2) 16 Σ1 Σ2 Σ1

Συνθήκη με Διάστημα Τιμών Κατάλογος των προϊόντων με τιμή μεταξύ 50 και 100. SELECT pcode, description, price FROM product WHERE price BETWEEN 50 AND 100; Στο BETWEEN περιλαμβάνονται και οι ακραίες τιμές 17

Συνθήκη με Διάστημα Τιμών (2) Χρησιμοποιείται και το NOT BETWEEN. Ερώτημα με BETWEEN μπορεί να γραφεί και με αυτήν τη μορφή: SELECT pcode, description, prise FROM product WHERE price >=50 AND price <=100; 18

Αναζήτηση με Λίστα Τιμών Κατάλογος των φοιτητών που κατοικούν Αθήνα, Λάρισα ή Πάτρα. SELECT matericNo, fName, lName, town, street, postCode FROM student WHERE town= IN(‘Αθήνα’, ‘Λάρισα’, ‘Πάτρα’); Χρησιμοποιείται και το (NOT IN). Είναι ίδιο με την παρακάτω εντολή SELECT matericNo, fName, lName, town, street, postCode FROM student WHERE town= ‘Αθήνα’ OR town=‘Λάρισα’ OR town = ‘Πάτρα’; Το IN είναι περισσότερο αποτελεσματικό στις λίστες με πολλές τιμές. 19

Χαλαρή Αναζήτηση Εύρεση το προσωπικού (Καθηγητών) που μένουν στον Πειραιά. SELECT staffno, fname, lname, address, salary FROM staff WHERE address LIKE ‘%Πειραιά%’; Η SQL έχει δύο χρήσιμα σύμβολα: - %: Σειρά από χαρακτήρες (* στην MS ACCESS); -_ (underscore): ένας μόνο χαρακτήρας. LIKE ‘%Πειραιά%’; μια σειρά από χαρακτήρες που περιέχει το ‘Πειραιά’. 20

IS NULL Κατάλογος των φοιτητών που δεν έχουν βαθμολογηθεί στο μάθημα με κωδικό 101. SELECT stdMatericNo, moduleCode, performance FROM Undertake WHERE moduleCode= ‘101’ AND performance IS NULL; Υπάρχει και το IS NOT NULL για τον έλεγχο μη κενών τιμών. 21

Ταξινόμηση με Ένα Κλειδί Κατάλογος του προσωπικού (Καθηγητών) με τους μισθούς τους, ταξινομημένοι κατά φθίνουσα σειρά του μισθού. SELECT staffno, fname, lname, salary FROM staff ORDER BY salary DESC; Κατάλογος του προσωπικού (Καθηγητών) με τους μισθούς, ταξινομημένοι κατά αύξουσα σειρά του μισθού. SELECT staffno, fname, lname, salary FROM staff ORDER BY salary; [DESC - Φθίνουσα, ASC – Αύξουσα] 22

Ταξινόμηση με Πολλές Στήλες (Κλειδιά) Η ταξινόμηση γίνεται με το πρώτο κλειδί. Στην περίπτωση που δυο γραμμές έχουν την ίδια τιμή στο πρώτο κλειδί ταξινόμησης τότε χρησιμοποιείται το δεύτερο SELECT staffno, fname, lname, address, salary FROM staff ORDER BY lname, fname; 23

Συναρτήσεις ISO Πρότυπο: COUNT Μετράμε τις εγγραφές SUM Αθροίζεται ένα αριθμητικό πεδίο. AVG Μέση τιμή. MIN Ελάχιστη τιμή. MAX Μέγιστη τιμή COUNT, MIN και MAX εφαρμόζονται σε αριθμητικά και μη αριθμητικά δεδομένα, SUM και AVG χρησιμοποιούνται μόνο σε αριθμητικά δεδομένα. Εκτός της COUNT(*), κάθε άλλη συνάρτηση πρώτα εξαφανίζει τις κενές τιμές του πεδίου και μετά εκτελεί τις πράξεις στις εγγραφές με μη κενά στο πεδίο 24

Συναρτήσεις (2) COUNT(*) μετρά τον αριθμό των εγγραφών Μπορούμε να χρησιμοποιήσουμε DISTINCT για να εξαφανίσουμε τις διπλο-μετρήσεις Οι Συναρτήσεις μπορούν να χρησιμοποιηθούν στη λίστα πεδίων της SELECT και στη HAVING. 25

Συναρτήσεις (3) Το παρακάτω δεν επιτρέπεται διότι η COUNT έχει όρισμα, χωρίς να υπάρχει Group By SELECT sno, COUNT(salary) FROM staff; Πόσοι φοιτητές πέρασαν το μάθημα με κωδικό 1001; SELECT COUNT(*) AS count FROM Undertake WHERE performance >=5 and ModuleCode=1001; 26

Χρήση της COUNT(DISTINCT) Πόσους πελάτες είχαμε τον Μάρτιο του 2013 SELECT COUNT(DISTINCT CAFM) AS count FROM Orders WHERE Orderdate BETWEEN #01/01/2013# AND #31/03/2013#; 27

Χρήση της COUNT και της SUM Υπολογισμός του αριθμού πωλήσεων προϊόντων και του αθροίσματος των εσόδων. SELECT COUNT(pcode) AS productcount, SUM(Quantity) AS SumQuantity, SUM(total) AS SumTotals FROM sales; 28

Χρήση της MIN, MAX, AVG Υπολογισμός του ελάχιστου, μέγιστου, και της μέσης τιμής των τιμών των προϊόντων. SELECT MIN(price) AS pricemin, MAX(price) AS pricemax, AVG(price) AS priceavg FROM products; 29

Ομαδοποίηση Χρησιμοποιούμε το GROUP BY για να υπολογίζουμε μερικά αθροίσματα. Οι εντολές SELECT και GROUP BY χρησιμοποιούνται για να παράγουμε στατιστικά δεδομένα σε ομάδες των δεδομένων. Όλα τα πεδία που μετέχουν στη SELECT πρέπει να εμφανίζονται στην GROUP BY εκτός αν περιλαμβάνεται συνάρτηση (πχ sum). Αν χρησιμοποιείται WHERE μαζί με την GROUP BY, τότε εκτελείται πρώτα η WHERE και μετά δημιουργούνται τα groups με τις εγγραφές που έχουν απομείνει. 30

Χρήση της GROUP BY Ο αριθμός του Καθηγητών για κάθε τμήμα και το σύνολο των μισθών των καθηγητών του κάθε τμήματος. SELECT DeptName, COUNT(Staffno) AS Staffcount, SUM(salary) AS SumSalary FROM staff GROUP BY DeptName ORDER BY DeptName; 31

Περιορισμοί στην Ομαδοποίηση Η HAVING έχει σχεδιασθεί για να λειτουργεί με GROUP BY για το περιορισμό των ομάδων που εμφανίζονται στον τελικό πίνακα. Λειτουργεί παρόμοια με το WHERE, το WHERE φιλτράρει εγγραφές ενώ το HAVING φιλτράρει ομάδες. Τα πεδία που εμφανίζονται στο HAVING πρέπει να εμφανίζονται και στο GROUP BY ή να περιλαμβάνονται σε συνάρτηση στη SELECT. 32

Χρήση του HAVING Για κάθε Τμήμα με περισσότερα από ένα μέλη στο προσωπικό, βρείτε τον αριθμό του προσωπικού και το άθροισμα των μισθών. SELECT DeptName, COUNT(Staffno) AS StaffCount, SUM(salary) AS SalarySum FROM staff GROUP BY DeptName HAVING COUNT(Staffno) >1 ORDER BY DeptName; 33

Συνδυασμός (φωλιασμένες) SELECT Μπορούμε να έχουμε εντολή SELECT μέσα σε εντολή SELECT. Το υπο-ερώτημα μπορεί να χρησιμοποιηθεί σε WHERE και HAVING μιας εντολής SELECT, και καλείται υπο-ερώτημα ή φωλιασμένο ερώτημα. Υπο-ερωτήματα μπορούν να χρησιμοποιηθούν σε εντολές INSERT, UPDATE, και DELETE. 34

Παράδειγμα υπο-ερωτήματος Τα μαθήματα που διευθύνει ο Καθηγητής που έχει το Γραφείο 101. SELECT mCode, title, cordStaffNo FROM Course WHERE CordStaffNo = (SELECT StaffNo FROM Staff WHERE OfficeNo= ‘101’); 35

Υπο-ερώτημα με Συνάρτηση Κατάλογος του προσωπικού που ο μισθός του είναι μεγαλύτερος του μέσου μισθού και της διαφοράς του μισθού από το μέσο Μισθό. SELECT staffno, fname, lname, salary - (SELECT avg(salary) FROM Staff) AS saldiff FROM staff WHERE salary > (SELECT avg(salary) FROM staff); > 36

Φωλιασμένα Ερωτήματα: Χρήση της IN Οι Φοιτητές (Κωδικοί) που παρακολουθούν μαθήματα που διευθύνει ο Καθηγητής που έχει το Γραφείο 101. SELECT matericNo, FROM UnderTake WHERE ModuleCode IN (SELECT mCode FROM Module WHERE CordStaffNo = (SELECT StaffNo FROM Staff WHERE OfficeNo=‘101’)); 37

ANY και ALL Οι ANY και ALLμπορούν να χρησιμοποιηθούν σε υπο-ερωτήματα που παράγουν πίνακες μιας στήλης. Αν σε ένα υπο-ερώτημα χρησιμοποιείται το ALL, τότε η συνθήκη ικανοποιείται αν ικανοποιείται από όλες τις τιμές που παράγονται από το υπο-ερώτημα. Αν σε υπο-ερώτημα χρησιμοποιείται το ANY, αν η συνθήκη ικανοποιείται από μια τουλάχιστον τιμή που προέρχεται από το υπο-ερώτημα. Αν το υπο-ερώτημα είναι κενό τότε το, ALL επιστρέφει true, ενώ το ANY επιστρέφει false. Το ISO standard επιτρέπει τη χρήση του SOME στη θέση του ANY. 38

Χρήση του ANY/SOME Να βρεθεί το προσωπικό που ο μισθός του είναι μεγαλύτερος από τουλάχιστον ενός που εργάζεται στη Σχολή ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ. SELECT sno, fname, lname, salary FROM staff WHERE salary > SOME (SELECT salary FROM staff WHERE DeptName = ‘ΔΙΟΙΚΗΣΗΣ ΚΑΙ ΟΙΚΟΝΟΜΙΑΣ’); 39

Χρήση του ALL Να βρεθεί το προσωπικό του οποίου ο μισθός είναι μεγαλύτερος από τους μισθούς κάθε εργαζόμενου στη Σχολή Διοίκησης και Οικονομίας. SELECT sno, fname, lname, salary FROM staff WHERE salary >ALL (SELECT salary FROM staff WHERE DeptName= ‘ΔΙΟΙΚΗΣΗ ΚΑΙ ΟΙΚΟΝΟΜΙΑ’); 40

Ασκήσεις Εξάσκησης (Α’ Ενότητας) Δίδεται το παρακάτω τμήμα Βάσης Δεδομένων που αφορά όμιλο Ξενοδοχείων: Hotel (hotelNo, name, address, mgrStaffNo) Room (roomNo, hotelNo, type, price) Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo) Guest (guestNo, name, address, sex) Staff (staffNo, fName, lName, sex, dob, salary, telNo, hotelNo) (Υπογραμμισμένα τα πρωτεύοντα κλειδιά και τα ξένα κλειδιά έχουν το ίδιο όνομα με τα πρωτεύοντα κλειδιά) Γράψτε τις εντολές SQL για τα παρακάτω ερωτήματα: a.Εμφανίστε λίστα με τα ονόματα και τις διευθύνσεις όλων των επισκεπτών που ζουν στην Αθήνα. Βάλτε τα ονόματα σε αλφαβητική σειρά. b.Εμφανίστε τα στοιχεία όλων των δίκλινων ή τετράκλινων δωματίων με τιμή κάτω από 50,00 €τη βραδιά. Βάλτε τις τιμές κατά αύξουσα σειρά. c.Εμφανίστε τη λίστα του προσωπικού (Κωδικός, όνομα, επώνυμο) που εργάζεταο στο Ξενοδοχείο ΦΙΛΟΞΕΝΕΙΑ. d.Εμφανίστε τη λίστα των επισκεπτών που είναι γυναίκες και διαμένουν στην Ελλάδα. e.Εμφανίστε τον αριθμό των δωματίων κατά τύπο (Μονόκλινα, Δίκλινα, σουϊτες). 41

Ασκήσεις Εξάσκησης (Α’ Ενότητας) (2) Δίδεται το παρακάτω τμήμα Βάσης Δεδομένων που αφορά όμιλο Ξενοδοχείων: Hotel (hotelNo, name, address, mgrStaffNo) Room (roomNo, hotelNo, type, price) Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo) Guest (guestNo, name, address, sex) Staff (staffNo, fName, lName, sex, dob, salary, telNo, hotelNo) (Υπογραμμισμένα τα πρωτεύοντα κλειδιά και τα ξένα κλειδιά έχουν το ίδιο όνομα με τα πρωτεύοντα κλειδιά) Γράψτε τις εντολές SQL για τα παρακάτω ερωτήματα: f)Εμφανίστε λίστα με τα δωμάτια (RoomNo) του Ξενοδοχείου ΧΕΝΙΑ που η τιμή τους είναι μεγαλύτερη από τη μέση τιμή των δωματίων όλων των Ξενοδοχείων. g)ζ) Εμφανίστε τα στοιχεία όλων των κρατήσεων δωματίων για την ημερομηνία 1/1/2014. h)η) Εμφανίστε τη λίστα των Ξενοδοχείων (Κωδικό) που έχει διαμείνει ο Επισκέπτης με όνομα ‘Γεωργίου Γεώργιος”. i)θ) Ποιά είναι η μέση, η μεγαλύτερη και η μικρότερη τιμή των δωματίων Ξενοδοχείων της Αθήνας j)Ι) Εμφανίστε λίστα με μονόκλινα δωμάτια του Ξενοδοχείου με κωδικό 101 που είναι φθινότερα από όλα τα μονίκλινα δωμάτια του Ξενοδοχείου με κωδικό

Ασκήσεις – Επίλυση a, b a)Εμφανίστε λίστα με τα ονόματα και τις διευθύνσεις όλων των επισκεπτών που ζουν στην Αθήνα. Βάλτε τα ονόματα σε αλφαβητική σειρά. SELECT name, address FROM Guest WHERE address LIKE '%Αθήνα%' ORDER BY name; b)Εμφανίστε τα στοιχεία όλων των δίκλινων ή τετράκλινων δωματίων με τιμή κάτω από 50,00€ τη βραδιά. Βάλτε τις τιμές κατά αύξουσα σειρά. SELECT * FROM Room WHEREprice < 50 AND type IN (‘Δίκλινο', ‘Τετράκλινο') ORDER BYprice; 43 Hotel (hotelNo, name, address, mgrStaffNo) Room (roomNo, hotelNo, type, price) Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo) Guest (guestNo, name, address, sex) Staff (staffNo, fName, lName, sex, dob, salary, telNo, hotelNo)

Ασκήσεις – Επίλυση c,d c)Εμφανίστε τη λίστα του προσωπικού (Κωδικός, όνομα, επώνυμο) που εργάζεται στο Ξενοδοχείο ΦΙΛΟΞΕΝΕΙΑ SELECT staffno, Fname, LName FROM Staff WHERE HotelNo = (SELECT HotelNo FROM hotel WHERE name = ‘ΦΙΛΟΧΕΝΙΑ’); d)Εμφανίστε τη λίστα των επισκεπτών που είναι γυναίκες και διαμένουν στην Ελλάδα. SELECT guestno, name FROM Guest WHEREsex = ‘Female’ AND address Like ‘%Ελλάδα%’ 44 Hotel (hotelNo, name, address, mgrStaffNo) Room (roomNo, hotelNo, type, price) Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo) Guest (guestNo, name, address, sex) Staff (staffNo, fName, lName, sex, dob, salary, telNo, hotelNo)

Ασκήσεις – Επίλυση e, f e)Εμφανίστε τον αριθμό των δωματίων κατά τύπο (Μονόκλινα, Δίκλινα, σουϊτες…). SELECT type, count(type), FROM Room GROUP BYtype; f)Εμφανίστε λίστα με τα δωμάτια (RoomNo) του Ξενοδοχείου ΧΕΝΙΑ που η τιμή τους είναι μεγαλύτερη από τη μέση τιμή των δωματίων όλων των Ξενοδοχείων SELECT RoomNo, price FROM Room WHERE price > (SELECT AVERAGE(price) FROM Room ); 45 Hotel (hotelNo, name, address, mgrStaffNo) Room (roomNo, hotelNo, type, price) Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo) Guest (guestNo, name, address, sex) Staff (staffNo, fName, lName, sex, dob, salary, telNo, hotelNo)

Ασκήσεις – Επίλυση g, h g)Εμφανίστε τα στοιχεία όλων των κρατήσεων δωματίων για την ημερομηνία 1/1/2014. SELECT HotelNo, GuestNo, RoomNo FROM Booking WHERE dataFrom <= #1/1/2014# AND dataTo > #1/1/2014#; h)Εμφανίστε τη λίστα των Ξενοδοχείων (Κωδικό) που έχει διαμείνει ο Επισκέπτης με όνομα ‘Γεωργίου Γεώργιος”. SELECT HotelNo, FROM Booking WHERE guestNo = (SELECT guestNo FROM Guest WHERE fName=‘Γεώργιος” AND lName=‘Γεωργίου’); 46 Hotel (hotelNo, name, address, mgrStaffNo) Room (roomNo, hotelNo, type, price) Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo) Guest (guestNo, name, address, sex) Staff (staffNo, fName, lName, sex, dob, salary, telNo, hotelNo)

Ασκήσεις – Επίλυση i, j i)Ποιά είναι η μέση, η μεγαλύτερη και η μικρότερη τιμή των δωματίων Ξενοδοχείων της Αθήνας SELECT AVERAGE(price), MIN(price), MAX(price) FROM Room WHERE Address LIKE ‘%Αθήνα%’; j)Εμφανίστε λίστα με μονόκλινα δωμάτια του Ξενοδοχείου με κωδικό 101 που είναι φθινότερα από όλα τα μονόκλινα δωμάτια του Ξενοδοχείου με κωδικό 103. SELECT roomNo FROM Room WHERE type=‘Μονόκλινο’ AND hotelNo=‘101” AND price > ALL (SELECT price FROM room WHERE hotelNo=‘103’); 47 Hotel (hotelNo, name, address, mgrStaffNo) Room (roomNo, hotelNo, type, price) Booking (hotelNo, guestNo, dateFrom, dateTo, roomNo) Guest (guestNo, name, address, sex) Staff (staffNo, fName, lName, sex, dob, salary, telNo, hotelNo)

Τέλος Ενότητας