Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου]

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου]"

Transcript

1 ΤΕΙ Ηπείρου Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου] Επιμέλεια: Καρβούνης Ευάγγελος, PhD, Επιστημονικός Συνεργάτης του Τμήματος Αντωνιάδης Νικόλαος, Καθηγητής Οκτώβριος 2013

2 Οι σημειώσεις αυτές στηρίζονται κατά το μεγαλύτερο μέρος τους στο αντίστοιχο υλικό που δημιουργήθηκε κατά το προηγούμενο εξάμηνο από τον Επιστημονικό Συνεργάτη του Τμήματος κ. Ευάγγελο Καρβούνη.

3 Περιεχόμενα 1 Σχεδιασμός Βάσης Δημιουργία πινάκων Επεξεργασία πινάκων Εισαγωγή πεδίου Τροποποίηση πεδίου Διαγραφή πεδίου Διαγραφή πινάκων Χειρισμός Δεδομένων Εισαγωγή δεδομένων Επισκόπηση δεδομένων Τροποποίηση δεδομένων Τροποποίηση πλειάδων Διαγραφή πλειάδων Αποθήκευση αλλαγών Σύνδεση πινάκων Ξένα κλειδιά Η εντολή SELECT Ερωτήσεις SELECT με έναν πίνακα Σύνθετες συνθήκες Πράξεις Ο τελεστής LIKE Η μεταβλητή SYSDATE Αλλαγή ονομάτων στηλών του αποτελέσματος Ταξινόμηση αποτελέσματος ORDER BY Ο τελεστής ΙΝ Ο τελεστής BETWEEN Εμφωλευμένες ερωτήσεις Πράξεις μεταξύ SELECT ερωτήσεων Ένωση SELECT ερωτήσεων Τομή SELECT ερωτήσεων Εξαίρεση SELECT ερωτήσεων Ερωτήσεις SELECT με πολλούς πίνακες Συναθροιστικές συναρτήσεις Ομαδοποίηση

4 [Type text] 1 Σχεδιασμός Βάσης Θέλουμε να κατασκευάσουμε μία βάση δεδομένων για κινηματογραφικές ταινίες και ηθοποιούς του Hollywood. Για λόγους απλότητας, ας θεωρήσουμε αρχικά ότι το μόνο που θέλουμε να αποθηκεύσουμε είναι διάφορα στοιχεία μόνο για τους ηθοποιούς και τις ταινίες. Είναι πολύ σημαντικό, πριν ξεκινήσουμε να κατασκευάζουμε τη βάση μας, να έχουμε ξεκάθαρα στο μυαλό μας τι ακριβώς θέλουμε να έχουμε αποθηκευμένο σε αυτήν. Για παράδειγμα, στην περίπτωσή μας θα χρειαστούμε τα παρακάτω: Για κάθε ηθοποιό θέλουμε τον αριθμό ταυτότητάς του, που είναι μοναδικός για κάθε ηθοποιό, το ονοματεπώνυμό του, την ημερομηνία και τον τόπο γέννησής του καθώς και τον αριθμό των βραβείων oscar που ενδεχομένως έχει κερδίσει στην καριέρα του. Για κάθε ταινία θέλουμε τον τίτλο της, το έτος παραγωγής της, το όνομα του σκηνοθέτη της, το συνολικό της κόστος (budget) και τον αριθμό των εισιτηρίων που πέτυχε. Θεωρούμε ότι δεν υπάρχουν πολλές ταινίες με τον ίδιο τίτλο. Από την παραπάνω περιγραφή γίνεται αντιληπτό ότι στη βάση μας θα πρέπει να έχουμε δύο πίνακες: έναν για τους ηθοποιούς και έναν για τις ταινίες. Πρέπει να διαλέξουμε ένα όνομα για κάθε πίνακα. Έστω λοιπόν ότι τον πίνακα των ηθοποιών θα τον ονομάσουμε ACTORS και τον πίνακα των ταινιών MOVIES (ως συνήθως, ελληνικοί χαρακτήρες δεν είναι αποδεκτοί σε ονόματα πινάκων, πεδίων κτλ). Προσέξτε ότι οι δύο αυτοί πίνακες είναι η υλοποίηση των αντίστοιχων οντοτήτων. Για το λόγο αυτό, ο κάθε πίνακας περιέχει μόνο δεδομένα που αφορούν την αντίστοιχη οντότητα και όχι δεδομένα που αφορούν τη σύνδεση μεταξύ των οντοτήτων (π.χ. δεν αναφέρονται οι ταινίες στις οποίες παίζει ο κάθε ηθοποιός). Στη συνέχεια, πρέπει να διαλέξουμε ένα όνομα για κάθε πεδίο (δηλαδή για την κάθε στήλη του κάθε πίνακα). Στα πλαίσια του εργαστηρίου θα χρησιμοποιήσουμε τα εξής ονόματα: ID NAME BIRTHDATE BIRTHPLACE OSCARS ACTORS αριθμός ταυτότητας ονοματεπώνυμο ημερομηνία γέννησης τόπος γέννησης αριθμός βραβείων oscar TITLE YEAR DIRECTOR BUDGET TICKETS MOVIES τίτλος ταινίας έτος παραγωγής σκηνοθέτης κόστος αριθμός εισιτηρίων 1.1 Δημιουργία πινάκων Για να δημιουργήσουμε έναν πίνακα χρησιμοποιούμε την εντολή CREATE TABLE. Η σύνταξή της είναι η εξής: CREATE TABLE <όνομα πίνακα> ( <όνομα 1ου πεδίου> <τύπος 1ου πεδίου>, <όνομα 2ου πεδίου> <τύπος 2ου πεδίου>,, <όνομα ν ου πεδίου> <τύπος ν ου πεδίου>, 2 Σχεδιασμός Βάσης

5 ); primary key (<όνομα πεδίου>) Γενικά για τις εντολές SQL, δεν χρειάζεται να γράφονται σε διαφορετικές γραμμές, όπως στο παράδειγμα που φαίνεται παραπάνω. Μπορούν να γράφονται όπως μας βολεύει. Ωστόσο, η γραφή αυτή δίνει μια ομοιομορφία και επιτρέπει την καλύτερη επισκόπηση των εντολών. Θα παρατηρήσετε ότι ανεξάρτητα από το πώς γράφετε την εντολή στο πλαίσιο «Εκτέλεση εντολής / εντολών SQL στη βάση δεδομένων χχχ», μετά την εκτέλεση της εμφανίζεται η ίδια εντολή (διαμορφωμένη αυτόματα από το σύστημα) με το παραπάνω format στο πλαίσιο «Εντολή SQL». Ως ονόματα πεδίων χρησιμοποιούμε τα ονόματα που έχουμε ήδη διαλέξει. Οι τύποι δεδομένων που μπορούμε να χρησιμοποιήσουμε είναι: integer ή int real char varchar(<αριθμός>) date ακέραιος αριθμός πραγματικός αριθμός (όχι απαραίτητα ακέραιος) χαρακτήρας (ένας μόνο) Συμβολοσειρά με μέγιστο μήκος όσο και ο αριθμός που δίνουμε, π.χ. varchar(10) είναι μία συμβολοσειρά με μήκος το πολύ 10 χαρακτήρων ημερομηνία Υπάρχουν και αρκετοί άλλοι τύποι δεδομένων (ενδεικτικά οι SMALLINT, DOUBLE, BINARY, LONGTEXT). Εδώ δείχνουμε μόνο τους τύπους που μας είναι απαραίτητοι, οι οποίοι καλύπτουν και το πολύ μεγάλο μέρος των αναγκών στις συνηθισμένες εφαρμογές. Εκτός από τον ορισμό του τύπου ενός πεδίου, μπορεί να υπάρχει και ο προσδιορισμός not null, για τις περιπτώσεις πεδίων για τα οποία δεν επιτρέπεται να μην υπάρχουν καταχωρημένες τιμές. Αν για παράδειγμα για κάθε ηθοποιό θέλουμε οπωσδήποτε να γνωρίζουμε το όνομά του, θα προσθέσουμε τον προσδιορισμό not null στον ορισμό του πεδίου NAME (δίπλα από τον τύπο του). Primary key είναι το πρωτεύον κλειδί του πίνακα: Πρωτεύον κλειδί είναι ένα πεδίο (ή ένας συνδυασμός πεδίων) τέτοιο ώστε κάθε δυνατή πλειάδα (γραμμή) που μπορεί να υπάρξει στον πίνακα να έχει διαφορετική τιμή από τις υπόλοιπες στο πεδίο αυτό. Επίσης, το πεδίο αυτό δεν μπορεί να μένει κενό (null). Για παράδειγμα, ένα τέτοιο πεδίο για τον πίνακα ACTORS είναι το ID, καθώς δύο διαφορετικοί ηθοποιοί δεν μπορεί να έχουν τον ίδιο αριθμό ταυτότητας. Αντίστοιχα, το BIRTHDATE δεν μπορεί να είναι πρωτεύον κλειδί γιατί δύο ηθοποιοί μπορεί να έχουν γεννηθεί την ίδια ημέρα και το ίδιο έτος. Κάθε πίνακας πρέπει οπωσδήποτε να έχει πρωτεύον κλειδί. Επίσης, κάθε πίνακας έχει μόνο ένα πρωτεύον κλειδί (δεν μπορούν να υπάρχουν δύο γραμμές primary key (<όνομα πεδίου>) σε μία εντολή CREATE TABLE). Σχεδιασμός Βάσης 3

6 [Type text] Το πρωτεύον κλειδί δεν χρειάζεται να ορίζεται ως NOT NULL. Αυτό γίνεται αυτόματα, με τον ορισμό του πεδίου ως πρωτεύοντος κλειδιού. Επομένως, για να δημιουργήσουμε τον πίνακα των ηθοποιών, χρησιμοποιούμε την παρακάτω εντολή: CREATE TABLE ACTORS ( ); ID varchar(10), NAME varchar(20) not null, BIRTHDATE date, BIRTHPLACE varchar(20), OSCARS int, primary key (ID) Για να δούμε το σχήμα (δηλαδή την περιγραφή) ενός πίνακα, μπορούμε να χρησιμοποιήσουμε την εντολή DESCRIBE. Η σύνταξή της είναι η εξής: DESCRIBE <όνομα πίνακα>; Για παράδειγμα: DESCRIBE ACTORS; Γράψτε την εντολή για τη δημιουργία του πίνακα MOVIES: 1.2 Επεξεργασία πινάκων Αφού έχει δημιουργηθεί ένας πίνακας στην βάση μας, μπορούμε να κάνουμε ορισμένες αλλαγές σε αυτόν όπως να προσθέσουμε ή να διαγράψουμε ένα πεδίο ή να τροποποιήσουμε τον τύπο ενός πεδίου. Για αυτόν τον σκοπό χρησιμοποιούμε την εντολή ALTER TABLE Εισαγωγή πεδίου Για να προσθέσουμε ένα πεδίο (μία στήλη) σε έναν πίνακα η σύνταξη της εντολής είναι: ALTER TABLE <όνομα πίνακα> ADD <όνομα νέου πεδίου> <τύπος νέου πεδίου>; Επομένως, για να προσθέσουμε στον πίνακα MOVIES μία επιπλέον στήλη στην οποία θα αποθηκεύουμε τη διάρκεια κάθε ταινίας, η εντολή είναι: 4 Σχεδιασμός Βάσης

7 ALTER TABLE MOVIES ADD DURATION varchar(6); Τροποποίηση πεδίου Για να αλλάξουμε τον τύπο ενός πεδίου η σύνταξη της εντολής είναι: ALTER TABLE <όνομα πίνακα> MODIFY <όνομα πεδίου> <τύπος νέου πεδίου>; Για παράδειγμα, αν θέλουμε να μετατρέψουμε το πεδίο DURATION από varchar(6) σε int (πόσα λεπτά διαρκεί η ταινία σε ακέραιο αριθμό), γράφουμε: ALTER TABLE MOVIES MODIFY DURATION int; Με αυτή τη σύνταξη μπορούμε να τροποποιήσουμε μόνο τον τύπο ενός πεδίου και όχι το όνομά του Διαγραφή πεδίου Για να διαγράψουμε ένα πεδίο από έναν πίνακα η σύνταξη της εντολής είναι: ALTER TABLE <όνομα πίνακα> DROP COLUMN <όνομα πεδίου>; Έτσι, για να διαγράψουμε το πεδίο DURATION από τον πίνακα MOVIES, εκτελούμε την εντολή: ALTER TABLE MOVIES DROP COLUMN DURATION; Η εντολή αυτή αφορά τη διαγραφή στήλης, η οποία μπορεί να σημαίνει απώλεια δεδομένων. Για το λόγο αυτό, το σύστημα ζητά επιβεβαίωση, με ένα pop-up παράθυρο. 1.3 Διαγραφή πινάκων Αν θέλουμε να διαγράψουμε από τη βάση μας έναν ολόκληρο πίνακα, η SQL εντολή που θα χρησιμοποιήσουμε είναι η DROP η οποία συντάσσεται ως: DROP TABLE <όνομα πίνακα>; Και εδώ το σύστημα ζητάει επιβεβαίωση, όπως και στην DROP COLUMN. Γράψτε την εντολή για την εισαγωγή μίας νέας στήλης με όνομα «GENRE» (είδος ταινίας) και τύπο varchar(20) στον πίνακα MOVIES: 2 Χειρισμός Δεδομένων Στην ενότητα αυτή θα δούμε πώς μπορούμε να εισάγουμε, να δούμε και να τροποποιήσουμε δεδομένα στους πίνακες της βάσης μας. 2.1 Εισαγωγή δεδομένων Για να εισάγουμε δεδομένα σε πίνακες χρησιμοποιούμε την εντολή INSERT. Η σύνταξή της είναι η εξής: INSERT INTO <όνομα πίνακα> VALUES (<λίστα τιμών>); Χειρισμός Δεδομένων 5

8 [Type text] Η λίστα τιμών περιλαμβάνει μία τιμή για κάθε πεδίο του πίνακα στον οποίο θα γίνει η εισαγωγή. Για παράδειγμα, αν θέλουμε να εισάγουμε μία πλειάδα στον πίνακα ACTORS θα πρέπει να δώσουμε μία συγκεκριμένη τιμή για το πεδίο ID, μία για το NAME, μία για το BIRTHDATE κ.ο.κ. Αν σε κάποιο πεδίο δεν θέλουμε να δώσουμε τιμή, τότε αναγράφουμε την λέξη NULL. Π.χ.: INSERT INTO ACTORS VALUES ( A01, Brad Pitt, , Oklahoma, NULL); Παρατηρήστε ότι οι τιμές που αντιστοιχούν σε πεδία τύπου varchar και date περικλείονται μέσα σε μονά εισαγωγικά (όχι διπλά είναι λάθος) ενώ οι τιμές που αντιστοιχούν σε αριθμητικά πεδία (int, real κτλ) όχι. Προσοχή στις τιμές NULL: αυτή σημαίνει ότι θέλουμε η θέση αυτή να μείνει κενή. Για το λόγο αυτό, η λέξη δεν μπαίνει σε εισαγωγικά, γιατί τότε θα αποθηκευθεί η σειρά χαρακτήρων NULL, και η αντίστοιχη θέση ΔΕΝ θα μείνει κενή. Γενική παρατήρηση: στην SQL, το διαχωριστικό για αντικείμενα που σχηματίζουν λίστα οποιασδήποτε μορφής είναι το κόμμα (,). Κάθε εντολή INSERT μπορεί να εισάγει μία και μόνο πλειάδα (δηλ. γραμμή) σε έναν και μόνο πίνακα. Αν θέλουμε να εισάγουμε πολλές πλειάδες πρέπει να εκτελέσουμε πολλές εντολές INSERT. Αν θέλουμε να εισάγουμε τιμές σε μερικά μόνο πεδία του πίνακα και όχι σε όλα, τότε μπορούμε να χρησιμοποιήσουμε την παρακάτω μορφή της εντολής INSERT: INSERT INTO <όνομα πίνακα> (<λίστα πεδίων>) VALUES (<λίστα τιμών>); Για παράδειγμα: INSERT INTO ACTORS (ID, ΝΑΜΕ) VALUES ( A02, George Clooney ); Όταν χρησιμοποιούμε αυτήν την μορφή της εντολής, τα πεδία για τα οποία δεν προσδιορίζουμε κάποια τιμή παίρνουν αυτόματα την ειδική «τιμή» NULL (δηλαδή το αντίστοιχο πεδίο μένει κενό). Προφανώς στην περίπτωση αυτή, πρέπει να δώσουμε τιμή τουλάχιστον σε όλα τα NOT NULL πεδία. Σε αυτά περιλαμβάνεται πάντα και το πρωτεύον κλειδί, τα χαρακτηριστικά του οποίου δεν επιτρέπεται να πάρουν την «τιμή» NULL, δηλαδή να μείνουν κενά. 2.2 Επισκόπηση δεδομένων Για να δούμε τα περιεχόμενα ενός πίνακα χρησιμοποιούμε την εντολή SELECT. Η εντολή αυτή μπορεί να έχει πολλές μορφές που θα δούμε σιγά-σιγά κατά τη διάρκεια του μαθήματος. Η πιο απλή μορφή της, με την οποία μπορούμε να δούμε τα δεδομένα ενός πίνακα, είναι η εξής: SELECT * FROM <όνομα πίνακα>; Για παράδειγμα: SELECT * FROM ACTORS; 6 Χειρισμός Δεδομένων

9 Το * σημαίνει ότι θέλουμε να δούμε για κάθε πλειάδα τις τιμές όλων των πεδίων του πίνακα. Αν δεν μας ενδιαφέρουν όλα τα πεδία αλλά μόνο κάποια από αυτά μπορούμε να τα προσδιορίσουμε ως εξής: SELECT <λίστα πεδίων> FROM <όνομα πίνακα>; Για παράδειγμα: SELECT NAME, OSCARS FROM ACTORS; Εδώ μπορούμε να περιλάβουμε και εκφράσεις που περιέχουν υπολογισμούς. Για παράδειγμα, η εντολή SELECT TITLE, BUDGET * 1.1 FROM MOVIES; δείχνει τους τίτλους των ταινιών και τους αντίστοιχους προϋπολογισμούς, αυξημένους όμως κατά 10%. 2.3 Τροποποίηση δεδομένων Στους πίνακές μας υπάρχουν πλέον κάποια δεδομένα. Για την τροποποίηση των δεδομένων των πινάκων μας υπάρχουν οι εντολές UPDATE, η οποία τροποποιεί πλειάδες που ήδη υπάρχουν σε έναν πίνακα (σε αντίθεση με την INSERT η οποία δημιουργεί καινούριες πλειάδες), καθώς και η εντολή DELETE, η οποία διαγράφει πλειάδες Τροποποίηση πλειάδων Η σύνταξη της εντολής UPDATE είναι η εξής: UPDATE <όνομα πίνακα> SET <όνομα πεδίου> = <νέα τιμή> WHERE <συνθήκη>; Στο κομμάτι SET της εντολής λέμε τι αλλαγή θέλουμε να κάνουμε και στο κομμάτι WHERE λέμε σε ποια (ή ποιες) πλειάδες θέλουμε να εφαρμοστεί η αλλαγή. Για παράδειγμα, αν θέλουμε να τροποποιήσουμε την ημερομηνία γέννησης του ηθοποιού με αριθμό ταυτότητας A02 και να την κάνουμε ίση με 15 Αυγούστου 1968, η εντολή που πρέπει να εκτελέσουμε είναι: UPDATE ACTORS SET BIRTHDATE = WHERE ID = A02 ; Αν θέλαμε να αυξήσουμε τον αριθμό εισιτηρίων της ταινίας με τίτλο AVATAR κατά , θα εκτελούσαμε την εντολή: UPDATE MOVIES SET TICKETS = TICKETS WHERE TITLE = AVATAR ; Χειρισμός Δεδομένων 7

10 [Type text] Στο παραπάνω παράδειγμα βλέπουμε πως στο κομμάτι SET της εντολής μπορούμε να εκτελούμε και απλές αριθμητικές πράξεις (όταν βέβαια τροποποιούμε αριθμητικά πεδία και όχι συμβολοσειρές). Τέτοιες πράξεις είναι η πρόσθεση (+), η αφαίρεση (-), ο πολλαπλασιασμός (*) και η διαίρεση (/). Θα πρέπει επίσης να λάβουμε υπόψη ότι για να τροποποιηθεί στο συγκεκριμένο παράδειγμα ο αριθμός των εισιτηρίων θα πρέπει να υπάρχει η ταινία με τίτλο AVATAR και ότι τα κεφαλαία γράμματα διαφέρουν από τα μικρά όταν δίνονται ως τιμές πεδίων. Η εντολή δηλαδή θα τροποποιήσει μόνο τις πλειάδες με τιμή AVATAR στο πεδίο TITLE και όχι τις πλειάδες με τιμή avatar ή Avatar. Για να μειώσουμε το κόστος όλων των ταινιών κατά 10% μπορούμε να γράψουμε: UPDATE MOVIES SET BUDGET = 0.9 * BUDGET; Αν από την εντολή UPDATE παραλείψουμε εντελώς το κομμάτι WHERE (που καθορίζει τις πλειάδες στις οποίες θα εφαρμοστεί η τροποποίηση), τότε η τροποποίηση θα εφαρμοστεί σε όλες τις πλειάδες του πίνακα, όπως στο παραπάνω παράδειγμα. Πρέπει να είμαστε ιδιαίτερα προσεκτικοί με τη σύνταξη της εντολής μας γιατί οι τροποποιήσεις που κάνουμε δεν μπορούν να αναιρεθούν! Επομένως, αν τροποποιήσουμε όλες τις πλειάδες του πίνακα αντί για την μία που θέλαμε, δεν μπορούμε να επαναφέρουμε τον πίνακα στην αρχική του μορφή. Δημιουργείστε μία νέα πλειάδα στη βάση σας για την ηθοποιό Nicole Kidman που γεννήθηκε στις 20 Ιουνίου Ο αριθμός ταυτότητάς της είναι Α03. Στη συνέχεια, τροποποιήστε την πλειάδα ώστε να καταχωρηθεί στη βάση η πληροφορία ότι η συγκεκριμένη ηθοποιός έχει κερδίσει 1 βραβείο oscar. Αυξήστε κατά 20% τα κόστη όλων των ταινιών με σκηνοθέτη τον Steven Spielberg. 8 Χειρισμός Δεδομένων

11 2.3.2 Διαγραφή πλειάδων Η εντολή DELETE λειτουργεί με εντελώς αντίστοιχο τρόπο. Απουσιάζει φυσικά το κομμάτι SET. Επομένως, η σύνταξή της είναι: DELETE FROM <όνομα πίνακα> WHERE <συνθήκη>; Με την εκτέλεση της εντολής αυτής, διαγράφονται όσες πλειάδες του πίνακα ικανοποιούν τη συνθήκη που ορίζεται στο κομμάτι WHERE. Για παράδειγμα, αν θέλουμε να διαγράψουμε όλες τις ταινίες με έτος παραγωγής πριν το 1960, θα εκτελέσουμε την εντολή: DELETE FROM MOVIES WHERE YEAR <= 1960; Όπως και στην περίπτωση της UPDATE, αν παραλείψουμε το κομμάτι WHERE, οι τροποποιήσεις γίνονται σε όλες τις γραμμές του πίνακα. Επομένως, η εντολή: DELETE MOVIES; θα σβήσει όλες τις πλειάδες του πίνακα! Ο πίνακας θα συνεχίσει να υπάρχει στη βάση μας, αλλά θα είναι πλέον άδειος, δηλαδή δεν θα έχει μέσα κανένα δεδομένο. Και στην πρείπτωση αυτή, η εντολή ζητάει επιβεβαίωση πριν τη διαγραφή, ώστε να αποφευχθεί κάποια ανεπιθύμητη απώλεια δεδομένων Αποθήκευση αλλαγών Τέλος, υπάρχει η εντολή COMMIT, με την οποία λέτε στη βάση να μεταφέρει όλες τις τροποποιήσεις που κάνατε από τη μνήμη του υπολογιστή στον σκληρό δίσκο. Δεν είναι απαραίτητο να εκτελεστεί για να αποθηκεύονται οι αλλαγές που κάνετε στη βάση, αλλά είναι καλή τακτική να την εκτελείτε κατά διαστήματα όταν κάνετε πολλές τροποποιήσεις μαζί. Για να την εκτελέσετε γράφετε απλά: COMMIT; 3 Σύνδεση πινάκων Ξένα κλειδιά Οι πίνακες που έχουμε δει έως τώρα είναι ανεξάρτητοι μεταξύ τους, αφού τα δεδομένα του ενός δεν συνδέονται με κανέναν τρόπο με τα δεδομένα του άλλου. Στην ενότητα αυτή, θα δούμε πώς μπορούμε να χειριστούμε την αποθήκευση πληροφοριών που απαιτούν κάποια σύνδεση μεταξύ πλειάδων διαφορετικών πινάκων. Θεωρήστε ότι θέλουμε να αποθηκεύσουμε στη βάση μας πληροφορίες για τους ρόλους που έχει υποδυθεί κάθε ηθοποιός και την αμοιβή του για αυτούς. Για να γίνει αυτό, πρέπει με κάποιον τρόπο να συνδέσουμε τον κάθε ηθοποιό με τις ταινίες στις οποίες έχει πρωταγωνιστήσει. Θεωρούμε ότι κάθε ηθοποιός ενδέχεται να έχει πρωταγωνιστήσει σε περισσότερες από μία ταινίες, υποδυόμενος από έναν ρόλο σε κάθε ταινία, και ότι σε κάθε ταινία πρωταγωνιστούν περισσότεροι από ένας ηθοποιοί. Για να γίνει αυτό, θα πρέπει να δημιουργήσουμε έναν νέο πίνακα ο οποίος θα συσχετίζει τις πλειάδες του ACTORS με αυτές του MOVIES. Ποιες πλειάδες του πίνακα ACTORS όμως Σύνδεση πινάκων Ξένα κλειδιά 9

12 [Type text] θα συμμετέχουν στην συσχέτιση; Και με ποιες ακριβώς πλειάδες του MOVIES θα σχετίζεται η κάθε μία; Σε αυτό το σημείο πρέπει να θυμηθούμε την έννοια του πρωτεύοντος κλειδιού: Πρωτεύον κλειδί ενός πίνακα είναι το ελάχιστο σύνολο πεδίων του πίνακα που προσδιορίζουν μοναδικά την κάθε πλειάδα. Πιο πρακτικά, δεν μπορούν να υπάρχουν δύο πλειάδες του πίνακα που να έχουν τις ίδιες τιμές σε όλα τα γνωρίσματα που συμμετέχουν στο πρωτεύον κλειδί. Επομένως, όταν θέλουμε να συσχετίσουμε έναν συγκεκριμένο ηθοποιό με μία συγκεκριμένη ταινία, τα μόνα που χρειαζόμαστε είναι η τιμή του πρωτεύοντος κλειδιού του πίνακα ACTORS για τον συγκεκριμένο ηθοποιό (δηλ. το ID) και η τιμή του πρωτεύοντος κλειδιού του πίνακα MOVIES για τη συγκεκριμένη ταινία (δηλ. το TITLE). Άρα, στον καινούριο μας πίνακα θα έχουμε ένα πεδίο για τον αριθμό ταυτότητας του ηθοποιού και ένα πεδίο για τον τίτλο της ταινίας. Επίσης, σε κάθε δυάδα ηθοποιού-ταινίας αντιστοιχεί ένα όνομα ρόλου και ένα ποσό με το οποίο αμείφθηκε ο ηθοποιός για το συγκεκριμένο ρόλο. Ας επιλέξουμε λοιπόν ένα όνομα για τον νέο μας πίνακα και ονόματα για τα τέσσερα πεδία του: ID TITLE ROLE CACHE STARS αριθμός ταυτότητας ηθοποιού τίτλος ταινίας όνομα ρόλου ποσό αμοιβής Στον πίνακα αυτό, υπάρχει μία ουσιώδης διαφορά από τους πίνακες που έχουμε δει έως τώρα. Σε μερικά πεδία του πίνακα δεν μπορεί να εισαχθεί οποιαδήποτε τιμή. Κάθε τιμή του πεδίου ID για παράδειγμα πρέπει να αντιστοιχεί σε κάποιο ID ενός ηθοποιού που εμφανίζεται και στον πίνακα ACTORS. Αλλιώς θα είχαμε κάποιον που πρωταγωνιστεί σε ταινία χωρίς να είναι ηθοποιός! Παρόμοια, κάθε τίτλος ταινίας που εμφανίζεται στον πίνακα STARS πρέπει να εμφανίζεται ήδη και στον πίνακα MOVIES. Αυτή ακριβώς η απαίτηση οδηγεί στον ορισμό ενός νέου είδους κλειδιού, του ξένου κλειδιού: Ένα σύνολο από πεδία ενός πίνακα Α, έστω S Α, είναι ξένο κλειδί προς ένα σύνολο από πεδία του πίνακα Β, έστω S Β, αν οι τιμές των πεδίων του S Α σε κάθε πλειάδα t Α του Α - είτε εμφανίζονται αυτούσιες ως τιμές των πεδίων του S Β σε κάποια πλειάδα t Β του Β - είτε είναι ίσες με NULL. Πιο πρακτικά, ξένο κλειδί είναι ένα πεδίο (ή ένας συνδυασμός πεδίων) ενός πίνακα το οποίο παίρνει τιμές που υπάρχουν ήδη σε κάποιο πεδίο ενός άλλου πίνακα. Αν ορίσουμε 10 Σύνδεση πινάκων Ξένα κλειδιά

13 ότι ένα πεδίο είναι ξένο κλειδί, τότε κάθε τιμή που εισάγουμε σε αυτό πρέπει να υπάρχει ήδη και στην αντίστοιχη στήλη του άλλου πίνακα. Για να δημιουργήσουμε ξένα κλειδιά, προσθέτουμε στην εντολή CREATE TABLE γραμμές της μορφής: foreign key (<γνώρισμα ξένο-κλειδί>) references <όνομα πίνακα που αναφερόμαστε>(<γνώρισμα στο οποίο αναφερόμαστε>) Αν το <γνώρισμα ξένο-κλειδί> έχει το ίδιο όνομα με το <γνώρισμα στο οποίο αναφερόμαστε>, τότε το δεύτερο μπορεί να παραλειφθεί. Επίσης, πρέπει να προσέχουμε ώστε τα δύο αυτά πεδία να είναι του ίδιου τύπου. Για παράδειγμα, ένα πεδίο τύπου int δεν μπορεί να είναι ξένο κλειδί σε ένα πεδίο τύπου varchar(20), επειδή τότε (προφανώς) δεν μπορεί να υπάρξει αντιστοιχία τιμών. Στο παράδειγμά μας λοιπόν θα είχαμε: foreign key (ID) references ACTORS(ID), foreign key (TITLE) references MOVIES(TITLE) ή ισοδύναμα: foreign key (ID) references ACTORS, foreign key (TITLE) references MOVIES Επομένως, η ολοκληρωμένη CREATE TABLE εντολή είναι: CREATE TABLE STARS ( ID varchar(10), TITLE varchar(50), ROLE varchar(30), CACHE real, primary key (ID, TITLE), foreign key (ID) references ACTORS, foreign key (TITLE) references MOVIES ); Τι θα άλλαζε στον πίνακα STARS αν υποθέταμε ότι κάθε ηθοποιούς μπορεί να κατέχει πάνω από έναν πρωταγωνιστικούς ρόλους σε μία ταινία; Σύνδεση πινάκων Ξένα κλειδιά 11

14 [Type text] 4 Η εντολή SELECT Η εντολή SELECT είναι η σημαντικότερη εντολή της γλώσσας SQL. Μπορούμε να την χρησιμοποιήσουμε για να δούμε τα δεδομένα που είναι αποθηκευμένα στην βάση μας και για να τα συνδυάσουμε με διάφορους τρόπους μεταξύ τους ώστε να εξάγουμε την πληροφορία που θέλουμε. 4.1 Ερωτήσεις SELECT με έναν πίνακα Για να δούμε συγκεκριμένα δεδομένα που είναι αποθηκευμένα στη βάση μας, υποβάλλουμε στη βάση μας ένα ερώτημα (query). Το βασικό εργαλείο για το σχηματισμό ερωτημάτων είναι η εντολή SELECT. Κάθε εντολή SELECT αποτελείται από διάφορα δομικά τμήματα τα οποία θα δούμε στη συνέχεια. Η πιο βασική μορφή της είναι η εξής: SELECT <λίστα πεδίων> FROM <λίστα πινάκων> WHERE <συνθήκη>; Στο κομμάτι SELECT βάζουμε τα πεδία που θέλουμε να εμφανίζονται στο αποτέλεσμα της εντολής (ή ερώτησης). Στο FROM βάζουμε τους πίνακες που περιέχουν τα δεδομένα που θα χρειαστούν στον υπολογισμό του ερωτήματος. Τέλος, στο WHERE βάζουμε συνθήκες που πρέπει να πληρούν όλες οι πλειάδες που θα εμφανιστούν στο αποτέλεσμα. Αν δεν απαιτείται κάποια ιδιαίτερη συνθήκη, τότε μπορεί να παραλειφθεί και το ερώτημα θα αφορά ολόκληρο τον πίνακα. Για παράδειγμα, η ερώτηση: SELECT ID, NAME, BIRTHDATE FROM ACTORS WHERE BIRTHDATE > ; θα εμφανίσει στη οθόνη τους αριθμούς ταυτότητας, τα ονόματα και τις ημερομηνίες γέννησης μόνο για τους ηθοποιούς που έχουν γεννηθεί μετά την 1 η Ιανουαρίου Όλοι οι υπόλοιποι ηθοποιοί που βρίσκονται αποθηκευμένοι στον πίνακα ACTORS αλλά δεν έχουν γεννηθεί μετά την 1 η Ιανουαρίου 1950, δεν θα συμπεριληφθούν στο αποτέλεσμα της SELECT ερώτησης. Πρέπει να προσέχουμε ώστε στο FROM να χρησιμοποιούμε τους σωστούς πίνακες για την κάθε μας ερώτηση. Για παράδειγμα, για να εμφανίσουμε τους αριθμούς ταυτότητας των ηθοποιών που έχουν πρωταγωνιστήσει σε κάποια ταινία, η σωστή εντολή SELECT είναι: SELECT ID FROM STARS; Γιατί δεν χρησιμοποιούμε τον πίνακα ACTORS στην παραπάνω ερώτηση; 12 Η εντολή SELECT

15 Για να εμφανίσουμε τους αριθμούς ταυτότητας όλων των ηθοποιών που έχουν πρωταγωνιστήσει στην ταινία με τίτλο TITANIC, γράφουμε: SELECT ID FROM STARS WHERE TITLE = TITANIC ; Σύνθετες συνθήκες Στο WHERE μπορεί να έχουμε σύνθετες συνθήκες, δηλαδή πολλές συνθήκες που συνδέονται με λογικούς τελεστές. Υπάρχουν τρεις λογικοί τελεστές: AND: Το λογικό «και» (ή αλλιώς «τομή») OR: Το λογικό «ή» (ή αλλιώς «ένωση») NOT: Η λογική άρνηση (ή αλλιώς «συμπλήρωμα») Για παράδειγμα, για να εμφανίσουμε τους τίτλους των ταινιών που κυκλοφόρησαν το 2009 ή το 2011, λέμε: SELECT TITLE FROM MOVIES WHERE YEAR = 2009 OR YEAR = 2011; Για να εμφανίσουμε τους τίτλους και τον αριθμό των εισιτηρίων των ταινιών που κυκλοφόρησαν το 2009 ή το 2011 και έχουν κόστος πάνω από , λέμε: SELECT TITLE, TICKETS FROM MOVIES WHERE (YEAR = 2009 OR YEAR = 2011) AND BUDGET > ; Η σειρά προτεραιότητας των τελεστών είναι NOT, AND και τελευταίος ο OR. Μπορούμε να χρησιμοποιούμε παρενθέσεις όπως στο παραπάνω παράδειγμα για να ορίζουμε τη σειρά με την οποία θα αποτιμηθούν οι συνθήκες του WHERE. Τι θα συνέβαινε αν δεν χρησιμοποιούσαμε τις παρενθέσεις στο παραπάνω παράδειγμα; Πράξεις Μπορούμε επίσης να κάνουμε απλές αριθμητικές πράξεις στο SELECT. Για να δούμε π.χ. το κόστος όλων των ταινιών με σκηνοθέτη τον Steven Spielberg διπλασιασμένο, λέμε: Η εντολή SELECT 13

16 [Type text] SELECT TITLE, 2 * BUDGET FROM MOVIES WHERE DIRECTOR = Steven Spielberg ; Ο τελεστής LIKE Υπάρχουν περιπτώσεις στις οποίες χρειάζεται να βρούμε πεδία που έχουν παρόμοιες τιμές και όχι ακριβώς ίσες. Για τέτοιες περιπτώσεις υπάρχει ο τελεστής LIKE. Συντάσσεται ως εξής: SELECT TITLE, BUDGET FROM MOVIES WHERE DIRECTOR LIKE %Spielberg% ; Το σύμβολο «%» στην παραπάνω ερώτηση σημαίνει «οτιδήποτε». Δηλαδή, ουσιαστικά η συνθήκη μας λέει «κράτησε μόνο τις πλειάδες που στο πεδίο DIRECTOR έχουν τιμή που περιέχει την συμβολοσειρά Spielberg». Έτσι, στο αποτέλεσμα της συγκεκριμένης ερώτησης θα συμπεριληφθούν όλες οι ταινίες που στο πεδίο DIRECTOR έχουν τιμές όπως St. Spielberg, Spielberg, Spielberg Steven και όχι μόνο την τιμή Steven Spielberg όπως ισχύει με τον τελεστή «=». Εμφανίστε τους τίτλους των ταινιών που κυκλοφόρησαν το 2011 και ο τίτλος τους αρχίζει από «Α»: Η μεταβλητή SYSDATE H SYSDATE είναι μία ειδική μεταβλητή της βάσης μας που είναι τύπου date και περιέχει την τρέχουσα ημερομηνία. Είναι χρήσιμη όταν θέλουμε να κάνουμε ερωτήσεις που εξαρτώνται από την σημερινή ημερομηνία. Χρησιμοποιείται ως εξής: SELECT * FROM ACTORS WHERE BIRTHDATE < SYSDATE; Αλλαγή ονομάτων στηλών του αποτελέσματος Υπάρχει η δυνατότητα, αν θέλουμε, να μετονομάσουμε τα ονόματα των στηλών του αποτελέσματος ως εξής: 14 Η εντολή SELECT

17 SELECT ID Ar. Tautotitas, NAME Onoma, BIRTHPLACE Katagwgi FROM ACTORS WHERE BIRTHPLACE LIKE %USA% ; Προσέξτε ότι στα νέα ονόματα των στηλών βάζουμε διπλά εισαγωγικά (είναι μία από τις πολύ λίγες περιπτώσεις που στην SQL χρησιμοποιούνται διπλά αντί μονά εισαγωγικά). Η παραπάνω ερώτηση δεν τροποποιεί τα ονόματα των πεδίων στον πίνακα. Τα ονόματα που δώσαμε θα χρησιμοποιηθούν μία και μόνο φορά όταν θα μας εμφανιστεί το αποτέλεσμα της συγκεκριμένης ερώτησης στην οθόνη Ταξινόμηση αποτελέσματος ORDER BY Πολλές φορές θέλουμε οι πλειάδες του αποτελέσματος της ερώτησης να εμφανιστούν στην οθόνη με κάποια συγκεκριμένη σειρά και όχι τυχαία. Για το λόγο αυτό υπάρχει ένα δομικό τμήμα της εντολής SELECT που μπορούμε να χρησιμοποιήσουμε, το ORDER BY. Συντάσσεται ως εξής: SELECT <λίστα πεδίων> FROM <λίστα πινάκων> WHERE <συνθήκη> ORDER BY <λίστα πεδίων>; H <λίστα πεδίων> του ORDER BY καθορίζει τα πεδία βάσει των οποίων γίνεται η ταξινόμηση του αποτελέσματος. Για παράδειγμα, για να εμφανίσουμε όλους τους ηθοποιούς ταξινομημένους κατά αλφαβητική σειρά, γράφουμε: SELECT * FROM ACTORS ORDER BY NAME ASC; Το ASC σημαίνει «αύξουσα ταξινόμηση» και μπορεί να παραλειφθεί (δηλαδή αν δεν βάλουμε τίποτα εννοείται ότι είναι ASC). Αν θέλουμε φθίνουσα ταξινόμηση, γράφουμε: SELECT * FROM ACTORS ORDER BY NAME DESC; Στο ORDER BY μπορούμε να έχουμε πολλά πεδία. Όταν γίνεται αυτό, οι πλειάδες πρώτα ταξινομούνται με βάση το πρώτο μόνο πεδίο. Αν μερικές πλειάδες έχουν την ίδια τιμή σε αυτό το πεδίο, τότε αυτές (και μόνο αυτές) ταξινομούνται με βάση το δεύτερο. Αν και σε αυτό έχουν την ίδια τιμή, τότε ταξινομούνται με βάση το ίδιο πεδίο κ.ο.κ. Για παράδειγμα, για να εμφανίσουμε τον τίτλο, το κόστος και το έτος παραγωγής όλων των ταινιών με αύξουσα σειρά έτους παραγωγής και αλφαβητική σειρά τίτλου, λέμε: SELECT TITLE, BUDGET, YEAR FROM MOVIES Η εντολή SELECT 15

18 [Type text] ORDER BY YEAR ASC, TITLE ASC; Επίσης μπορούμε να έχουμε συνδυασμούς όπως: SELECT TITLE, BUDGET, YEAR FROM MOVIES ORDER BY YEAR DESC, TITLE ASC; Ο τελεστής ΙΝ Ο τελεστής ΙΝ χρησιμοποιείται για να δείξουμε κάποιο σύνολο. Για παράδειγμα, η παρακάτω ερώτηση θα εμφανίσει στοιχεία για τους ηθοποιούς που το όνομά τους είναι (ακριβώς) είτε «Brad» είτε «Angelina». SELECT * FROM ACTORS WHERE NAME IN ( Brad, Angelina ); Ο τελεστής BETWEEN Εναλλακτικά, όταν έχουμε αριθμητικά ή date πεδία, αντί για μία συνθήκη της μορφής: WHERE YEAR >=1990 AND YEAR <=2000 η οποία δίνει τις τιμές που βρίσκονται ανάμεσα στις δύο τιμές που μας ενδιαφέρουν, μπορούμε ισοδύναμα να γράψουμε: WHERE YEAR BETWEEN 1990 AND Εμφωλευμένες ερωτήσεις Μία εμφωλευμένη ερώτηση έχει τη μορφή μίας κοινής SELECT ερώτησης η οποία χρησιμοποιείται σε κάποιο σημείο μίας άλλης SELECT ερώτησης, συνήθως στο κομμάτι WHERE. Υπάρχουν συγκεκριμένοι τελεστές που χρησιμοποιούνται για τη σύνταξη μιας εμφωλευμένης ερώτησης: Τελεστής ΙΝ: Ο τελεστής IN χρησιμοποιείται για να ελεγχθεί αν οι τιμές ενός πεδίου ανήκουν στο αποτέλεσμα που προκύπτει από μία εμφωλευμένη SELECT υπο-ερώτηση. Για παράδειγμα, η ερώτηση SELECT ID, NAME FROM ACTORS WHERE ID IN (SELECT ID FROM STARS WHERE TITLE = The King s Speech ); θα εμφανίσει τους αριθμούς ταυτότητας και τα ονόματα των ηθοποιών που έχουν πρωταγωνιστήσει στην ταινία The King s Speech. Με την εμφωλευμένη SELECT βρίσκουμε τους κωδικούς των ηθοποιών από την ταινία και ακολούθως με αυτούς τους κωδικούς βρίσκουμε με την αρχική SELECT από τον πίνακα ACTORS και τα ονόματα τους. 16 Η εντολή SELECT

19 Τελεστής SOME: Ο τελεστής SOME χρησιμοποιείται για να συγκρίνουμε τις τιμές ενός πεδίου με τις τιμές του αποτελέσματος που προκύπτει από μία εμφωλευμένη SELECT υπο-ερώτηση. Ο τελεστής SOME χρησιμοποιείται μαζί με κάποιον από τους τελεστές σύγκρισης >, <, =, >=, <=, <> και ελέγχει αν η τιμή ενός πεδίου είναι μεγαλύτερη/μικρότερη/ίση/μεγαλύτερη ή ίση/μικρότερη ή ίση/διάφορη αντίστοιχα από κάποια (μία τουλάχιστον) τιμή του αποτελέσματος της εμφωλευμένης υπο-ερώτησης. Για παράδειγμα, αν θέλουμε να εμφανίσουμε τους τίτλους και το έτος παραγωγής των ταινιών οι οποίες κόστισαν περισσότερο από κάποια (οποιαδήποτε) ταινία που έχει σκηνοθετήσει ο Steven Spielberg, η εντολή είναι: SELECT TITLE, YEAR FROM MOVIES WHERE BUDGET > SOME (SELECT BUDGET FROM MOVIES WHERE DIRECTOR= Steven Spielberg ); Είναι αυτονόητο ότι, τόσο στην περίπτωση του SOME όσο και του IN, πρέπει να φροντίσουμε ώστε οι δύο πλευρές της σύγκρισης να είναι συμβατές μεταξύ τους. Εμφανίστε τους αριθμούς ταυτότητας των ηθοποιών που έχουν συμπρωταγωνιστήσει σε μία τουλάχιστον ταινία με τον ηθοποιό που έχει αριθμό ταυτότητας GT0102. Τελεστής ALL: Ο τελεστής ALL χρησιμοποιείται για να συγκρίνουμε τις τιμές ενός πεδίου με όλες τις τιμές του αποτελέσματος που προκύπτει από μία εμφωλευμένη SELECT υπο-ερώτηση. Ο τελεστής ALL χρησιμοποιείται μαζί με κάποιον από τους τελεστές σύγκρισης >, <, =, >=, <=, <> και ελέγχει αν η τιμή ενός πεδίου είναι μεγαλύτερη/μικρότερη/ίση/μεγαλύτερη ή ίση/μικρότερη ή ίση/διάφορη αντίστοιχα από όλες τις τιμές του αποτελέσματος της εμφωλευμένης υπο-ερώτησης. Για παράδειγμα, αν θέλουμε να εμφανίσουμε τους τίτλους και το έτος παραγωγής των ταινιών οι οποίες κόστισαν περισσότερο από κάθε ταινία (δηλαδή όλες) που κυκλοφόρησε το 2011, η εντολή είναι: SELECT TITLE, YEAR FROM MOVIES Η εντολή SELECT 17

20 [Type text] WHERE BUDGET > ALL (SELECT BUDGET FROM MOVIES WHERE YEAR = 2011); Είναι αυτονόητο ότι, τόσο στην περίπτωση του SOME όσο και του IN και του ALL, πρέπει να φροντίσουμε ώστε οι δύο πλευρές της σύγκρισης να είναι συμβατές μεταξύ τους, δηλαδή να έχουν το ίδιο πλήθος χαρακτηριστικών και τον ίδιο τύπο δεδομένων. Εμφανίστε τους αριθμούς ταυτότητας των ηθοποιών που δεν έχουν πρωταγωνιστήσει σε καμία ταινία με σκηνοθέτη τον James Cameron. 4.2 Πράξεις μεταξύ SELECT ερωτήσεων Μεταξύ των αποτελεσμάτων δύο SELECT ερωτήσεων ορίζονται οι πράξεις τις ένωσης, της τομής και της διαφοράς (ή εξαίρεσης). Αυτές οι πράξεις έχουν την έννοια που έχουν και στις πράξεις μεταξύ συνόλων, τις, και αντίστοιχα. Έτσι, μπορούμε να συνδέσουμε δύο SELECT ερωτήσεις για να πάρουμε σαν τελικό αποτέλεσμα την ένωση, την τομή ή την διαφορά αντίστοιχα των δύο αποτελεσμάτων, αρκεί τα αποτελέσματα των δύο ερωτήσεων να περιέχουν τις ίδιες στήλες (να υπάρχουν τα ίδια πεδία στο SELECT κομμάτι των ερωτήσεων) και αυτές να έχουν τον ίδιο τύπο δεδομένων Ένωση SELECT ερωτήσεων Ο τελεστής UNION μεταξύ δύο SELECT ερωτήσεων μας δίνει σαν αποτέλεσμα όλες τις πλειάδες που ανήκουν στο αποτέλεσμα μίας τουλάχιστον εκ των δύο SELECT ερωτήσεων. Συνεπώς, αν για παράδειγμα θέλουμε να βρούμε όλους τους αριθμούς ταυτότητας των ηθοποιών που έχουν κερδίσει περισσότερα από 2 oscar ή έχουν αμειφθεί με περισσότερα από για κάποιον ρόλο τους, ένας τρόπος είναι να γράψουμε: (SELECT ID FROM ACTORS WHERE OSCARS > 2) UNION (SELECT ID FROM STARS WHERE CACHE > ); 18 Η εντολή SELECT

21 4.2.2 Τομή SELECT ερωτήσεων Ο τελεστής INTERSECT μεταξύ δύο SELECT ερωτήσεων μας δίνει σαν αποτέλεσμα όλες τις πλειάδες που ανήκουν στο αποτέλεσμα και των δύο SELECT ερωτήσεων. Συνεπώς, αν για παράδειγμα θέλουμε να βρούμε όλους τους αριθμούς ταυτότητας των ηθοποιών που έχουν κερδίσει περισσότερα από 2 oscar και έχουν πρωταγωνιστήσει στην ταινία Armagedon, γράφουμε: (SELECT ID FROM ACTORS WHERE OSCARS > 2) INTERSECT (SELECT ID FROM STARS WHERE TITLE = Armagedon); Εξαίρεση SELECT ερωτήσεων Ο τελεστής MINUS μεταξύ δύο SELECT ερωτήσεων μας δίνει σαν αποτέλεσμα όλες τις πλειάδες που ανήκουν στο αποτέλεσμα της πρώτης αλλά όχι της δεύτερης εκ των δύο SELECT ερωτήσεων. Συνεπώς, αν για παράδειγμα θέλουμε να βρούμε όλους τους αριθμούς ταυτότητας των ηθοποιών που έχουν κερδίσει περισσότερα από 2 oscar αλλά δεν έχουν πρωταγωνιστήσει στην ταινία Armagedon, γράφουμε: (SELECT ID FROM ACTORS WHERE OSCARS > 2) MINUS (SELECT ID FROM STARS WHERE TITLE = Armagedon ); 4.3 Ερωτήσεις SELECT με πολλούς πίνακες Θυμίζουμε το σχήμα της βάσης μας: Η εντολή SELECT 19

22 [Type text] ACTORS ID NAME BIRTHDATE BIRTHPLACE OSCARS MOVIES TITLE YEAR DIRECTOR BUDGET TICKETS STARS ID TITLE ROLE CACHE Πολλές φορές τα δεδομένα που χρειαζόμαστε δεν είναι αποθηκευμένα σε έναν μόνο πίνακα αλλά βρίσκονται διάσπαρτα στη βάση. Σε αυτήν την περίπτωση πρέπει να συνδυάσουμε πολλούς πίνακες στην ερώτησή μας έτσι ώστε να εξάγουμε το επιθυμητό αποτέλεσμα. Όταν έχουμε σύνδεση (ή αλλιώς «join») πολλών πινάκων, τότε πρέπει να προσέχουμε δύο πράγματα: Ποιους ακριβώς πίνακες χρειαζόμαστε ώστε να τους βάλουμε στο FROM Ποιες συνθήκες σύνδεσης χρειαζόμαστε ώστε να τις βάλουμε στο WHERE Το πρώτο είναι απλό. Έστω για παράδειγμα ότι θέλουμε να βρούμε για κάθε ηθοποιό το όνομά του και τον τίτλο των ταινιών που έχει πρωταγωνιστήσει. Από το σχήμα της βάσης μας βλέπουμε ότι οι πίνακες που χρειαζόμαστε είναι ο ACTORS και ο STARS. Έστω ότι κάποια στιγμή τα δεδομένα που υπάρχουν στη βάση μας είναι: Δοκιμάζουμε την εντολή: 20 Η εντολή SELECT

23 SELECT NAME, TITLE FROM ACTORS, STARS; Το αποτέλεσμα είναι: Βλέπουμε δηλαδή πως όλες οι πλειάδες του ACTORS ενώνονται με όλες τις πλειάδες του STARS! Ερμηνεύοντας τα αποτελέσματα του ερωτήματος θα βγάλουμε το συμπέρασμα πως η Sandra Bullock έχει πρωταγωνιστήσει στο Inglourious Basterds και στο The Shawshank Redemption. Κάτι τέτοιο είναι προφανώς λάθος! Το παραπάνω παράδειγμα είναι το Καρτεσιανό Γινόμενο των δύο πινάκων, το οποίο περιέχει όσα στοιχεία μας χρειάζονται πραγματικά, αλλά περιλαμβάνει και αρκετά που μας είναι παντελώς άχρηστα και δεν έχουν νόημα. Πρέπει λοιπόν να φροντίσουμε ώστε η εντολή μας να είναι ορθή, δηλαδή να συνδέει μεταξύ τους πλειάδες των δύο πινάκων που αναφέρονται στον ίδιο ηθοποιό, δηλαδή: SELECT NAME, TITLE FROM ACTORS, STARS WHERE ACTORS.ID = STARS.ID; Βλέπετε λοιπόν πως το ερώτημα σας πρέπει να είναι διατυπωμένο σωστά γιατί αλλιώς θα εξάγετε λανθασμένα συμπεράσματα από το αποτέλεσμά του! Αν θέλουμε επιπλέον να εμφανίσουμε το όνομα του σκηνοθέτη κάθε ταινίας στην οποία πρωταγωνιστεί κάθε ηθοποιός, θα χρειαστούμε και τον πίνακα MOVIES: SELECT ACTORS.NAME, STARS.TITLE, MOVIES.DIRECTOR FROM ACTORS, STARS, MOVIES WHERE ACTORS.ID = STARS.ID AND MOVIES.TITLE = STARS.TITLE; Η εντολή SELECT 21

24 [Type text] Εύκολα μπορεί κανείς να διαπιστώσει ότι η σύνδεση περιλαμβάνει ένα ξένο κλειδί από τον ένα πίνακα και το πεδίο εκείνο από τον άλλο πίνακα, στο οποίο αναφέρεται αυτό το ξένο κλειδί Εμφανίστε τους αριθμούς ταυτότητας και τα ονόματα των ηθοποιών που έχουν πρωταγωνιστήσει σε ταινία με σκηνοθέτη τον Stanley Kubrick. 4.4 Συναθροιστικές συναρτήσεις Η SQL προσφέρει ένα σύνολο συναρτήσεων που μπορούν να εφαρμοστούν σε ένα σύνολο πλειάδων και να υπολογίσουν μία αριθμητική τιμή από αυτό. Τέτοιες συναρτήσεις είναι: Το ελάχιστο (min) Το μέγιστο (max) Το άθροισμα (sum) Ο μέσος όρος (avg) Το πλήθος (count) Όπως γίνεται αντιληπτό από τη φύση των συναρτήσεων αυτών, μπορούν να υπολογιστούν μόνο βάσει των αριθμητικών ή date πεδίων των πλειάδων. Μόνη εξαίρεση είναι το count που απλά μετράει το πλήθος των πλειάδων, οπότε σε αυτήν την περίπτωση δεν παίζει κάποιο ρόλο το τι ακριβώς περιέχουν αυτές οι πλειάδες. Προσοχή: οι συναρτήσεις αυτές δεν λαμβάνουν υπ όψη τους τις τιμές που είναι κενές. Αν θέλουμε για παράδειγμα να βρούμε το μέσο όρο κόστους των ταινιών, μπορούμε να πούμε: SELECT avg(budget) FROM MOVIES; Η συναθροιστική συνάρτηση βρίσκεται δηλαδή στο κομμάτι SELECT της εντολής και παίρνει ως όρισμα το πεδίο πάνω στο οποίο θα εφαρμοστεί. Αν θέλουμε να μετρήσουμε πόσοι είναι οι ηθοποιοί, λέμε: SELECT count(*) FROM ACTORS; ή, ισοδύναμα: 22 Η εντολή SELECT

25 SELECT count(id) FROM ACTORS; ή SELECT count(ναμε) FROM ACTORS; Αν, όμως θέλουμε να μετρήσουμε το πόσοι είναι οι ηθοποιοί που πρωταγωνιστούν σε κάποια ταινία, η ερώτηση SELECT count(id) FROM STARS; είναι λανθασμένη. Επειδή το ίδιο ID μπορεί να εμφανίζεται πολλές φορές στον STARS, θα μετρήσουμε περισσότερους ηθοποιούς από όσους πρωταγωνιστούν πράγματι σε κάποια ταινία. Την λύση προσφέρει η επιλογή DISTINCT (που σημαίνει «διακριτός»). Αν την χρησιμοποιήσουμε τότε η count δεν μετράει τις διπλές εμφανίσεις: SELECT count(distinct ID) FROM STARS; Η συνάρτηση COUNT() χρειάζεται κάποια προσοχή. Επειδή όπως είπαμε παραπάνω οι συναρτήσεις λαμβάνουν υπ όψη τους μόνο τις τιμές που δεν είναι NULL, πρέπει να προσέχουμε ποιο χαρακτηριστικό θα ζητήσουμε να μετρηθεί με την εντολή μας. Για παράδειγμα, αν θέλουμε να μετρήσουμε πόσοι ηθοποιοί είναι καταχωρημένοι, τότε οι εντολές και SELECT count(id) FROM ACTORS; SELECT count(*) FROM ACTORS; έχουν το ίδιο αποτέλεσμα, καθώς το πεδίο ID έχει πάντοτε μια τιμή, ως πρωτεύον κλειδί. Αντίθετα, η εντολή SELECT count(birthdate) FROM ACTORS; μπορεί να δώσει διαφορετικό αποτέλεσμα, αν για κάποιους ηθοποιούς δεν έχουμε καταχωρήσει ημερομηνία γέννησης. Βρείτε την μεγαλύτερη και την μικρότερη αμοιβή που έχει πάρει ποτέ ο ηθοποιός με αριθμό ταυτότητας A08 για ρόλο που έχει παίξει. Η εντολή SELECT 23

26 [Type text] Ομαδοποίηση Στην πράξη σπάνια μας ενδιαφέρει να υπολογίσουμε μία συναθροιστική συνάρτηση βασισμένη σε όλες τις πλειάδες ενός πίνακα. Συνήθως μας ενδιαφέρει μόνο ένα υποσύνολο αυτών. Για παράδειγμα, πώς θα βρούμε το μέσο όρο αμοιβής των ηθοποιών ανά ταινία (δηλαδή, ξεχωριστά το μέσο όρο για αυτούς που πρωταγωνιστούν στην ταινία Titanic, ξεχωριστά το μέσο όρο για τους πρωταγωνιστές της ταινίας Armagedon κ.ο.κ); Για να χωρίσουμε τις πλειάδες μας σε μικρότερες ομάδες, υπάρχει ένα άλλο δομικό στοιχείο της εντολής SELECT, το κομμάτι GROUP BY. Συντάσσεται ως εξής: SELECT <λίστα πεδίων> FROM <λίστα πινάκων> WHERE <συνθήκη> GROYP BY <λίστα πεδίων>; Αν στο GROUP BY έχουμε ένα και μόνο πεδίο, τότε οι πλειάδες μας χωρίζονται με βάση αυτό. Για παράδειγμα, η εντολή: SELECT TITLE, avg(cache) FROM STARS GROYP BY TITLE; πρώτα χωρίζει τις πλειάδες του πίνακα STARS σε ομάδες ανάλογα με την τιμή τους στο πεδίο TITLE (μία ομάδα για όλους τους πρωταγωνιστικούς ρόλους με τιμή στο TITLE ίση με Titanic, μία για αυτούς με τιμή ίση με Armagedon κτλ.) και μετά εφαρμόζει την συναθροιστική συνάρτηση σε κάθε ομάδα χωριστά. Αν δηλαδή υπάρχουν 5 διαφορετικές ταινίες στον πίνακα STARS, τότε η παραπάνω ερώτηση θα δώσει 5 διαφορετικούς μέσους όρους, έναν για κάθε ομάδα. Για να ξεχωρίζουμε ποια τιμή αντιστοιχεί σε κάθε ομάδα, χρειάζεται στο SELECT να βάζουμε και το πεδίο που υπάρχει στο GROUP BY. Προσοχή: το μόνο πεδίο που μπορεί να υπάρχει στη SELECT είναι το πεδίο με βάση το οποίο γίνεται η ομαδοποίηση, και φυσικά και όποιες συναρτήσεις θέλουμε να υπολογισθούν. Μπορούμε, αν θέλουμε, στο GROUP BY να έχουμε παραπάνω από ένα πεδία. Στην περίπτωση αυτή, ο πίνακας πρώτα θα χωριστεί σε ομάδες με βάση το 1 ο πεδίο και στη συνέχεια κάθε ομάδα θα ξαναχωριστεί με βάση στο 2 ο πεδίο κ.ο.κ. Οι συναθροιστικές συναρτήσεις θα υπολογιστούν ξεχωριστά για κάθε μία από αυτές τις μικρότερες ομάδες που προέκυψαν στο τέλος. 24 Η εντολή SELECT

27 Ας δούμε μερικά παραδείγματα ομαδοποίησης: Εμφάνιση του πλήθους των ταινιών με λιγότερα από εισιτήρια ανά σκηνοθέτη : SELECT DIRECTOR, COUNT(*) FROM MOVIES WHERE TICKETS < GROUP BY DIRECTOR; Εμφάνιση του πλήθους των πρωταγωνιστών ανά σκηνοθέτη και ανά ταινία: SELECT DIRECTOR, STARS.TITLE, COUNT(*) FROM STARS, MOVIES WHERE MOVIES.TITLE = STARS.TITLE GROUP BY DIRECTOR, STARS.TITLE; Βρείτε για κάθε ταινία τον συνολικό αριθμό των oscars που έχουν κερδίσει οι πρωταγωνιστές της: Σκεφτείτε δύο διαφορετικούς τρόπους, με όλα όσα έχουμε μάθει ως τώρα, για να εμφανίσετε από μία φορά όλους τους σκηνοθέτες που είναι καταχωρημένοι στη βάση. Η εντολή SELECT 25

28 [Type text] Τέλος, σε κάποιες περιπτώσεις, μπορεί να μην θέλουμε να εμφανιστούν όλες οι ομάδες στο αποτέλεσμα. Για να διαλέξουμε μόνο κάποιες από τις ομάδες, χρησιμοποιούμε ένα νέο το κομμάτι της εντολής SELECT. Το κομμάτι αυτό είναι το HAVING. Συντάσσεται ως εξής: SELECT <λίστα πεδίων> FROM <λίστα πινάκων> WHERE <συνθήκη> GROYP BY <λίστα πεδίων> HAVING <συνθήκη>; Στο HAVING χρησιμοποιούμε συνθήκες που μπορούν να εφαρμοστούν σε μία ολόκληρη ομάδα και όχι σε κάθε πλειάδα της ομάδας ξεχωριστά (αυτή άλλωστε είναι και η διαφορά του με το WHERE). Για παράδειγμα, αν θέλουμε να βρούμε τους αριθμούς ταυτότητας και τον αριθμό των ταινιών στις οποίες έχει πρωταγωνιστήσει κάθε ηθοποιός, μόνο για τους ηθοποιούς που έχουν πρωταγωνιστήσει σε περισσότερες από 15 ταινίες, γράφουμε: SELECT ID, COUNT(*) FROM STARS GROYP BY ID HAVING COUNT(*) > 15; Για να εμφανίσουμε τον αριθμό ταινιών που έχει σκηνοθετήσει κάθε σκηνοθέτης, μόνο για τους σκηνοθέτες οι οποίοι έχουν σκηνοθετήσει περισσότερες ταινίες από τον σκηνοθέτη Kubrick, γράφουμε: SELECT DIRECTOR, COUNT(*) FROM MOVIES GROYP BY DIRECTOR HAVING COUNT(*) > (SELECT COUNT(*) FROM MOVIES WHERE DIRECTOR = Kubrick ) ; Εδώ βλέπουμε τον τρόπο για να υπολογίσουμε συγκεκριμένα μεγέθη που χρειαζόμαστε αλλά δεν γνωρίζουμε. Στην παραπάνω εντολή, η παρένθεση ισοδυναμεί με έναν αριθμό, ο οποίος υπολογίζεται κάθε φορά που χρειάζεται με βάση τα δεδομένα που υπάρχουν εκείνη τη στιγμή στους πίνακες. Εμφανίστε τους ηθοποιούς κατά φθίνουσα σειρά με βάση το μέσο όρο των αμοιβών τους για τους ρόλους που είχαν στην καριέρα τους. Στη συνέχεια, τροποποιήστε την ερώτησή σας ώστε να εμφανίζονται μόνο οι ηθοποιοί με μέσο όρο αμοιβής μεγαλύτερο από Η εντολή SELECT

29 Η εντολή SELECT 27

30

31 Η εντολή SELECT Π - 1

Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου]

Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου] ΤΕΙ ΔΥΤΙΚΗΣ ΜΑΚΕΔΟΝΙΑΣ Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά) Βάσεις Δεδομένων Ι [Σημειώσεις Εργαστηρίου] Χειμερινό Εξ. 2013-14 Επιμέλεια: Καρβούνης Ευάγγελος Οκτώβριος 2013 Περιεχόμενα 1 Σχεδιασμός Βάσης...

Διαβάστε περισσότερα

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

Η SQL αποτελείται από δύο υποσύνολα, τη DDL και τη DML. Κεφάλαιο 5 Η γλώσσα SQL 5.1 Εισαγωγή Η γλώσσα SQL (Structured Query Language) είναι η πιο διαδεδομένη διαλογική γλώσσα ερωταπαντήσεων που χρησιμοποιείται για την επικοινωνία του χρήστη με σχεσιακές ΒΔ.

Διαβάστε περισσότερα

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

Τμήμα Διοίκησης Επιχειρήσεων Τμήμα Διοίκησης Επιχειρήσεων «Βάσεις Δεδομένων και Ευφυή Πληροφοριακά Συστήματα» «Σημειώσεις για την SQL» ΕΞΑΜΗΝΟ: ΣΤ Δρ. Κωνσταντίνος Χ. Γιωτόπουλος Πάτρα, Νοέμβριος 2010 SQL Create Table Η CREATE TABLE

Διαβάστε περισσότερα

Ορισμοί Σχεσιακού Μοντέλου και (απλές)τροποποιήσεις Σχέσεων στην SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1

Ορισμοί Σχεσιακού Μοντέλου και (απλές)τροποποιήσεις Σχέσεων στην SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 Ορισμοί Σχεσιακού Μοντέλου και (απλές)τροποποιήσεις Σχέσεων στην SQL Ευαγγελία Πιτουρά 1 Τι έχουμε δει Μοντελοποίηση Εννοιολογικός Σχεδιασμός Βάσεων Δεδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων)

Διαβάστε περισσότερα

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

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Εισαγωγή Μοντελοποίηση Στα προηγούμενα μαθήματα: Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων) Λογικός

Διαβάστε περισσότερα

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

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε. Ιατρική Πληροφορική Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ.Ε. Χρήσιμοι Σύνδεσμοι Σημειώσεις μαθήματος: http://medisp.bme.teiath.gr/eclass/courses/tio103/ https://eclass.teiath.gr/courses/tio100/

Διαβάστε περισσότερα

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

Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Ορισμοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Βάσεις Δεδομένων 2009-2010 Ευαγγελία Πιτουρά 1 Εισαγωγή Μοντελοποίηση Στα προηγούμενα μαθήματα: Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

Ιατρική Πληροφορική. Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι Ιατρική Πληροφορική Δρ. Π. ΑΣΒΕΣΤΑΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΒΙΟΪΑΤΡΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ Τ. Ε. Χρήσιμοι Σύνδεσμοι Σημειώσεις μαθήματος: http://medisp.bme.teiath.gr/eclass/courses/tio103/ https://eclass.teiath.gr/courses/tio100/

Διαβάστε περισσότερα

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

2 ο Σύνολο Ασκήσεων. Βάσεις Δεδομένων 2013-2014 Ευαγγελία Πιτουρά 1 2 ο Σύνολο Ασκήσεων Οι βαθμοί θα ανακοινωθούν αύριο μαζί με τους βαθμούς της προγραμματιστικής άσκησης Τα αστεράκια δείχνουν τον εκτιμώμενο βαθμό δυσκολίας (*) εύκολο (**) μέτριο (***) δύσκολο Βάσεις Δεδομένων

Διαβάστε περισσότερα

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

PROJECT ΕΡΓΑΣΤΗΡΙΩΝ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ Ι. Τμήμα Μηχανικών Πληροφορικής Τ.Ε. Παραδοτέα 1. Το αρχείο.mdb της βάσης δεδομένων σας σε ACCESS 2. Ένα CD που θα αναγράφει το ονοματεπώνυμο του σπουδαστή και το ΑΕΜ και θα περιέχει το αρχείο.mdb της βάσης δεδομένων καθώς και το εγχειρίδιο

Διαβάστε περισσότερα

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

Τμήμα Πληροφορικής ΑΠΘ Βάσεις Δεδομένων Εργαστήριο ΙΙ Τμήμα Πληροφορικής ΑΠΘ 2013-2014 2 Σκοπός του 2 ου εργαστηρίου Σκοπός αυτού του εργαστηρίου είναι: Η μελέτη ερωτημάτων σε μία μόνο σχέση. Εξετάζουμε τους τελεστές επιλογής

Διαβάστε περισσότερα

Βάσεις Δεδομένων 5η εργαστηριακή άσκηση

Βάσεις Δεδομένων 5η εργαστηριακή άσκηση Βάσεις Δεδομένων 5η εργαστηριακή άσκηση SQL Δρ. Μαρία Ευθυμιοπούλου Εντολές sql Για να γράψετε ή να επικολλήσετε εντολές sql πηγαίνετε από το μενού SQL Workshop και επιλέγετε το SQL Commands 1. Δημιουργία

Διαβάστε περισσότερα

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

Διαχείριση Πολιτισμικών Δεδομένων Διαχείριση Πολιτισμικών Δεδομένων Μάθημα 7 Γλώσσα Ερωτημάτων SQL Τζανέτος Πομόνης ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Συντήρησης Πολιτισμικής Κληρονομιάς Βασικές Έννοιες Σχεσιακή

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ Εισαγωγή στη MySQL Νικόλαος Ζ. Ζάχαρης Τι είναι η MySql Είναι ένα Σχεσιακό Σύστημα Διαχείρισης

Διαβάστε περισσότερα

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

Τμήμα Πληροφορικής ΑΠΘ 2013-2014 Βάσεις Δεδομένων Εργαστήριο V Τμήμα Πληροφορικής ΑΠΘ 2013-2014 2 Σκοπός του 5 ου εργαστηρίου Σκοπός αυτού του εργαστηρίου είναι: η μελέτη ερωτημάτων τροποποίησης δομής / δεδομένων η μελέτη σύνθετων ερωτημάτων

Διαβάστε περισσότερα

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

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Βάσεις εδοµένων 2011-2012 Ευαγγελία Πιτουρά 1 Εισαγωγή Μοντελοποίηση Στα προηγούµενα µαθήµατα: Εννοιολογικός Σχεδιασµός Βάσεων Δεδοµένων (µε

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

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

ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ ΚΕΡΑΜΟΠΟΥΛΟΣ ΕΥΚΛΕΙΔΗΣ Πίνακας Πεδίο Τύπος Κύριο κλειδί Αναφορική ακεραιότητα οντοτήτων Ξένο κλειδί Αναφορική ακεραιότητα δεδομένων Δρ. Κεραμόπουλος Ευκλείδης 2 ΚΥΡΙΟ ΚΛΕΙΔΙ ΦΟΙΤΗΤΗΣ ΑΜ CHAR(5) ΟΝΟΜΑ VARCHAR(20)

Διαβάστε περισσότερα

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

Σχεδίαση Βάσεων Δεδομένων Οδηγίες Μέρος 1: Απαντήστε κάθε ερώτηση. 1. Ποια είναι τα πλεονεκτήματα που παρέχει το Περιβάλλον Βάσεων Δεδομένων της Oracle για τις επιχειρήσεις; Το σύστημα διαχείρισης βάσεων δεδομένων της Oracle δίνει

Διαβάστε περισσότερα

H SQL είναι η γλώσσα για όλα τα εμπορικά σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων

H SQL είναι η γλώσσα για όλα τα εμπορικά σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων Η γλώσσα SQL H SQL είναι η γλώσσα για όλα τα εμπορικά σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων H SQL έχει διάφορα τμήματα: Γλώσσα Ορισμού Δεδομένων (ΓΟΔ) Γλώσσα Χειρισμού Δεδομένων (ΓΧΔ) Ενσωματωμένη

Διαβάστε περισσότερα

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ. Επιλέγει όλες τις πλειάδες, από μια σχέση R, που ικανοποιούν τη συνθήκη επιλογής. ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Χειμερινό Εξάμηνο 2012 SQL Structured Query Language Δρ. Βαγγελιώ Καβακλή ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΙΓΑΙΟΥ, ΤΜΗΜΑ ΠΟΛΙΤΙΣΜΙΚΗΣ ΤΕΧΝΟΛΟΓΙΑΣ ΚΑΙ ΕΠΙΚΟΙΝΩΝΙΑΣ 1 Πράξεις της σχεσιακής άλγεβρας ΠΡΑΞΗ ΣΚΟΠΟΣ

Διαβάστε περισσότερα

Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι

Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι Απλά ερωτήματα Επιλογής Ερωτήματα με Ενώσεις πινάκων Ερωτήματα με Παραμετρικά Κριτήρια Ερωτήματα με Υπολογιζόμενα πεδία Απλά ερωτήματα Επιλογής Τα Ερωτήματα μας επιτρέπουν

Διαβάστε περισσότερα

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

ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ Η συνθήκη WHERE βάζει περιορισμούς στις εγγραφές που επιστρέφονται. Ο όρος ORDER BY ταξινομεί τις εγγραφές που επιστρέφονται. Παράδειγμα: SELECT * FROM table_name ORDER

Διαβάστε περισσότερα

Σχεδίαση και λειτουργία βάσης δεδομένων Το παράδειγμα της μαιευτικής κλινικής Ευάγγελος Καρβούνης

Σχεδίαση και λειτουργία βάσης δεδομένων Το παράδειγμα της μαιευτικής κλινικής Ευάγγελος Καρβούνης Σχεδίαση και λειτουργία βάσης δεδομένων Το παράδειγμα της μαιευτικής κλινικής Ευάγγελος Καρβούνης Περιεχόμενα 1 Γενική περιγραφή του προβλήματος 2 Μοντελοποίηση Ο/Σ 3 Σχεσιακό μοντέλο, SQL 4 Ερωτήματα

Διαβάστε περισσότερα

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL ΗΥ360 - ΑΡΧΕΙΑ ΚΑΙ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL ΛΙΛΙΤΣΗΣ ΠΡΟΔΡΟΜΟΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ SQL - STRUCTURED QUERY LANGUAGE 2 Μια γλώσσα επερωτήσεων για τη διαχείριση Σχεσιακών Βάσεων

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ ΜΕΡΟΣ ΤΡΙΤΟ Foreign key, Index, DML Ερωτήµατα Γιώργος Μαρκοµανώλης Περιεχόµενα Foreign Key... 1 Index... 4 DML Ερωτήµατα... 6 INSERT...

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Β. Μεγαλοοικονόμου, Δ. Χριστοδουλάκης Σχεσιακό Μοντέλο SQLΜέρος Α Ακ.Έτος 2008-09 (μεβάσητιςσημειώσειςτωνsilberchatz, Korth και Sudarshan και του C. Faloutsos

Διαβάστε περισσότερα

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

ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 3 ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΨΗΦΙΑΚΩΝ ΣΥΣΤΗΜΑΤΩΝ ΣΧΕΔΙΑΣΜΟΣ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ ΕΡΓΑΣΤΗΡΙΟ 3 ΔΕΣΠΟΙΝΑ ΠΑΠΑΚΩΝΣΤΑΝΤΙΝΟΥ dpap@unipi.gr 2 ΤΙ ΕΙΝΑΙ Η SQL? (1/2) Η SQL (Structured Query Language) αποτελεί μια πρότυπη

Διαβάστε περισσότερα

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

Σχεδιασμός Βάσεων Δεδομένων Πανεπιστήμιο Πειραιώς Τμήμα Ψηφιακών Συστημάτων Σχεδιασμός Βάσεων Δεδομένων Εργαστήριο 4 Δρ. Βασιλική Κούφη Περιεχόμενα Υλοποίηση Βάσεως Δεδομένων Εκτέλεση ερωτημάτων SQL στην Βάση Δεδομένων BHMA 1. Σχεδιασμός

Διαβάστε περισσότερα

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Ενότητα 3:

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

Διαβάστε περισσότερα

SQL Data Manipulation Language

SQL Data Manipulation Language SQL Data Manipulation Language Τελεστής union συνδυάζει subselects τα οποία παράγουν συμβατές σχέσεις γενική μορφή: subselect {union [all] subselect} περιορισμός: τα subselects δεν μπορούν να περιέχουν

Διαβάστε περισσότερα

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

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples Ξένου Ρουμπίνη ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης Φροντιστήριο SQL Examples Ξένου Ρουμπίνη 1 SQL-DDL Data Definition/Description Language (DDL): προσδιορίζουν τη δομή ή το σχήμα των δεδομένων.

Διαβάστε περισσότερα

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

Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Ορισµοί Σχεσιακού Μοντέλου και Τροποποιήσεις Σχέσεων σε SQL Βάσεις εδοµένων 2012-2013 Ευαγγελία Πιτουρά 1 Εισαγωγή Μοντελοποίηση Στα προηγούμενα μαθήματα: Εννοιολογικός Σχεδιασμός Βάσεων Δεδομένων (με

Διαβάστε περισσότερα

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL

ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL ΓΙΑΝΝΗΣ ΑΓΑΘΑΓΓΕΛΟΣ ΤΜΗΜΑ ΕΠΙΣΤΗΜΗΣ ΥΠΟΛΟΓΙΣΤΩΝ ΗΥ360 - ΑΡΧΕΙΑ ΚΑΙ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΦΡΟΝΤΙΣΤΗΡΙΟ ΣΤΗ ΓΛΩΣΣΑ SQL SQL SQL - STRUCTURED QUERY LANGUAGE 2 Μια γλώσσα επερωτήσεων για τη διαχείριση Σχεσιακών

Διαβάστε περισσότερα

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

Τεχνολογία Πολιτισμικού Λογισμικού Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Τεχνολογία Πολιτισμικού Λογισμικού Ενότητα 10: Γλώσσα Ερωτημάτων SQL Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και αν αναφέρεται

Διαβάστε περισσότερα

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

GROUP BY, HAVING, COUNT, MIN, MAX, SUM, AVG, ROLLUP. SQL: Ερωτήματα ομαδοποίησης και συνάθροισης GROUP BY, HAVING, COUNT, MIN, MAX, SUM, AVG, ROLLUP Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2016 1 / 56 Περιεχόμενα 1 Εισαγωγή, γενικές

Διαβάστε περισσότερα

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

Βάσεις δεδομένων. (7 ο μάθημα) Ηρακλής Βαρλάμης Βάσεις δεδομένων (7 ο μάθημα) Ηρακλής Βαρλάμης varlamis@hua.gr Περιεχόμενα SQL Βασικές πράξεις Πράξεις συνόλων Συνενώσεις Συναθροιστικές συναρτήσεις Ομαδοποιήσεις 10/4/2014 Βάσεις Δεδομένων 2 Η γλώσσα

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Β. Μεγαλοοικονόμου, Δ. Χριστοδουλάκης Σχεσιακό Μοντέλο SQL- Μέρος Β Ακ.Έτος 2008-09 (μεβάσητιςσημειώσειςτωνsilberchatz, Korth και Sudarshan και του C. Faloutsos

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων. Εργαστήριο ΙV. Τμήμα Πληροφορικής ΑΠΘ 2014-2015 Βάσεις Δεδομένων Εργαστήριο ΙV Τμήμα Πληροφορικής ΑΠΘ 2014-2015 2 Σκοπός του 4 ου εργαστηρίου Σκοπός αυτού του εργαστηρίου είναι: η μελέτη ερωτημάτων σύνδεσης η μελέτη ερωτημάτων συνάθροισης 3 Εκφράσεις

Διαβάστε περισσότερα

Η SQL ως γλώσσα τροποποίησης Δεδομένων

Η SQL ως γλώσσα τροποποίησης Δεδομένων Η SQL ως γλώσσα τροποποίησης Δεδομένων Τροποποίηση Βάσης Δεδομένων: Γλώσσα Χειρισμού Δεδομένων (ΓXΔ) Τροποποιήσεις 1. Διαγραφή 2. Εισαγωγή 3. Ενημέρωση Οι εντολές αυτές ΤΡΟΠΟΠΟΙΟΥΝ το στιγμιότυπο της βάσης

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΕΡΓΑΣΤΗΡΙΟ ΒΑΣΕΩΝ Ε ΟΜΕΝΩΝ ΜΕΡΟΣ ΤΕΤΑΡΤΟ Insert, Update, Delete, Ένωση πινάκων Γιώργος Μαρκοµανώλης Περιεχόµενα Group By... 1 Having...1 Οrder By... 2 Εντολή Insert...

Διαβάστε περισσότερα

DELETE, UPDATE, INSERT

DELETE, UPDATE, INSERT Ενημέρωση βάσης δεδομένων με SQL DELETE, UPDATE, INSERT Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr astavrak@uoi.gr @AStavrakoudis Άνοιξη 2016 1 / 103 Περιεχόμενα 1 Γενικά για την αποθήκευση

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων. Βασίλειος Βεσκούκης Εισαγωγή στη γλώσσα SQL (Structured Query Language) Η γλώσσα SQL Εθνικό Μετσόβιο ολυτεχνείο Σχολή Αγρονόμων Τοπογράφων Μηχανικών Βάσεις Δεδομένων Βασίλειος Βεσκούκης v.vescoukis@cs.ntua.gr Εισαγωγή στη γλώσσα SQL (Structured Query Language) Η γλώσσα SQL Η γλώσσα SQL

Διαβάστε περισσότερα

Οψεις (VIEWS) στην SQL Η εντολή CREATE VIEW Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 1 / 55 Περιεχόμενα 1 Εισαγωγικά για τις όψεις 2 Οψεις και συζεύξεις 3 Επιπλέον χρήση των όψεων

Διαβάστε περισσότερα

Βάσεις Δεδομένων (Ε) Εισαγωγή στην υλοποίηση σχεσιακών βάσεων δεδομένων

Βάσεις Δεδομένων (Ε) Εισαγωγή στην υλοποίηση σχεσιακών βάσεων δεδομένων Βάσεις Δεδομένων (Ε) Εισαγωγή στην υλοποίηση σχεσιακών βάσεων δεδομένων Εισαγωγή στη χρήση της γλώσσας SQL και στον προγραμματισμό εφαρμογών βάσεων δεδομένων Θα χρησιμοποιήσουμε το Σχεσιακό Σύστημα (προϊόν)

Διαβάστε περισσότερα

DELETE, UPDATE, INSERT.

DELETE, UPDATE, INSERT. Ενημέρωση βάσης δεδομένων με SQL DELETE, UPDATE, INSERT Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 1 / 88 Περιεχόμενα 1 Γενικά για την αποθήκευση δεδομένων και την ενημέρωση της

Διαβάστε περισσότερα

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων Ενότητα 4 Επεξεργασία πινάκων 36 37 4.1 Προσθήκη πεδίων Για να εισάγετε ένα πεδίο σε ένα πίνακα που υπάρχει ήδη στη βάση δεδομένων σας, βάζετε τον κέρσορα του ποντικιού στο πεδίο πάνω από το οποίο θέλετε

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ ΤΡΙΤΟ ΕΝΤΟΛΕΣ SQL

ΚΕΦΑΛΑΙΟ ΤΡΙΤΟ ΕΝΤΟΛΕΣ SQL ΚΕΦΑΛΑΙΟ ΤΡΙΤΟ ΕΝΤΟΛΕΣ SQL 3.1 Εντολή επιλογής δεδομένων Η εντολή επιλογής δεδομένων select έχει την γενική μορφή SELECT FROM [WHERE ] [GROUP BY ]

Διαβάστε περισσότερα

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY. Η γλώσσα ορισμού δεδομένων της SQL Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr Άνοιξη 2014 Περιεχόμενα 1 Δημιουργία πινάκων με την

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 2 η Τύποι Δεδομένων Δήλωση Μεταβλητών Έξοδος Δεδομένων Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα

Διαβάστε περισσότερα

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

SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 SQL Βάσεις Δεδομένων 2013-2014 Ευαγγελία Πιτουρά 1 Τι είδαμε μέχρι τώρα Δύο γλώσσες ερωτήσεων που αποτελούν το θεωρητικό υπόβαθρο Σχεσιακή άλγεβρα: μια άλγεβρα συνόλων που αφορά πράξεις πάνω σε σχέσεις

Διαβάστε περισσότερα

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY.

Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY. Η γλώσσα ορισμού δεδομένων της SQL Οι εντολές CREATE TABLE, ALTER TABLE, CREATE KEY, ALTER KEY Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr astavrak@uoi.gr @AStavrakoudis Άνοιξη 2016 1 / 85 Περιεχόμενα

Διαβάστε περισσότερα

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL

ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PASCAL 8.1. Εισαγωγή ΚΕΦΑΛΑΙΟ 8 Η ΓΛΩΣΣΑ PACAL Πως προέκυψε η γλώσσα προγραμματισμού Pascal και ποια είναι τα γενικά της χαρακτηριστικά; Σχεδιάστηκε από τον Ελβετό επιστήμονα της Πληροφορικής Nicklaus Wirth to

Διαβάστε περισσότερα

Κεφάλαιο 10 Άλλες Πράξεις Θεωρίας Συνόλων

Κεφάλαιο 10 Άλλες Πράξεις Θεωρίας Συνόλων Κεφάλαιο 10 Άλλες Πράξεις Θεωρίας Συνόλων Σύνοψη Στο παρόν κεφάλαιο θα παρουσιαστεί η πράξη της διαίρεσης. Στο κομμάτι των ασκήσεων θα γίνει συνολική επισκόπηση ερωτημάτων που εμπλέκουν πράξεις συνόλων.

Διαβάστε περισσότερα

Υποερωτήματα στην SQL Αθανάσιος Σταυρακούδης http://stavrakoudis.econ.uoi.gr 1 / 31 Η ανάγκη για υποερώτημα Ποιος υπάλληλος παίρνει το μεγαλύτερο μισθό; Αν ξέραμε το μεγαλύτερο μισθό, πχ 2000, θα γράφαμε:

Διαβάστε περισσότερα

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

Ηλεκτρονικοί Υπολογιστές II ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ηλεκτρονικοί Υπολογιστές II SQL Ερωτήματα ομαδοποίησης και συνάθροισης Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

Βάσεις Δεδομένων 3η εργαστηριακή άσκηση

Βάσεις Δεδομένων 3η εργαστηριακή άσκηση Βάσεις Δεδομένων 3η εργαστηριακή άσκηση Εισαγωγή στο περιβάλλον της oracle Συσχέτιση πινάκων (εισαγωγή ξένων κλειδιών) Δρ. Μαρία Ευθυμιοπούλου 1. Εμφάνιση πινάκων στο Workspace Στο προηγούμενο εργαστήριο

Διαβάστε περισσότερα

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ - ΤΜΗΥΠ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι Β. Μεγαλοοικονόμου, Δ. Χριστοδουλάκης Query by Example QBE Ακ.Έτος 2008-09 (μεβάσητιςσημειώσειςτωνsilberchatz, Korth και Sudarshan και του C. Faloutsos CMU)

Διαβάστε περισσότερα

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

ΗΓλώσσαSQL. Εισαγωγή Βασικές Έννοιες Τύποι Δεδομένων Ορισμός Δεδομένων Χειρισμός Δεδομένων ΗΓλώσσαSQL Εισαγωγή Βασικές Έννοιες Τύποι Δεδομένων Ορισμός Δεδομένων Χειρισμός Δεδομένων Εισαγωγή Η δομημένη γλώσσα ερωτημάτων SQL (Structured Query Language) χρησιμοποιείται για τους χρήστες του ΣΔΒΔ

Διαβάστε περισσότερα

SQL Τύποι Δεδομένων Δημιουργία Πίνακα Παράδειγμα.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (1)

SQL Τύποι Δεδομένων Δημιουργία Πίνακα Παράδειγμα.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (1) Εργαστήριο Βάσεων Δεδομένων Εισαγωγή στη My (1) Η (Structured Query Language) είναι μια πλήρης γλώσσα Βάσεων Δεδομενων Είναι δομημένη σε βάσεις που περιέχουν πίνακες Οι πίνακες αποτελούνται από γραμμές

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός. Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός

Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός. Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός 7 Σχεσιακή Άλγεβρα και Σχεσιακός Λογισμός Σχεσιακή Άλγεβρα Σχεσιακός Λογισμός Σχεσιακή Άλγεβρα H Σχεσιακή Άλγεβρα (relational algebra) ορίζει ένα σύνολο πράξεων που εφαρμόζονται σε μία ή περισσότερες σχέσεις

Διαβάστε περισσότερα

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

Τμήμα Πληροφορικής ΑΠΘ Βάσεις Δεδομένων Εργαστήριο ΙΙI Τμήμα Πληροφορικής ΑΠΘ 2013-2014 2 Σκοπός του 3 ου εργαστηρίου Σκοπός αυτού του εργαστηρίου είναι: η μελέτη ερωτημάτων επιλογής, προβολής και απλών συνδέσεων σε δύο ή περισσότερες

Διαβάστε περισσότερα

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

Εισαγωγή στην πληροφορική Τμήμα Μηχανικών Πληροφορικής & Τηλεπικοινωνιών Εισαγωγή στην πληροφορική Ενότητα 6: Εισαγωγή στις βάσεις δεδομένων (Μέρος Β) Αγγελίδης Παντελής Τμήμα Μηχανικών Πληροφορικής και Τηλεπικοινωνιών Άδειες Χρήσης

Διαβάστε περισσότερα

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

SQL. Βάσεις Δεδομένων Ευαγγελία Πιτουρά 1 SQL 1 Τι είδαμε μέχρι τώρα Δύο γλώσσες ερωτήσεων που αποτελούν το θεωρητικό υπόβαθρο Σχεσιακή άλγεβρα: μια άλγεβρα συνόλων που αφορά πράξεις πάνω σε σχέσεις Σχεσιακό λογισμό (πλειάδων): δηλωτικό τρόπο

Διαβάστε περισσότερα

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - SQL

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - SQL ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - SQL Διδάσκων του μαθήματος 2 Δρ. Λεωνίδας Φραγγίδης Επίκουρος Καθηγητής Τμήμα Διοίκησης Επιχειρήσεων ΤΕΙ ΑΜΘ Email: fragidis@teiemt.gr Ώρες Γραφείου: Τρίτη (10:00 12:00) Προτεινόμενα

Διαβάστε περισσότερα

Το Σχεσιακό Μοντέλο. Βάσεις Δεδομένων 2014-2015. Ευαγγελία Πιτουρά 1

Το Σχεσιακό Μοντέλο. Βάσεις Δεδομένων 2014-2015. Ευαγγελία Πιτουρά 1 Το Σχεσιακό Μοντέλο Ευαγγελία Πιτουρά 1 Μοντελοποίηση Σχήμα (database schema): η περιγραφή της δομής της πληροφορίας που είναι αποθηκευμένη στη βδ με τη χρήση ενός μοντέλου δεδομένων Μοντέλο Δεδομένων:

Διαβάστε περισσότερα

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

Τεχνολογία Πολιτισμικού Λογισμικού Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων Τεχνολογία Πολιτισμικού Λογισμικού Ενότητα 12: SQL και πολιτισμικά δεδομένα Το περιεχόμενο του μαθήματος διατίθεται με άδεια Creative Commons εκτός και

Διαβάστε περισσότερα

Βάσεις Δεδομένων 2η εργαστηριακή άσκηση

Βάσεις Δεδομένων 2η εργαστηριακή άσκηση Βάσεις Δεδομένων 2η εργαστηριακή άσκηση Εισαγωγή στο περιβάλλον της oracle Δημιουργία πινάκων Δρ. Εύη Φαλιάγκα 1. Login Χρησιμοποιώντας έναν web explorer, μπαίνετε στο http://10.0.0.6:8080/apex και συμπληρώνετε

Διαβάστε περισσότερα

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

Αρχεία και Βάσεις Δεδομένων ΕΛΛΗΝΙΚΗ ΔΗΜΟΚΡΑΤΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ Αρχεία και Βάσεις Δεδομένων Διάλεξη 10η: SQL Μέρος 3ο Δημήτρης Πλεξουσάκης Τμήμα Επιστήμης Υπολογιστών SQL Data Manipulation Language Τελεστής union συνδυάζει subselects

Διαβάστε περισσότερα

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

Ηλεκτρονικοί Υπολογιστές II ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ηλεκτρονικοί Υπολογιστές II Όψεις (views) στην SQL Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται

Διαβάστε περισσότερα

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

Ηλεκτρονικοί Υπολογιστές II ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ηλεκτρονικοί Υπολογιστές II Ενημέρωση βάσης δεδομένων με τις εντολές INSERT, DELETE, UPDATE Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Άδειες

Διαβάστε περισσότερα

Εργαστήριο βάσεων δεδομένων. Εισαγωγή στη MySQL (2)

Εργαστήριο βάσεων δεδομένων. Εισαγωγή στη MySQL (2) Εργαστήριο βάσεων δεδομένων Εισαγωγή στη MySQL (2) Παράδειγμα - ER Παράδειγμα-Σχεσιακό Παράδειγμα Δημιουργία Πινάκων CREATE TABLE student( name VARCHAR(25) DEFAULT 'unknown' NOT NULL, lastnamevarchar(25)

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Δομημένος Προγραμματισμός (ΤΛ1006)

Δομημένος Προγραμματισμός (ΤΛ1006) Τεχνολογικό Εκπαιδευτικό Ίδρυμα Κρήτης Σχολή Εφαρμοσμένων Επιστημών Τμήμα Ηλεκτρονικών Μηχανικών Τομέας Αυτοματισμού και Πληροφορικής Δομημένος Προγραμματισμός (ΤΛ1006) Δρ. Μηχ. Νικόλαος Πετράκης, Καθηγητής

Διαβάστε περισσότερα

ΘΕΜΑΤΑ. Θέμα 1 ο Σύμφωνα με τους παραπάνω πίνακες και τη θέση που έχουν τα ξένα κλειδιά βρείτε τους

ΘΕΜΑΤΑ. Θέμα 1 ο Σύμφωνα με τους παραπάνω πίνακες και τη θέση που έχουν τα ξένα κλειδιά βρείτε τους ΘΕΜΑΤΑ A Οι παρακάτω πίνακες αποτελούνται από τα εξής πεδία : ΕΡΓΑΖΟΜΕΝΟΣ : ΑΦΜ, ΕΠΙΘΕΤΟ, ΟΝΟΜΑ, ΤΗΛ, ΟΔΟΣ, ΠΟΛΗ,ΜΙΣΘΟΣ, ΚΤ ΤΜΗΜΑ : ΚΤ, ΑΦΜ, ΤΙΤΛΟΣ_ΤΜΗΜΑΤΟΣ, ΤΗΛ ΕΡΓΑ : ΚΕΡ, ΠΕΡΙΓΡΑΦΗ, ΤΟΠΟΘΕΣΙΑ, ΠΡΟΫΠΟΛΟΓΙΣΜΟΣ

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΑΝΑΠΤΥΞΗ ΚΑΙ ΣΧΕΔΙΑΣΗ ΛΟΓΙΣΜΙΚΟΥ Η γλώσσα προγραμματισμού C ΕΡΓΑΣΤΗΡΙΟ 2: Εκφράσεις, πίνακες και βρόχοι 14 Απριλίου 2016 Το σημερινό εργαστήριο

Διαβάστε περισσότερα

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

Ηλεκτρονικοί Υπολογιστές II ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ ΑΝΟΙΚΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ηλεκτρονικοί Υπολογιστές II Εντολές ορισμού δεδομένων (DDL) στην SQL Διδάσκων: Επίκουρος Καθηγητής Αθανάσιος Σταυρακούδης Άδειες Χρήσης Το παρόν εκπαιδευτικό

Διαβάστε περισσότερα

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

Βάσεις Δεδομένων Σύνθετα SQL queries Βάσεις Δεδομένων Σύνθετα SQL queries Παύλος Εφραιμίδης Βάσεις Δεδομένων SQL - Μέρος Δεύτερο 1 Ασάφεια και Πλήρη Ονόματα Ονόματα Πεδίων: Στην SQL, τα ονόματα των πεδίων (γνωρισμάτων) σε κάθε σχέση είναι

Διαβάστε περισσότερα

Βάσεις Δεδομένων. Ενότητα 6: Γλώσσα Structured Query Language -SQL. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών

Βάσεις Δεδομένων. Ενότητα 6: Γλώσσα Structured Query Language -SQL. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών Βάσεις Δεδομένων Ενότητα 6: Γλώσσα Structured Query Language -SQL Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για

Διαβάστε περισσότερα

Ανοικτά Ακαδημαϊκά Μαθήματα

Ανοικτά Ακαδημαϊκά Μαθήματα Ανοικτά Ακαδημαϊκά Μαθήματα Τεχνολογικό Εκπαιδευτικό Ίδρυμα Αθήνας Case Study: Σύστημα Διαχείρισης Βάσης Βιβλιοθήκης (Library Information System) - Μοντελοποίηση και Κανονικοποίηση - Υλοποίηση με χρήση

Διαβάστε περισσότερα

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

Kεφ.2: Σχεσιακό Μοντέλο (επανάληψη) Κεφ.6.1: Σχεσιακή Άλγεβρα Kεφ.2: Σχεσιακό Μοντέλο (επανάληψη) Κεφ.6.1: Σχεσιακή Άλγεβρα Database System Concepts, 6 th Ed. Silberschatz, Korth and Sudarshan See www.db-book.com for conditions on re-use Παράδειγμα Σχέσης attributes

Διαβάστε περισσότερα

A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ

A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ. Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ A ΕΠΑ.Λ ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 5 η ΕΝΟΤΗΤΑ: ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Εκπαιδευτικοί: ΓΑΛΑΝΟΣ ΓΕΩΡΓΙΟΣ ΜΠΟΥΣΟΥΝΗΣ ΚΩΝΣΤΑΝΤΙΝΟΣ 1 Βάση Δεδομένων: Με το όρο Βάση Δεδομένων εννοούμε ένα σύνολο δεδομένων που είναι οργανωμένο

Διαβάστε περισσότερα

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή Επεξεργασία Ερωτήσεων ΜΕΡΟΣ 1 Γενική Εικόνα του Μαθήματος 1. Μοντελοποίηση (Μοντέλο Ο/Σ, Σχεσιακό, Λογικός Σχεδιασμός) 2. Προγραμματισμός (Σχεσιακή Άλγεβρα, SQL) ημιουργία/κατασκευή Εισαγωγή εδομένων

Διαβάστε περισσότερα

Τα συγκεντρωτικά ερωτήματα αφορούν στην ομαδοποίηση των δεδομένων και στη. χρήση συναρτήσεων ομαδοποίησης κατά την εκτέλεση ενός ερωτήματος προβολής

Τα συγκεντρωτικά ερωτήματα αφορούν στην ομαδοποίηση των δεδομένων και στη. χρήση συναρτήσεων ομαδοποίησης κατά την εκτέλεση ενός ερωτήματος προβολής Εργαστήριο 8 ο Συγκεντρωτικά ερωτήματα Ερωτήματα διασταύρωσης Ερωτήματα Ενεργειών Συγκεντρωτικά ερωτήματα Τα συγκεντρωτικά ερωτήματα αφορούν στην ομαδοποίηση των δεδομένων και στη χρήση συναρτήσεων ομαδοποίησης

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή Επεξεργασία Ερωτήσεων Σ Β Βάση εδομένων Η ομή ενός ΣΒ Βάσεις Δεδομένων 2006-2007 Ευαγγελία Πιτουρά 1 Βάσεις Δεδομένων 2006-2007 Ευαγγελία Πιτουρά 2 Εισαγωγή Εισαγωγή ΜΕΡΟΣ 1 (Χρήση Σ Β ) Γενική

Διαβάστε περισσότερα

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

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

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python

ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ. Εισαγωγή στη Python ΠΑΝΕΠΙΣΤΗΜΙΟ AΙΓΑIΟΥ & ΑΕΙ ΠΕΙΡΑΙΑ Τ.Τ. Τμήματα Ναυτιλίας και Επιχειρηματικών Υπηρεσιών & Μηχ. Αυτοματισμού ΤΕ ΠΛΗΡΟΦΟΡΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΚΑΙ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Εισαγωγή στη Python Νικόλαος Ζ. Ζάχαρης Αναπληρωτής

Διαβάστε περισσότερα

Διαδικασιακός Προγραμματισμός

Διαδικασιακός Προγραμματισμός Τμήμα ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΤΕ ΤΕΙ ΔΥΤΙΚΗΣ ΕΛΛΑΔΑΣ Διαδικασιακός Προγραμματισμός Διάλεξη 13 η Δομές & Ενώσεις Οι διαλέξεις βασίζονται στο βιβλίο των Τσελίκη και Τσελίκα C: Από τη Θεωρία στην Εφαρμογή

Διαβάστε περισσότερα

Επεξεργασία Ερωτήσεων

Επεξεργασία Ερωτήσεων Εισαγωγή Σ Β Σύνολο από προγράμματα για τη διαχείριση της Β Επεξεργασία Ερωτήσεων Αρχεία ευρετηρίου Κατάλογος συστήματος Αρχεία δεδομένων ΒΑΣΗ Ε ΟΜΕΝΩΝ Σύστημα Βάσεων εδομένων (ΣΒ ) Βάσεις Δεδομένων 2007-2008

Διαβάστε περισσότερα

Πατώντας την επιλογή αυτή, ανοίγει ένα παράθυρο που έχει την ίδια μορφή με αυτό που εμφανίζεται όταν δημιουργούμε μία μεταβλητή.

Πατώντας την επιλογή αυτή, ανοίγει ένα παράθυρο που έχει την ίδια μορφή με αυτό που εμφανίζεται όταν δημιουργούμε μία μεταβλητή. Λίστες Τι είναι οι λίστες; Πολλές φορές στην καθημερινή μας ζωή, χωρίς να το συνειδητοποιούμε, χρησιμοποιούμε λίστες. Τέτοια παραδείγματα είναι η λίστα του super market η οποία είναι ένας κατάλογος αντικειμένων

Διαβάστε περισσότερα

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

Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 2 Η Γλώσσα SQL Βάσεις εδοµένων 2002-2003 Ευαγγελία Πιτουρά 1 Η γλώσσα SQL What men or gods are these? What maidens loth? What mad pursuit? What struggle to escape? What pipes and timbrels? What wild ectasy?

Διαβάστε περισσότερα

Πανεπιστήµιο Ιωαννίνων Τµήµα Μαθηµατικών Μάθηµα: Βάσεις εδοµένων (741) Εργαστηριακό Τεστ Οµάδα: Α 18/11/2004

Πανεπιστήµιο Ιωαννίνων Τµήµα Μαθηµατικών Μάθηµα: Βάσεις εδοµένων (741) Εργαστηριακό Τεστ Οµάδα: Α 18/11/2004 Πανεπιστήµιο Ιωαννίνων Τµήµα Μαθηµατικών Μάθηµα: Βάσεις εδοµένων (741) Εργαστηριακό Τεστ Οµάδα: Α 18/11/2004 Θέλουµε να φτιάξουµε µια βάση στην οποία θα καταχωρούνται οι φοιτητές του τµήµατος Μαθηµατικών,

Διαβάστε περισσότερα

Εργαστήριο βάσεων δεδομένων. Εισαγωγή στη MySQL (2)

Εργαστήριο βάσεων δεδομένων. Εισαγωγή στη MySQL (2) Εργαστήριο βάσεων δεδομένων Εισαγωγή στη MySQL (2) Παράδειγμα -ER Παράδειγμα-Σχεσιακό Παράδειγμα Δημιουργία Πινάκων CREATE TABLE student( name VARCHAR(25) DEFAULT 'unknown' NOT NULL, lastname VARCHAR(25)

Διαβάστε περισσότερα

Βασικές Εντολές SQL. Θεωρία & Εντολές SQL. Γραμμή Εντολών MS-DOS (MySQL)

Βασικές Εντολές SQL. Θεωρία & Εντολές SQL. Γραμμή Εντολών MS-DOS (MySQL) Βασικές Εντολές SQL Θεωρία & Εντολές SQL Γραμμή Εντολών MS-DOS (MySQL) Ο καλός σχεδιασμός μιας Β.Δ είναι σημαντικός για την ανάπτυξη μιας εφαρμογής με υψηλή απόδοση. Γι αυτό τον λόγο μια Β.Δ θα πρέπει

Διαβάστε περισσότερα

Βάσεις Δεδομένων Ευαγγελία Πιτουρά 2. Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων)

Βάσεις Δεδομένων Ευαγγελία Πιτουρά 2. Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων) Σχεσιακή Άλγεβρα Βάσεις Δεδομένων 2009-2010 Ευαγγελία Πιτουρά 1 Εισαγωγή Στα προηγούμενα μαθήματα: Εννοιολογικός Σχεδιασμός Βάσεων εδομένων (με χρήση του Μοντέλου Οντοτήτων/Συσχετίσεων) Λογικός Σχεδιασμός

Διαβάστε περισσότερα

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ ΣΤΑΘΕΡΕΣ είναι τα μεγέθη που δεν μεταβάλλονται κατά την εκτέλεση ενός αλγόριθμου. Εκτός από τις αριθμητικές σταθερές (7, 4, 3.5, 100 κλπ), τις λογικές σταθερές (αληθής και ψευδής)

Διαβάστε περισσότερα

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

Διαχείριση Πολιτισμικών Δεδομένων Διαχείριση Πολιτισμικών Δεδομένων Μάθημα 8 Ερωτήματα σε SQL Τζανέτος Πομόνης ΤΕΙ Ιονίων Νήσων Τμήμα Τεχνολόγων Περιβάλλοντος Κατεύθυνση Συντήρησης Πολιτισμικής Κληρονομιάς Μοντέλο Οντοτήτων-Συσχετίσεων

Διαβάστε περισσότερα