Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 H SQL (Structured Query Language) χρησιμοποιείται για την ανάκτηση και διαχείριση δεδομένων στις σχεσιακές βάσεις Πλεονεκτήματα της SQL απλότητα σε σχέση με τις κλασσικές γλώσσες προγραμματισμού τυποποίηση της γλώσσας και συμβατότητα μεταξύ των διαφορετικών ΣΔΒΔ Η SQL αποτελείται από Γλώσσα Χειρισμού Δεδομένων (ΓΧΔ) Γλώσσα Ορισμού Δεδομένων (ΓΟΔ) Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Η ιστορία της τυποποίησης της SQL 1986, αναγνώριση από τον οργανισμό ANSI (American National Standards Institute). Δημιουργία του προτύπου SQL-86 ή SQL 1987, αναγνώριση από τον οργανισμό ISO (International Standards Organization) 1992, δημιουργία του προτύπου SQL-92 ή SQL2 1999, δημιουργία του προτύπου SQL3 2003, 2006 δημιουργία των προτύπων SQL2003 και SQL2006 αντίστοιχα 2008, δημιουργία του προτύπου SQL2008 με παραθυρικές λειτουργίες Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Το σχήμα της ΒΔ "Εκπαιδευτικό Ίδρυμα" Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Το σχήμα της ΒΔ «Εταιρία ΒΕΤΑ" Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Αναζήτηση/Ανάκτηση Δεδομένων στην SQL SELECT [λίστα πεδίων] FROM [λίστα πινάκων] WHERE [συνθήκη]; Όπου [λίστα πεδίων] είναι τα ονόματα των πεδίων που θέλουμε να ανακτηθούν, [λίστα πινάκων] είναι το όνομα του πίνακα (ή των πινάκων) από τον οποίο θα γίνει η ανάκτηση της πληροφορίας και [συνθήκη] είναι μία λογική έκφραση (κριτήριο) που μπορεί να χρησιμοποιεί τους τελεστές >, <, >=, <=, <>, =, AND, OR, NOT και προσδιορίζει τις εγγραφές που θα επιλεγούν Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Αναζήτηση/Ανάκτηση Δεδομένων στην SQL Να βρεθούν τα επώνυμα όλων των σπουδαστών που φοιτούν στο ΣΤ εξάμηνο SELECT Επώνυμο FROM Σπουδαστής WHERE ΕξΦοίτησης='ΣΤ'; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Αναζήτηση/Ανάκτηση Δεδομένων στην SQL Να βρεθούν τα ονόματα και επώνυμα των σπουδαστών που φοιτούν στο ΣΤ εξάμηνο και ανήκουν στο τμήμα Λογιστικής SELECT Όνομα, Επώνυμο FROM Σπουδαστής WHERE ΕξΦοίτησης='ΣΤ' AND ΟνομΤμήματος='Λογιστική'; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Αναζήτηση/Ανάκτηση Δεδομένων στην SQL Να βρεθούν όλα τα προσφερόμενα μαθήματα (τίτλοι) και οι αντίστοιχες διδακτικές μονάδες SELECT Τίτλος, ΔιδΜονάδες FROM Μάθημα; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Αναζήτηση/Ανάκτηση Δεδομένων στην SQL Να βρεθούν οι αριθμοί παραστατικών που έχουν εκδοθεί εντός του έτους 2007 SELECT ΑρΠαραστατικου FROM Παραστατικό WHERE ΗμερομΕκδοσης>='1/1/2007' AND ΗμερομΕκδοσης<='31/12/2007'; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Αναζήτηση/Ανάκτηση Δεδομένων στην SQL Να εκτυπωθεί το καρτεσιανό γινόμενο των πινάκων Σπουδαστής και Μάθημα SELECT * FROM Σπουδαστής, Μάθημα; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Διάταξη (Ταξινόμηση) Αποτελεσμάτων SELECT [λίστα πεδίων] FROM [λίστα πινάκων] WHERE [συνθήκη] ORDER BY πεδίο1 ASC ή DESC, πεδίο2 ASC ή DESC, … Η διάταξη μπορεί να είναι ως προς ένα ή περισσότερα πεδία του ίδιου ή διαφορετικών πινάκων Όταν δεν προσδιορίζεται ο τρόπος ταξινόμησης (ASC ή DESC), τότε εννοείται αύξουσα ταξινόμηση Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Διάταξη (Ταξινόμηση) Αποτελεσμάτων Να βρεθούν τα επώνυμα και τα ονόματα των σπουδαστών που φοιτούν στο τμήμα Λογιστικής. Οι εγγραφές να δοθούν κατά φθίνουσα σειρά των επωνύμων SELECT Επώνυμο, Όνομα FROM Σπουδαστής WHERE ΟνομΤμήματος='Λογιστική' ORDER BY Επώνυμο DESC; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Σύγκριση Συμβολοσειρών Ο ειδικός χαρακτήρας “%”, σημαίνει “οποιαδήποτε συμβολοσειρά, οποιουδήποτε μήκους” Ο ειδικός χαρακτήρας “-”, σημαίνει “ένας οποιοδήποτε χαρακτήρας” Για παράδειγμα η έκφραση LIKE ‘%κος’ σημαίνει “οποιαδήποτε σειρά χαρακτήρων που τελειώνει σε κος” η έκφραση LIKE ‘-ίκος’ σημαίνει “οποιαδήποτε σειρά τεσσάρων χαρακτήρων που αρχίζει από έναν οποιοδήποτε χαρακτήρα και τελειώνει σε ίκος” Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Σύγκριση Συμβολοσειρών Να βρεθούν τα επώνυμα και ονόματα των σπουδαστών που το επώνυμό τους αρχίζει από ‘Σ’. Οι εγγραφές να δοθούν κατά αύξουσα σειρά των ονομάτων SELECT Επώνυμο, Όνομα FROM Σπουδαστής WHERE Επώνυμο LIKE 'Σ%' ORDER BY Όνομα; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Σύγκριση Συμβολοσειρών Βρείτε τους σπουδαστές (Όνομα και Επίθετο) που δεν φοιτούν στο ΣΤ΄ εξάμηνο σπουδών SELECT Επώνυμο, Όνομα FROM Σπουδαστής WHERE ΕξΦοίτησης LIKE '-' ORDER BY Επώνυμο; Μια άλλη υλοποίηση του ερωτήματος είναι: WHERE ΕξΦοίτησης NOT LIKE 'ΣΤ' Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Η Τιμή NULL στην SQL Να βρεθούν οι τίτλοι των συγγραμμάτων, για τα οποία είναι καταγραμμένος ο αριθμός σελίδων SELECT Τίτλος FROM Σύγγραμμα WHERE ΑρΣελίδων IS NOT NULL; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Μετονομασία Πινάκων Να βρεθεί το καρτεσιανό γινόμενο των πινάκων Σπουδαστής και Τμήμα. Να εκτυπωθούν τα πεδία Όνομα, Επώνυμο, ΕξΦοίτησης του πίνακα Σπουδαστής και τα πεδία Ονομασία και ΈτοςΊδρυσης του πίνακα Τμήμα. Να εκτυπωθούν μόνο οι εγγραφές με τιμή τμήματος τη Λογιστική SELECT Σ.Όνομα, Σ.Επώνυμο, Σ.ΕξΦοίτησης, Τ.Ονομασία, Τ.ΈτοςΊδρυσης FROM Σπουδαστής Σ,Τμήμα Τ WHERE Τ.Ονομασία='Λογιστική'; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Μετονομασία Πεδίων SELECT ΚΕιδους AS Κωδικός Είδους , ΟνομασΕιδους AS Ονομασία Είδους FROM ΕιδΠαραστατ; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Υπολογιζόμενα Πεδία Ένα υπολογιζόμενο πεδίο συνδυάζεται συνήθως με την εντολή AS τo όνομά του και η τιμή του προσδιορίζονται στην εντολή SELECT οι τιμές του υπολογίζονται κατά την εκτέλεση του ερωτήματος και δεν αποθηκεύονται στη δευτερεύουσα μνήμη, μαζί με τον υπόλοιπο πίνακα Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Υπολογιζόμενα Πεδία Να βρεθεί το συνολικό κόστος 600 τεμαχίων του προϊόντος με κωδικό 500 και να εκτυπωθεί η ονομασία του και η συνολική τιμή SELECT ΟνομΠροιοντος, ΤιμΠρΤεμαχ*600 AS ΣυνΤιμη600Τεμαχ FROM Προιόν WHERE ΚΠροιοντος = 500; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Υπολογιζόμενα Πεδία Λόγω μιας αύξησης στο κόστος μεταφοράς, οι τιμές των προϊόντων έχουν αυξηθεί κατά 1 ευρώ. Να εκτυπωθούν οι ονομασίες και οι νέες τιμές των προϊόντων SELECT ΟνομΠροιοντος , ΤιμΠρΤεμαχ+1 AS ΝέαΤιμηΠροιοντ FROM Προιόν; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Υπολογιζόμενα Πεδία Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Εσωτερική Σύνδεση Η πράξη της εσωτερικής σύνδεσης υλοποιείται με την εντολή INNER JOIN (ή απλώς JOIN) Στο αποτέλεσμα της εσωτερικής σύνδεσης λαμβάνονται οι εγγραφές των συνδεόμενων πινάκων, που ικανοποιούν το κριτήριο της δοσμένης συνθήκης ως προς το πεδίο σύνδεσης Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Εσωτερική Σύνδεση Να βρεθεί η ονομασία και το έτος ίδρυσης των τμημάτων και το επώνυμο των καθηγητών που είναι οι αντίστοιχοι προϊστάμενοι τμημάτων SELECT Ονομασία, ΈτοςΊδρυσης, Επώνυμο FROM Τμήμα INNER JOIN Καθηγητής ON Τμήμα.Προιστάμενος= Καθηγητής.ΚωδικόςΚ; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Εσωτερική Σύνδεση Να βρεθούν οι τίτλοι των μαθημάτων και τα επώνυμα και ονόματα των καθηγητών που τα διδάσκουν SELECT Τίτλος AS Τίτλος Μαθημ, Επώνυμο AS Επώνυμο Καθηγ, Όνομα AS Όνομα Καθηγ FROM Μάθημα INNER JOIN Καθηγητής ON Διδάσκων =ΚωδικόςΚ; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Εσωτερική Σύνδεση Να βρεθούν τα επώνυμα και ονόματα των σπουδαστών του Γ εξαμήνου και οι τίτλοι των μαθημάτων που έχει παρακολουθήσει ο καθένας SELECT Επώνυμο, Όνομα,Τίτλος FROM (Μάθημα INNER JOIN Παρακολουθεί ON ΚωδικόςΜ=ΚωδΜαθήματος) INNER JOIN Σπουδαστής ON ΑΜΣπουδαστή=ΑΜ WHERE ΕξΦοίτησης='Γ'; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Η Εσωτερική Σύνδεση Πινάκων και το Καρτεσιανό Γινόμενο Η εσωτερική σύνδεση μπορεί να υλοποιηθεί εναλλακτικά με τη χρήση του καρτεσιανού γινομένου Στην περίπτωση αυτή η συνθήκη μεταξύ των πεδίων σύνδεσης τοποθετείται στην εντολή WHERE Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Η Εσωτερική Σύνδεση Πινάκων και το Καρτεσιανό Γινόμενο Να εκτυπωθούν τα ονόματα και επώνυμα των υπαλλήλων της εταιρίας και οι αντίστοιχες εξειδικεύσεις τους SELECT Όνομα, Επώνυμο, Εξειδίκευση FROM Υπάλληλος ,ΥπαλΕξειδικ WHERE Υπάλληλος.ΑΦΜ= ΥπαλΕξειδικ.ΑΦΜ; Το ίδιο το ερώτημα με INNER JOIN: FROM Υπάλληλος INNER JOIN ΥπαλΕξειδικ ON Υπάλληλος.ΑΦΜ=ΥπαλΕξειδικ.ΑΦΜ; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Η Εσωτερική Σύνδεση Πινάκων και το Καρτεσιανό Γινόμενο Να εκτυπωθούν τα είδη παραστατικών και οι αντίστοιχες επωνυμίες των πελατών, στους οποίους αυτά απευθύνονται. Μας ενδιαφέρουν τα παραστατικά που εκδόθηκαν κατά τα έτη 2007-2008 SELECT Επωνυμία, ΟνομασΕιδους FROM Παραστατικό, Πελάτης, ΕιδΠαραστατ WHERE Παραστατικό.ΚΠελάτη=Πελάτης.ΚΠελάτη AND Παραστατικό.ΚΕιδουςΠαρ= ΕιδΠαραστατ.ΚΕιδους AND ΗμερομΕκδοσης>= '1/1/2007' AND ΗμερομΕκδοσης<='31/12/2008'; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Η Αριστερή Εξωτερική Σύνδεση Η αριστερή εξωτερική σύνδεση υλοποιείται με την εντολή LEFT OUTER JOIN Περιλαμβάνει όλες τις εγγραφές του πρώτου πίνακα και τις εγγραφές του δεύτερου πίνακα (και μόνο αυτές) που ικανοποιούν το κριτήριο σύνδεσης Τυχόν κενά που προκύπτουν συμπληρώνονται αυτόματα με την τιμή NULL Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Η Αριστερή Εξωτερική Σύνδεση Να βρεθούν τα επώνυμα όλων των καθηγητών και ο κωδικός συγγράμματος που έχει γράψει ο καθένας, για όσους από τους καθηγητές έχουν γράψει συγγράμματα SELECT Επώνυμο, ΚωδΣυγγράμματος FROM Καθηγητής LEFT OUTER JOIN Συγγράφει ON ΚωδικόςΚ= ΚωδΚαθηγητή; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Η Αριστερή Εξωτερική Σύνδεση Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Η Δεξιά Εξωτερική Σύνδεση Η δεξιά εξωτερική σύνδεση υλοποιείται με την εντολή RIGHT OUTER JOIN Περιλαμβάνει όλες τις εγγραφές του δεύτερου πίνακα και από τις εγγραφές του πρώτου πίνακα μόνο αυτές που ικανοποιούν το κριτήριο σύνδεσης Τυχόν κενά που προκύπτουν συμπληρώνονται αυτόματα με την τιμή NULL Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Η Πλήρης Εξωτερική Σύνδεση Η πλήρης εξωτερική σύνδεση υλοποιείται με την εντολή FULL OUTER JOIN και συμπεριλαμβάνει όλες τις εγγραφές και των δυο πινάκων Οι εγγραφές του ενός πίνακα (του πρώτου ή του δεύτερου), που δεν συνδέονται με βάση το κριτήριο σύνδεσης με κάποια εγγραφή του άλλου πίνακα (του δεύτερου ή του πρώτου αντίστοιχα) συμπληρώνονται αυτόματα με την τιμή NULL Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Η Πλήρης Εξωτερική Σύνδεση Να εκτυπωθούν σε ένα πίνακα όλοι οι καθηγητές (όνομα, επώνυμο) και όλα τα συγγράμματα (τίτλος) αντιστοιχίζοντας τα συγγράμματα, που γράφει ένας καθηγητής με το ονοματεπώνυμο του καθηγητή-συγγραφέα SELECT Επώνυμο, Όνομα, Τίτλος FROM (Καθηγητής FULL OUTER JOIN Συγγράφει ON ΚωδικόςΚ=ΚωδΚαθηγητή) FULL OUTER JOIN Σύγγραμμα ON ΚωδΣυγγράμματος=ΚωδικόςΣ; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Η Πλήρης Εξωτερική Σύνδεση Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εντολές Συνόλων και Ερωτήματα Πολλών Επιπέδων Οι εντολές συνόλων αντιμετωπίζουν τις υπάρχουσες τιμές σε ένα πίνακα ως ένα σύνολο και εφαρμόζουν τις γνωστές πράξεις από τη θεωρία των συνόλων (π.χ. ένωση, τομή, διαφορά κ.λ.π.) Γενικότερα η SQL αντιμετωπίζει τους πίνακες ως πολυσύνολα, αφού σε ένα πίνακα επιτρέπεται να υπάρχουν διπλότυπες εγγραφές Με τη χρήση του κλειδιού και των σχετικών περιορισμών, που το χαρακτηρίζουν, ένας πίνακας μετατρέπεται τελικά σε σύνολο Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εντολές Συνόλων και Ερωτήματα Πολλών Επιπέδων Τα ένθετα ή φωλιασμένα ερωτήματα μπορεί να είναι πλήρη ερωτήματα SELECT…FROM… WHERE μέσα σε άλλα παρόμοια ερωτήματα Τα ένθετα ονομάζονται και εσωτερικά ερωτήματα σε αντίθεση με τα εξωτερικά ερωτήματα Το εσωτερικό ερώτημα εκτελείται πρώτο, επιστρέφει ένα σύνολο από δεδομένα, τα οποία στη συνέχεια χρησιμοποιούνται από το εξωτερικό ερώτημα Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Εντολή DISTINCT H εντολή DISTINCT εξασφαλίζει πως μετά την εκτέλεση ενός ερωτήματος, κάθε τιμή θα εμφανιστεί μόνο μια φορά στον πίνακα αποτελέσματος η εντολή DISTINCT μετατρέπει ένα πολυσύνολο σε σύνολο Συντάσσεται στην εντολή SELECT και προσδιορίζει κάθε φορά το πεδίο εκτύπωσης Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Εντολή DISTINCT Να βρεθούν οι υπάρχουσες εξειδικεύσεις των υπαλλήλων της εταιρίας. Στην εκτύπωση, δεν θα πρέπει να υπάρχουν διπλότυπα SELECT DISTINCT Εξειδίκευση FROM ΥπαλΕξειδικ; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Οι Εντολές IN και ANY Η εντολή IN διερευνά αν υπάρχουν μια ή περισσότερες τιμές μέσα σε ένα σύνολο και επιστρέφει TRUE, αν η συγκεκριμένη τιμή ή τιμές βρεθούν μέσα στο σύνολο Η εντολή =ANY επιστρέφει TRUE, αν μέσα στο σύνολο βρεθεί μια συγκεκριμένη τιμή και επομένως είναι ισοδύναμη με την IN H ANY μπορεί να χρησιμοποιηθεί και με τους τελεστές σύγκρισης >, <, >=, <=, <> Για παράδειγμα η χρήση της εντολής >=ANY επιστρέφει TRUE, αν μέσα στο σύνολο τιμών βρεθεί μια τουλάχιστον τιμή που είναι μικρότερη της δοσμένης τιμής Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Οι Εντολές IN και ANY Να βρεθούν οι κωδικοί των καθηγητών, που έχουν συμμετάσχει στη συγγραφή των ίδιων βιβλίων με τον καθηγητή με κωδικό 99 SELECT DISTINCT ΚωδΚαθηγητή FROM Συγγράφει WHERE ΚωδΣυγγράμματος ΙΝ (SELECT ΚωδΣυγγράμματος FROM Συγγράφει WHERE ΚωδΚαθηγητή=99); Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Οι Εντολές IN και ANY Να βρεθούν οι ονομασίες των προϊόντων που έχουν τιμή ανά τεμάχιο μεγαλύτερη της τιμής του προϊόντος ‘ΤΡΦ1 – τροφή για σκύλους’ SELECT ΟνομΠροιοντος FROM Προιόν WHERE ΤιμΠρΤεμαχ >ANY (SELECT ΤιμΠρΤεμαχ WHERE ΟνομΠροιοντος= 'ΤΡΦ1 - τροφή για σκύλους'); Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Οι Εντολές ALL και EXISTS H εντολή ALL συντάσσεται με τον ίδιο τρόπο με την εντολή ANY. Επιστρέφει TRUE, αν η συνθήκη σύγκρισης ισχύει για όλα τα στοιχεία του συνόλου τιμών που δημιουργούνται από το εσωτερικό ερώτημα Η εντολή EXISTS(εντολή) επιστρέφει TRUE, αν η εκτέλεση της εντολής μέσα στην παρένθεση επιστρέψει τουλάχιστον μια τιμή Κατά αντίστοιχο τρόπο χρησιμοποιείται και η εντολή NOT EXISTS(εντολή) Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Οι Εντολές ALL και EXISTS Να βρεθεί η ονομασία του προϊόντος με τη μεγαλύτερη τιμή ανά τεμάχιο SELECT ΟνομΠροιοντος FROM Προιόν WHERE ΤιμΠρΤεμαχ >=ALL (SELECT ΤιμΠρΤεμαχ FROM Προιόν); Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Οι Εντολές ALL και EXISTS Να βρεθούν Όνομα και Επώνυμο των καθηγητών, που συγγράφουν ένα τουλάχιστον σύγγραμμα SELECT Όνομα, Επώνυμο FROM Καθηγητής WHERE EXISTS (SELECT * FROM Συγγράφει WHERE ΚωδικόςΚ=ΚωδΚαθηγητή); Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Η Ένωση, η Τομή και η Διαφορά Συνόλων στην SQL Βρείτε τη λίστα, που περιέχει τα επώνυμα των καθηγητών και των σπουδαστών SELECT Επώνυμο FROM Σπουδαστής UNION FROM Καθηγητής; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Η Ένωση, η Τομή και η Διαφορά Συνόλων στην SQL Βρείτε τα κοινά επώνυμα των σπουδαστών με τους κηδεμόνες τους SELECT Επώνυμο FROM Σπουδαστής INTERSECT FROM Κηδεμόνας; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Η Ένωση, η Τομή και η Διαφορά Συνόλων στην SQL Να βρεθούν τα ονόματα και τα επώνυμα των υπαλλήλων που δεν έχουν κάποια εξειδίκευση SELECT Όνομα, Επώνυμο FROM Υπάλληλος EXCEPT FROM Υπάλληλος, ΥπαλΕξειδικ WHERE Υπάλληλος.ΑΦΜ=ΥπαλΕξειδικ.ΑΦΜ; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Συναθροιστικές Πράξεις Οι συναθροιστικές πράξεις εκφράζουν τις μαθηματικές συναθροιστικές συναρτήσεις, που εφαρμόζονται σε συλλογές τιμών της βάσης δεδομένων Η SQL χρησιμοποιεί τις παρακάτω συναρτήσεις: MIN: εύρεση της μικρότερης τιμής MAX: εύρεση της μεγαλύτερης τιμής SUM: εύρεση της αθροίσματος AVG: εύρεση της μέσης τιμής COUNT: εύρεση του πλήθους των τιμών Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Συναθροιστικές Πράξεις Να βρείτε το πλήθος των σπουδαστών που είναι καταχωρημένοι στη βάση δεδομένων «Εκπαιδευτικό Ίδρυμα» SELECT COUNT(ΑΜ) AS ΠλήθοςΣπουδαστ FROM Σπουδαστής; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Συναθροιστικές Πράξεις Να βρεθεί το πλήθος των πελατών, που έχουν εκδώσει ένα τουλάχιστον παραστατικό SELECT COUNT(DISTINCT ΚΠελάτη) AS ΑρΠελατμεΠαραστ FROM Παραστατικό; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Εντολή Ομαδοποίησης Πολλές φορές χρειάζεται να εφαρμοστεί μια συναθροιστική συνάρτηση σε ένα υποσύνολο (ομάδα) των εγγραφών ενός πίνακα, που σχηματίζεται με βάση τις τιμές ενός γνωρίσματος (πεδίου) του πίνακα Στην περίπτωση αυτή πρέπει πρώτα να γίνει η ομαδοποίηση των εγγραφών και μετά να εφαρμοστεί μια συναθροιστική συνάρτηση Η εντολή για την ομαδοποίηση είναι η GROUP BY, η οποία συντάσσεται μετά την πρόταση WHERE Η εντολή GROUP BY προσδιορίζει τα γνωρίσματα ως προς τα οποία θα γίνει η ομαδοποίηση και τα οποία ονομάζονται γνωρίσματα ή πεδία ομαδοποίησης Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Εντολή Ομαδοποίησης Να βρεθεί το πλήθος των σπουδαστών ανά Τμήμα φοίτησης SELECT ΟνομΤμήματος, COUNT(*) AS ΑρΣπουδΤμήμα FROM Σπουδαστής GROUP BY ΟνομΤμήματος; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Εντολή Ομαδοποίησης Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Εντολή Ομαδοποίησης Να βρεθεί πόσα παραστατικά έχει εκδώσει κάθε πελάτης της εταιρίας. Να εκτυπωθεί η επωνυμία του πελάτη και ο αριθμός παραστατικών SELECT Επωνυμία, COUNT(*) AS ΑρΠαραστΠελατ FROM Πελάτης, Παραστατικό WHERE Πελάτης.ΚΠελάτη= Παραστατικό.ΚΠελάτη GROUP BY Επωνυμία, ΚΠελάτη; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Ομαδοποίηση υπό Συνθήκη – Εντολή HAVING Μερικές φορές θέλουμε να εφαρμόσουμε τις συναθροιστικές συναρτήσεις, όχι για όλες τις ομάδες των εγγραφών αλλά μόνο για τις ομάδες που ικανοποιούν κάποια συγκεκριμένη συνθήκη Σε τέτοιες περιπτώσεις πρέπει να χρησιμοποιήσουμε την εντολή HAVING η οποία εξετάζει συγκεκριμένα κριτήρια πάνω στις ομάδες εγγραφών, που έχουν σχηματισθεί με την εντολή GROUP BY H εντολή HAVING συντάσσεται μετά την εντολή GROUP BY και υλοποιεί την επιλογή των τελικών ομάδων Η συναθροιστικές συναρτήσεις μπορούν να χρησιμοποιηθούν και στην εντολή HAVING Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Ομαδοποίηση υπό Συνθήκη – Εντολή HAVING Να βρεθεί ποια προϊόντα έχουν πουληθεί σε πάνω από ένα πελάτη. Να εκτυπωθεί η ονομασία του προϊόντος και ο αριθμός των (διαφορετικών) πελατών που το αγόρασε SELECT ΟνομΠροιοντος, COUNT( DISTINCT ΚΠελάτη) AS ΑριθμΑγοραστών FROM Παραστατικό, Περιλαμβάνει, Προιόν WHERE Παραστατικό.ΑρΠαραστατικου= Περιλαμβάνει.ΑρΠαραστατικου AND Περιλαμβάνει.ΚΠροιοντος= Προιόν.ΚΠροιοντος GROUP BY ΟνομΠροιοντος , Προιόν. ΚΠροιοντος HAVING COUNT(DISTINCT ΚΠελάτη)>1; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Οι Όψεις στην SQL Μια όψη (view) είναι ένας πίνακας που παράγεται από άλλους πίνακες ή από άλλες όψεις Σε αντίθεση με τους πραγματικούς πίνακες, μια όψη δεν έχει φυσική υπόσταση, οι εγγραφές της δεν αποθηκεύονται στη βάση δεδομένων και για το λόγο αυτό θεωρείται ως ένας εικονικός πίνακας Οι πράξεις ενημέρωσης που μπορούν να εφαρμοστούν σε μια όψη είναι περιορισμένες, όμως δεν υπάρχει κανένας περιορισμός για τα ερωτήματα που μπορούν να εφαρμοστούν Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Ορισμός μιας Όψης Να δημιουργηθεί μια όψη που θα περιέχει τα AM, τα ονόματα και τα επώνυμα των σπουδαστών, τα μαθήματα (τίτλος) που παρακολουθεί ο καθένας και τις αντίστοιχες διδακτικές μονάδες του κάθε μαθήματος CREATE VIEW ΣπουδΜάθημα (AM, Όνομα, Επώνυμο, Τίτλος, ΔιδΜονάδες) AS SELECT AM, Όνομα, Επώνυμο, Τίτλος, ΔιδΜονάδες FROM Σπουδαστής, Παρακολουθεί, Μάθημα WHERE Α Μ=ΑΜΣπουδαστή AND ΚωδΜαθήματος=ΚωδικόςΜ; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Ορισμός μιας Όψης Για να δούμε το αποτέλεσμα του παραπάνω ερωτήματος δίνουμε: SELECT * FROM ΣπουδΜάθημα; Στη συνέχεια μπορούμε να χρησιμοποιούμε την όψη κατευθείαν με το όνομά της. Για παράδειγμα το ερώτημα: SELECT Όνομα, Επώνυμο, SUM (ΔιδΜονάδες) FROM ΣπουδΜάθημα GROUP BY Όνομα, Επώνυμο, ΑΜ; Αν μια όψη δεν είναι πλέον απαραίτητη μπορεί να διαγραφεί με την εντολή DROP VIEW: DROP VIEW ΣπουδΜάθημα; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Ορισμός μιας Όψης Να βρεθεί η συνολική είσπραξη από την πώληση του προϊόντος ΝΙΤΡΟ – βερνίκι καθαρισμού CREATE VIEW ΜερΕισπρ AS SELECT ΟνομΠροιοντος, ΑρΤεμαχιων, ΤιμΠρΤεμαχ, ΑρΤεμαχιων*ΤιμΠρΤεμαχ AS ΜερΕισπ FROM Περιλαμβάνει, Προιόν WHERE Περιλαμβάνει.ΚΠροιοντος= Προιόν.ΚΠροιοντος AND ΟνομΠροιοντος= 'ΝΙΤΡΟ - βερνίκι καθαρισμού'; SELECT SUM(ΜερΕισπ) FROM ΜερΕισπρ; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Υλοποίηση και Ενημέρωση των Όψεων Υπάρχουν δυο μέθοδοι υλοποίησης των όψεων τροποποίηση ερωτημάτων (query modification) υλοποίηση της όψης (view materialization) Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Δημιουργία και Διαγραφή ενός Πίνακα Η δημιουργία ενός νέου πίνακα γίνεται με την εντολή CREATE TABLE CREATE TABLE Πελάτης (ΚΠελάτη NUMBER NOT NULL, Επωνυμία VARCHAR2(50) NOT NULL, ΝομικΜορφή VARCHAR2(10), ΔιευθΕδρας VARCHAR2(50), ΑρμοδΔΟΥ VARCHAR2(50) NOT NULL, Τηλέφωνο NUMBER, ΑΦΜΥπαλ VARCHAR2(18), PRIMARY KEY (ΚΠελάτη)); Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Δημιουργία και Διαγραφή ενός Πίνακα Οι κυριότεροι τύποι δεδομένων της SQL Οι αριθμητικοί τύποι δεδομένων Οι τύποι δεδομένων συμβολοσειρών χαρακτήρων Οι τύποι δεδομένων ημερομηνίας (date) και ώρας (time). Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Δημιουργία και Διαγραφή ενός Πίνακα Οι αριθμητικοί τύποι δεδομένων που περιλαμβάνουν τους ακεραίους (integer ή int, small int) και τους πραγματικούς (real, float, double precision) H ακριβής μορφή παρουσίασης των αριθμητικών τύπων προσδιορίζεται με τη δήλωση numeric (i, j) όπου i είναι το συνολικό πλήθος ψηφίων του αριθμού μαζί με την υποδιαστολή και j το πλήθος των δεκαδικών ψηφίων μετά την υποδιαστολή Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Δημιουργία και Διαγραφή ενός Πίνακα Οι τύποι δεδομένων συμβολοσειρών χαρακτήρων που περιλαμβάνουν τις συμβολοσειρές σταθερού μεγέθους (char(n) ή character(n) – όπου n είναι το πλήθος των χαρακτήρων) και τις συμβολοσειρές μεταβλητού μεγέθους (varchar(n) ή varchar2(n) – όπου n είναι το μέγιστο πλήθος χαρακτήρων Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Δημιουργία και Διαγραφή ενός Πίνακα Ο ορισμός ενός πίνακα αλλά και τα περιεχόμενά του μπορούν να διαγραφούν με την εντολή DROP TABLE DROP TABLE Πελάτης Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Μεταβολή της Δομής ενός Πίνακα Η μεταβολή της δομής ενός πίνακα γίνεται με την εντολή ALTER TABLE Για να προστεθεί μία καινούρια στήλη (πεδίο) στον πίνακα, ακολουθεί η εντολή ADD ALTER TABLE Σπουδαστής ADD Τόπος_Γέννησης VARCHAR (15); Για να διαγραφεί ένα πεδίο από ένα πίνακα, τότε μετά την ALTER TABLE ακολουθεί η εντολή DROP ALTER TABLE Σπουδαστής DROP ΕξΦοιτησης; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Η Εντολή INSERT Η εντολή INSERT χρησιμοποιείται για την εισαγωγή νέων εγγραφών σε ένα πίνακα INSERT INTO Σπουδαστής VALUES (‘1015’, ‘Γιώργος’, ‘Παππάς’, ‘Νίκος’, ‘ΣΤ’, ‘Λογιστική’); ή INSERT INTO Υπάλληλος (Επώνυμο, Όνομα, ΑΦΜ) VALUES (‘Ξενίδης’, ‘Γιώργος’, ‘02321000’); Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Η Εντολή INSERT Να δημιουργηθεί ο πίνακας ΣπουδΜαθ ο οποίος θα έχει ως πεδία τον ΑΜ (αριθμός μητρώου σπουδαστή), το Όνομα, και το Επώνυμο σπουδαστή και τον τίτλο των μαθημάτων που παρακολουθεί ο σπουδαστής. Στη συνέχεια να γίνει εισαγωγή των κατάλληλων τιμών από τους πίνακες Σπουδαστής, Παρακολουθεί και Μάθημα Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Η Εντολή INSERT CREATE TABLE ΣπουδΜαθ (ΑΜ NUMBER NOT NULL, Όνομα VARCHAR2(50) NOT NULL, Επώνυμο VARCHAR2(50) NOT NULL, Τίτλος VARCHAR2(50) NOT NULL, PRIMARY KEY (ΑΜ, Τίτλος)); INSERT INTO ΣπουδΜαθ (ΑΜ, Όνομα, Επώνυμο, Τίτλος) SELECT Σπουδαστής.ΑΜ, Σπουδαστής.Όνομα, Σπουδαστής.Επώνυμο, Μάθημα.Τίτλος FROM Σπουδαστής, Παρακολουθεί, Μάθημα WHERE Σπουδαστής.ΑΜ= Παρακολουθεί.ΑΜΣπουδαστή AND Παρακολουθεί.ΚωδΜαθήματος= Μάθημα.ΚωδικόςΜ; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Η Εντολή DELETE Η εντολή DELETE διαγράφει από ένα πίνακα μία ή περισσότερες σειρές (εγγραφές) Συντάσσεται με την εντολή WHERE προκειμένου να επιλεγούν οι κατάλληλες εγγραφές για διαγραφή DELETE FROM Σπουδαστής WHERE Επώνυμο= ‘Σιδέρης’; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 Η Εντολή DELETE Από τον πίνακα ΣπουδΜαθ να διαγραφούν όλες οι εγγραφές των σπουδαστών του Α’ εξαμήνου DELETE FROM ΣπουδΜαθ WHERE ΑΜ ΙΝ (SELECT ΑΜ FROM Σπουδαστής WHERE ΕξΦοίτησης='Α'); Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 H Εντολή UPDATE Η εντολή UPDATE χρησιμοποιείται για την τροποποίηση των τιμών κάποιων πεδίων από επιλεγμένες εγγραφές ενός πίνακα Μια εντολή UPDATE: θα πρέπει να προσδιορίζει τον πίνακα στον οποίο θα γίνει η τροποποίηση με την πρόταση SET θα πρέπει να προσδιορίζει τα πεδία που θα τροποποιηθούν και τις νέες τιμές τους με την πρόταση WHERE μπορεί να προσδιορίζει τις εγγραφές που θα εφαρμοστεί η ανωτέρω τροποποίηση Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 H Εντολή UPDATE UPDATE Σπουδαστής SET ΕξΦοίτησης= ‘Β’ WHERE ΕξΦοίτησης= ‘Α’; Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2
Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2 H Εντολή UPDATE Στον πίνακα Μάθημα να αυξηθούν κατά 5 οι διδακτικές μονάδες των μαθημάτων, που διδάσκει ο καθηγητής Νίκος Αντύπας UPDATE Μάθημα SET ΔιδΜονάδες=ΔιδΜονάδες+5 WHERE ΚωδικόςΜ ΙΝ (SELECT ΚωδικόςΜ FROM Μάθημα INNER JOIN Καθηγητής ON Διδάσκων=ΚωδικόςΚ WHERE Όνομα='Νίκος' AND Επώνυμο='Αντύπας'); Κεφάλαιο 8 Εισαγωγή στις βάσεις δεδομένων ISBN 978 960 931217 2