SlideShare a Scribd company logo
1 of 283
ΕΚΠΑΙΔΕΥΤΗΣ
Νίκος Μπαλατσούκας
Η γλώσσα SQL
Η γλώσσα SQL
 Η SQL αποτελείται από δύο βασικά μέρη: τη
γλώσσα SQL Ορισμού Δεδομένων (SQL DDL) και τη
γλώσσα SQL χειρισμού δεδομένων (SQL DML).
 Με την γλώσσα ορισμού δεδομένων ορίζεται το
σχήμα των δεδομένων, δηλαδή η μορφή τους, ενώ
με τη γλώσσα χειρισμού δεδομένων ορίζονται οι
λειτουργίες αποθήκευσης και ανάκτησης των
δεδομένων.
Η γλώσσα SQL
 Επομένως η γλώσσα SQL περιέχει εντολές για τη
δημιουργία και την επεξεργασία της μορφής των
πινάκων (ορισμός δεδομένων), αλλά και εντολές
για την εισαγωγή, ενημέρωση, διαγραφή και
ανάκτηση των δεδομένων που είναι αποθηκευμένα
σε πίνακες (χειρισμός δεδομένων).
Η γλώσσα SQL
 Αν για παράδειγμα θέλουμε να αποθηκεύσουμε τα
στοιχεία των μαθητών ενός σχολείου σε σχεσιακή
βάση δεδομένων, θα χρησιμοποιήσουμε τη γλώσσα
SQL DDL για να δημιουργήσουμε τους σχεσιακούς
πίνακες και κατόπιν θα χρησιμοποιήσουμε τη
γλώσσα SQL DML για να εισάγουμε τα στοιχεία
των μαθητών και για να κάνουμε ερωτήσεις που θα
ανακτούν δεδομένα από τη βάση.
Σε ένα Σχεσιακό Σύστημα Διαχείρισης
Βάσεων Δεδομένων:
 Δημιουργώ πίνακες με τη Γλώσσα Ορισμού
Δεδομένων (DDL)
 Εισάγω δεδομένα στους σχεσιακούς πίνακες με τη
Γλώσσα Χειρισμού Δεδομένων (DML)
 Ενημερώνω/διαγράφω τα δεδομένα των πινάκων
με τη Γλώσσα Χειρισμού Δεδομένων (DML)
 Εκτελώ ερωτήματα ανάκτησης για τα δεδομένα
των πινάκων με τη Γλώσσα Χειρισμού Δεδομένων
(DML)
Η γλώσσα SQL
 Φυσικά η δημιουργία πινάκων και η
εισαγωγή/ενημέρωση/διαγραφή δεδομένων σε
αυτούς μπορεί να γίνει και με γραφικά εργαλεία
στα περισσότερα ΣΔΒΔ, όμως η χρήση της γλώσσας
SQL εξασφαλίζει ανεξαρτησία από τον
κατασκευαστή του συστήματος και εύκολη
μεταφορά των προγραμμάτων ανάμεσα σε
συστήματα κατασκευαστών.
DDL
 SQL Σχεσιακή Γλώσσα Ορισμού Δεδομένων (DDL)
 Μία Γλώσσα Ορισμού Δεδομένων (Data Definition
Language DDL) χρησιμοποιείται από τους
σχεδιαστές προγραμματιστές και από τους
διαχειριστές Βάσεων Δεδομένων για τον ορισμό
του σχήματος των δεδομένων, δηλαδή για να
καθοριστεί η μορφή με την οποία θα «βλέπουν» οι
χρήστες και τα προγράμματα τα αποθηκευμένα
δεδομένα.
DDL
 Τα ΣΔΒΔ διαθέτουν μεταφραστή της γλώσσας DDL
που υποστηρίζουν, ώστε να μετατρέπεται η
περιγραφή από DDL σε μορφή που μπορεί να
αποθηκευτεί.
 Τα σχεσιακά ΣΔΒΔ χρησιμοποιούν κατά κανόνα τη
γλώσσα SQL για τον ορισμό του σχεσιακού
σχήματος των δεδομένων.
DDL
 Η γλώσσα SQL DDL περιγράφει τους πίνακες, τα
πεδία (ή χαρακτηριστικά ή στήλες) από τα οποία
αποτελούνται οι πίνακες, το είδος ή τύπο
δεδομένων κάθε πεδίου και τους περιορισμούς για
τα πεδία των πινάκων.
Tύποι Δεδομένων της SQL
 Οι περισσότερες γλώσσες προγραμματισμού έχουν
τύπους δεδομένων, δηλαδή συγκεκριμένους
τρόπους αναπαράστασης των δεδομένων.
 Αυτό σημαίνει ότι δίνουν στον προγραμματιστή
συγκεκριμένες επιλογές για το είδος των στοιχείων
που θα επεξεργαστούν τα προγράμματά του.
Tύποι Δεδομένων της SQL
 Για παράδειγμα, σε ένα πρόγραμμα που
επεξεργάζεται βαθμούς μαθητών, ο
προγραμματιστής θα ορίσει τους προφορικούς
βαθμούς των τετραμήνων ως ακέραιους αριθμούς.
 Με άλλα λόγια, ο τύπος δεδομένων των
προφορικών βαθμών θα είναι ακέραιος αριθμός.
Tύποι Δεδομένων της SQL
 Η SQL που είναι γλώσσα προγραμματισμού
Βάσεων Δεδομένων, έχει τους δικούς της τύπους
δεδομένων, οι οποίοι χρησιμοποιούνται για να
καθοριστεί το είδος των στοιχείων που θα
αποθηκεύονται στους σχεσιακούς πίνακες.
Tύποι Δεδομένων της SQL
 Για να δημιουργηθεί ένας πίνακας με SQL, πρέπει
πρώτα να καθοριστούν τα πεδία από τα οποία θα
αποτελείται ο πίνακας. Τα πεδία καθορίζονται από
το όνομά τους και τον τύπο τους.
 Το όνομα κάθε πεδίου το επιλέγει ο σχεδιαστής και
είναι μία λέξη, π.χ. Τίτλος, Ονοματεπώνυμο,
Ημερομηνία_γέννησης, Έτος_δημιουργίας, Βαθμός,
κλπ.
Tύποι Δεδομένων της SQL
 Ο τύπος ενός πεδίου καθορίζει το είδος των
δεδομένων που μπορούν να αποθηκευτούν σε αυτό
το πεδίο.
 Ο τύπος αυτός είναι ένας από τους τύπους
δεδομένων που υποστηρίζει η γλώσσα SQL.
 Πριν μάθουμε επομένως πώς δημιουργούμε έναν
πίνακα σε SQL, πρέπει να μάθουμε ποιοι είναι οι
τύποι δεδομένων της SQL.
Tύποι Δεδομένων της SQL
 Η SQL υποστηρίζει διάφορους τύπους δεδομένων:
αριθμητικούς, αλφαριθμητικούς, ημερομηνίας,
ώρας, κλπ οι οποίοι επιλέγονται από το σχεδιαστή
της βάσης ανάλογα με τις ανάγκες.
 Για παράδειγμα, σε μια βάση δεδομένων που
αποθηκεύει στοιχεία για ταινίες κινηματογράφου,
ο τίτλος της ταινίας είναι μια φράση που
αποτελείται από αλφαριθμητικά στοιχεία, δηλαδή
γράμματα και σύμβολα.
Tύποι Δεδομένων της SQL
 Ο τύπος του πεδίου «Τίτλος» θα είναι επομένως
αλφαριθμητικός. Το κόστος δημιουργίας μιας
ταινίας όμως, είναι αριθμητικού τύπου. Στην
Εικόνα 4 1 βλέπουμε τον πίνακα «Ταινία» που
αποτελείται από τις στήλες «Τίτλος»,
«Έτος_δημιουργίας», «Σκηνοθέτης» και «Κόστος»
καθώς και τιμές για την ταινία «Το κύμα (Die
Welle)».
Tύποι Δεδομένων της SQL
 Σε ένα διαφορετικό παράδειγμα, αν θέλουμε να
αποθηκεύσουμε σε έναν πίνακα τιμές προϊόντων, η
τιμή κάθε προϊόντος σε ευρώ πρέπει να
αποθηκευτεί ως αριθμός με υποδιαστολή, π.χ. 4,25 .
Tύποι Δεδομένων της SQL
 Στα σχολεία, για να διευκολυνθεί η λειτουργία
τους, υπάρχει η ανάγκη αποθήκευσης δεδομένων
για τους καθηγητές, τους μαθητές, τα τμήματα, τα
μαθήματα, τις απουσίες, τους βαθμούς των
μαθητών, κλπ. Τα στοιχεία των μαθητών
περιλαμβάνουν το ονοματεπώνυμο και το
πατρώνυμό τους.
Αριθμητικοί τύποι δεδομένων της SQL
 Δύο βασικοί αριθμητικοί τύποι δεδομένων που
υποστηρίζονται από την SQL είναι οι ακέραιοι και
οι πραγματικοί αριθμοί.
 Οι ακέραιοι αριθμοί δεν έχουν υποδιαστολή, ενώ οι
πραγματικοί έχουν. Η λέξη που χρησιμοποιεί η SQL
για τον ορισμό πεδίων ακέραιου τύπου είναι
INTEGER, ενώ για τον ορισμό πεδίων πραγματικού
τύπου είναι FLOAT.
Αριθμητικοί τύποι δεδομένων της SQL
 Στο παράδειγμα των ταινιών κινηματογράφου
επομένως που αναφέρθηκε παραπάνω, το πεδίο
«Κόστος» είναι ακέραιου τύπου, δηλαδή τύπου
INTEGER.
 Στο παράδειγμα με τα προϊόντα, το πεδίο
«Τιμή_προϊόντος» είναι πραγματικού τύπου,
δηλαδή τύπου FLOAT γιατί οι τιμές έχουν και
δεκαδικό μέρος.
Αριθμητικοί τύποι δεδομένων της SQL
 Σε μια βάση δεδομένων Μαθητολογίου για την
αποθήκευση και διαχείριση των δεδομένων του
σχολείου, καταγράφεται η πληροφορία για τα
μαθήματα του προγράμματος σπουδών. Έτσι
δημιουργείται ο πίνακας «Μάθημα» που
αποτελείται από τις στήλες «Όνομα» και «Ώρες».
Αριθμητικοί τύποι δεδομένων της SQL
 Στον πίνακα Μάθημα αποθηκεύονται οι
πληροφορίες για όλα τα μαθήματα που
παρακολουθούν οι μαθητές του σχολείου. Οι
εβδομαδιαίες ώρες διδασκαλίας των μαθημάτων
που αποθηκεύονται στη στήλη «Ώρες», είναι
ακέραιος αριθμός.
Αλφαριθμητικοί τύποι δεδομένων της
SQL
 Οι αλφαριθμητικοί τύποι δεδομένων υποστηρίζουν
την αποθήκευση κειμένου, δηλαδή συμβολοσειρών
ή σειρών από χαρακτήρες, γι’ αυτό και συχνά
ονομάζονται τύποι ‘χαρακτήρων’.
 Η λέξη που χρησιμοποιεί η SQL για τον ορισμό
πεδίων τύπου χαρακτήρα (αλφαριθμητικού) είναι
CHARACTER.
Αλφαριθμητικοί τύποι δεδομένων της
SQL
 Η SQL δίνει τη δυνατότητα ορισμού του μεγέθους
μιας σειράς χαρακτήρων με την έκφραση
CHARACTER(N), όπου στη θέση του N
τοποθετείται ένας ακέραιος αριθμός που δηλώνει
το μέγεθος του πεδίου, δηλαδή περιορίζει τις τιμές
σε μέγεθος Ν.
 Ο τύπος CHARACTER VARYING(N) ή VARCHAR(N)
χρησιμοποιείται για τη δημιουργία πεδίων τύπου
χαρακτήρων μεταβλητού μεγέθους N.
Αλφαριθμητικοί τύποι δεδομένων της
SQL
 Στο παράδειγμα των μαθημάτων της
προηγούμενης παραγράφου, το πεδίο
«Όνομα_μαθήματος» είναι αλφαριθμητικού τύπου
και επειδή κάθε όνομα έχει διαφορετικό πλήθος
χαρακτήρων, το συγκεκριμένο πεδίο θα μπορούσε
να οριστεί ως τύπου VARCHAR(100) ώστε να
μπορέσει να αποθηκεύσει ονόματα μεταβλητού
μεγέθους και αρκετά μεγάλα ονόματα, μέχρι 100
χαρακτήρων.
Αλφαριθμητικοί τύποι δεδομένων της
SQL
 Στο Μαθητολόγιο του σχολείου, ένα άλλο πεδίο
που αποθηκεύεται για τους μαθητές είναι το φύλο
τους. Το φύλο μπορεί να πάρει τις τιμές ‘Άρρεν’ και
‘Θήλυ’ ή σε συντομία ‘Α’ ή ‘Θ’. Σε αυτή την
περίπτωση το φύλο μπορεί να οριστεί ως τύπου
CHARACTER(1).
Τύποι δεδομένων για την ημερομηνία
και την ώρα
 Πεδία που αποθηκεύουν ημερομηνία ή ώρα
μπορούν να οριστούν ως τύπου DATE, TIME ή
TIMESTAMP.
 Ο τύπος DATE μπορεί να αποθηκεύσει δεδομένα
που αποτελούνται από το έτος (YEAR) με τιμές από
0001 ως 9999, το μήνα (MONTH) και την ημέρα
(DAY)
Τύποι δεδομένων για την ημερομηνία
και την ώρα
 Ο τύπος TIME μπορεί να αποθηκεύσει τιμές που
αποτελούνται από την ώρα (HOUR), τα λεπτά
(MINUTE) και τα δευτερόλεπτα (SECOND).
 Ο τύπος TIMESTAMP μπορεί να αποθηκεύσει τιμές
που αποτελούνται από το έτος, το μήνα, την ημέρα,
την ώρα, τα λεπτά και τα δευτερόλεπτα.
Τύποι δεδομένων για την ημερομηνία
και την ώρα
 Επομένως, τιμές όπως ‘24 06 2015’ μπορούν να
αποθηκευτούν σε πεδία τύπου DATE, τιμές όπως
‘15:02:34’ μπορούν να αποθηκευτούν σε πεδία
τύπου TIME, ενώ τιμές όπως ‘24 06 2015 15:02:34’.
Στο παράδειγμα του Μαθητολογίου, η ημερομηνία
γέννησης ενός μαθητή μπορεί να αποθηκευτεί σε
πεδίο τύπου DATE.
CREATE TABLE
 Μετά την παρουσίαση βασικών τύπων δεδομένων
μπορούμε να δημιουργήσουμε πίνακες
χρησιμοποιώντας τη γλώσσα SQL.
 Η εντολή της SQL που μας δίνει αυτή τη
δυνατότητα είναι η CREATE TABLE, η οποία
χρησιμοποιείται ως εξής:
CREATE TABLE
 Δηλαδή, ξεκινάμε δηλαδή με τη φράση CREATE
TABLE, ακολουθούμενη από έναν ή περισσότερους
κενούς χαρακτήρες και κατόπιν γράφουμε το
όνομα του πίνακα που θέλουμε να
δημιουργήσουμε.
 Κατόπιν ανοίγουμε παρένθεση ‘(‘ και γράφουμε τα
ονόματα και τους τύπους δεδομένων των στηλών
του πίνακα.
CREATE TABLE
 Για κάθε στήλη (πεδίο) του πίνακα καθορίζουμε το
όνομά της και μετά από ένα ή περισσότερα κενά
τον τύπο δεδομένων της στήλης.
 Οι τύποι δεδομένων είναι αυτοί που
παρουσιάστηκαν στην προηγούμενη ενότητα.
 Οι ορισμοί των στηλών μεταξύ τους διαχωρίζονται
με κόμμα ‘,’.
CREATE TABLE
 Όταν ολοκληρωθεί ο ορισμός των στηλών
κλείνουμε την παρένθεση ‘)’.
 Κενός χαρακτήρας πρέπει να υπάρχει ανάμεσα στο
όνομα και τον τύπο κάθε στήλης.
CREATE TABLE
 Αν επιστρέψουμε στα παραδείγματά μας, για να
δημιουργήσουμε τον πίνακα Μάθημα, θα γράψουμε
την εξής εντολή:
 CREATE TABLE Μάθημα ( Όνομα
VARCHAR(100), Ώρες INTEGER )
CREATE TABLE
 Ο πίνακας Μάθημα αποτελείται από δύο πεδία:
Όνομα και Ώρες.
 Ο τύπος του πεδίου "Όνομα" είναι συμβολοσειρά
μέχρι 100 χαρακτήρων (VARCHAR(100)), ενώ ο
τύπος του πεδίου "Ώρες" είναι ακέραιος αριθμός
(INTEGER).
 Για να δημιουργήσουμε τον πίνακα Μαθητής
προσθέτοντας το πεδίο «Φύλο», θα γράψουμε την
εξής εντολή:
CREATE TABLE
 CREATE TABLE Μαθητής ( Επώνυμο
VARCHAR(50), Όνομα VARCHAR (50),
Πατρώνυμο VARCHAR (50),
Ημερομηνία_Γέννησης DATE, Φύλο CHAR(1) )
CREATE TABLE
 Τα πεδία αλφαριθμητικού τύπου «Επώνυμο»,
«Όνομα» και «Πατρώνυμο» είναι τύπου χαρακτήρα
μεταβλητού μεγέθους με μήκος έως 50, δηλαδή
VARCHAR(50).
 Το πεδίο «Ημερομηνία_Γέννησης» είναι τύπου
ημερομηνίας, δηλαδή DATE, ενώ το πεδίο «Φύλο»
είναι ένας χαρακτήρας (‘Α’ ή ‘Θ’).
Προκαθορισμένες τιμές
 Κατά τη δημιουργία πινάκων με την εντολή
CREATE TABLE μπορούν να καθοριστούν
προκαθορισμένες τιμές και περιορισμοί για τα
πεδία των πινάκων.
Προκαθορισμένη τιμή πεδίων
 Κατά την εισαγωγή δεδομένων σε έναν πίνακα,
είναι πιθανό κάποιες τιμές πεδίων να μην είναι
γνωστές, οπότε να μην εισάγονται. Σε αυτή την
περίπτωση, το πεδίο θα έχει την τιμή NULL, που
σημαίνει ότι δεν έχει εισαχθεί τιμή.
CREATE TABLE
 Για παράδειγμα όταν γίνονται εγγραφές μαθητών
στο Μαθητολόγιο του σχολείου, μπορεί να μην
εισάγεται η ημερομηνία γέννησης του μαθητή μέχρι
εκείνος να προσκομίσει το πιστοποιητικό
γέννησης.
 Σε αυτή την περίπτωση η ημερομηνία γέννησης
έχει την τιμή NULL μέχρι να γίνει εισαγωγή μιας
έγκυρης ημερομηνίας.
Προκαθορισμένη τιμή (default value)
 Προκαθορισμένη τιμή (default value) σε ένα πεδίο
σημαίνει ότι αν δεν καθοριστεί άλλη τιμή κατά την
εισαγωγή δεδομένων, χρησιμοποιείται μία τιμή που
έχει καθορίσει ο σχεδιαστής της Βάσης Δεδομένων.
CREATE TABLE
 Για παράδειγμα, αν στο Μαθητολόγιο
καταχωρείται η πόλη καταγωγής των μαθητών
ενός σχολείου, το πεδίο αυτό θα μπορούσε να έχει
προκαθορισμένη τιμή συγκεκριμένη πόλη π.χ.
«Αθήνα» αν πρόκειται για σχολείο της Αθήνας και
αναμένεται οι περισσότεροι μαθητές να έχουν
καταγωγή από την Αθήνα.
CREATE TABLE
 Σε αυτή την περίπτωση η προκαθορισμένη τιμή
διευκολύνει την εισαγωγή δεδομένων εφόσον δεν
είναι απαραίτητο να εισάγεται με κάθε νέο μαθητή,
αλλά δημιουργείται αυτόματα από το σύστημα.
Στην γλώσσα SQL, οι προκαθορισμένες τιμές
περιγράφονται στην εντολή CREATE TABLE με την
σύνταξη DEFAULT <τιμή> δίπλα από την
περιγραφή της αντίστοιχης στήλης. Το παράδειγμα
δημιουργίας του πίνακα Μαθητής θα γινόταν
επομένως :
CREATE TABLE
 CREATE TABLE Μαθητής ( Επώνυμο
VARCHAR(50), Όνομα VARCHAR (50),
Πατρώνυμο VARCHAR (50),
Ημερομηνία_Γέννησης DATE, Φύλο CHAR(1),
Πόλη VARCHAR(50) DEFAULT ‘Αθήνα’ )
Περιορισμοί
 Συχνά είναι αναγκαίο να επιβληθούν περιορισμοί
στα δεδομένα για να εξασφαλιστεί η ορθότητα και
η ακεραιότητά τους.
 Οι περιορισμοί με τους οποίους θα ασχοληθούμε σε
αυτήν την υποενότητα είναι: περιορισμοί
υπαρξιακής ακεραιότητας, περιορισμοί κύριου
κλειδιού και περιορισμοί αναφορικής
ακεραιότητας.
Περιορισμοί υπαρξιακής ακεραιότητας
 Οι περιορισμοί αυτοί μπορεί να αφορούν στην
ύπαρξη ή μη τιμών σε κάποιο πεδίο πίνακα και
εκφράζονται σε γλώσσα SQL με τις φράσεις NULL
και NOT NULL.
 Η λέξη «NULL» σημαίνει καμία τιμή και
χρησιμοποιείται για πεδία που είναι αποδεκτό να
μην έχουν τιμή, ενώ η φράση «NOT NULL»
χρησιμοποιείται για πεδία που δεν επιτρέπεται να
μην έχουν τιμή.
CREATE TABLE
 Στο παράδειγμα του Μαθητολογίου, η καταχώρηση
μαθημάτων χωρίς τίτλους δεν είναι αποδεκτή,
οπότε η δημιουργία του πίνακα Μάθημα θα έπρεπε
να γραφτεί προσθέτοντας δίπλα στο πεδίο
«Όνομα» τη φράση NOT NULL, ως εξής:
CREATE TABLE
 CREATE TABLE Μάθημα( Όνομα VARCHAR(100)
NOT NULL, Ώρες INT )
CREATE TABLE
 Παρόμοια, στον πίνακα Μαθητής, η καταχώρηση
μαθητών χωρίς το ονοματεπώνυμό τους δεν είναι
αποδεκτή, οπότε και στα δύο πεδία καθορίζεται ο
περιορισμός NOT NULL ώστε να αποφευχθεί η
εισαγωγή μαθητών χωρίς ονοματεπώνυμο.
CREATE TABLE
 CREATE TABLE Μάθημα( Επώνυμο
VARCHAR(50) NOT NULL, Όνομα VARCHAR
(50) NOT NULL, Πατρώνυμο VARCHAR (50),
Ημερομηνία_Γέννησης DATE, Φύλο CHAR(1),
Πόλη VARCHAR(50) DEFAULT ‘Αθήνα’ )
Περιορισμοί κύριου κλειδιού
 Το κύριο κλειδί ενός σχεσιακού πίνακα είναι ένα
πεδίο ή συνδυασμός πεδίων που για κάθε γραμμή
του πίνακα έχει μοναδική τιμή. Ο περιορισμός του
κύριου κλειδιού μπορεί να καθοριστεί στην εντολή
CREATE TABLE με τη σύνταξη PRIMARY KEY
(<πεδίο ή πεδία>). Η φράση PRIMARY KEY (<πεδίο
ή πεδία>) προστίθεται μετά τον ορισμό των
στηλών του πίνακα στην εντολή CREATE TABLE.
CREATE TABLE
 Ας επανέλθουμε στο παράδειγμα του
Μαθητολογίου και στον πίνακα Μάθημα που
δημιουργήθηκε προηγουμένως. Ένας ορθός
σχεδιασμός της βάσης δεδομένων επιβάλλει τον
καθορισμό κύριου κλειδιού σε όλους τους πίνακες
που θα δημιουργηθούν.
CREATE TABLE
 Άρα στον πίνακα Μάθημα πρέπει να προστεθεί
κύριο κλειδί. Σε αυτή την περίπτωση επιλέγουμε
ως κύριο κλειδί το όνομα του μαθήματος, το οποίο
θεωρούμε ότι είναι μοναδικό, π.χ. «Φυσική Α’
Τάξης», «Μαθηματικά Γ’ Τάξης», κ.ο.κ.
CREATE TABLE
 Άρα η δημιουργία του πίνακα Μάθημα θα
συμπληρωθεί ως εξής:
 CREATE TABLE Μάθημα ( Όνομα
VARCHAR(100) NOT NULL, Ώρες INTEGER,
PRIMARY KEY (Όνομα) )
CREATE TABLE
 Στο παράδειγμα του Μαθητολογίου, θέλουμε οι
μαθητές επίσης να διακρίνονται μεταξύ τους με
μοναδικό τρόπο. Αυτό εφαρμόζεται και στην πράξη
στο μητρώο μαθητών του σχολείου.
CREATE TABLE
 Κατά την εγγραφή του στο βιβλίο του μητρώου
μαθητών, κάθε μαθητής αποκτά έναν μοναδικό
Αριθμό Μητρώου.
 Στην Βάση Δεδομένων Μαθητολόγιο αυτό
υλοποιείται με την προσθήκη του πεδίου ΑΜ στον
πίνακα Μαθητής και τον καθορισμό του πεδίου ως
κύριου κλειδιού ως εξής:
CREATE TABLE
 CREATE TABLE Μαθητής ( ΑΜ INT, Επώνυμο
VARCHAR(50) NOT NULL, Όνομα VARCHAR
(50) NOT NULL, Πατρώνυμο VARCHAR (50),
Ημερομηνία_Γέννησης DATE, Φύλο CHAR(1),
Πόλη VARCHAR(50) DEFAULT ‘Αθήνα’, PRIMARY
KEY (ΑΜ) )
CREATE TABLE
 Αυτό σημαίνει ότι στον πίνακα δε μπορούν να
εισαχθούν δύο μαθητές με τον ίδιο Αριθμό
Μητρώου.
 Περιορισμοί αναφορικής ακεραιότητας
 Οι περιορισμοί αναφορικής ακεραιότητας
καθορίζουν συσχετίσεις μεταξύ των πεδίων
διαφορετικών πινάκων, δηλαδή τα ξένα κλειδιά.
CREATE TABLE
 Ο περιορισμός ξένου κλειδιού στην γλώσσα SQL
καθορίζει ότι το πεδίο ενός πίνακα Β αναφέρεται
σε ένα πεδίο ενός άλλου πίνακα Α, επομένως οι
τιμές του πεδίου στον πίνακα Β πρέπει να
υπάρχουν στο αντίστοιχο πεδίο στον πίνακα Α.
 Οι περιορισμοί αναφορικής ακεραιότητας
περιγράφονται στη γλώσσα SQL με την έκφραση
FOREIGN KEY (<πεδίο>) REFERENCES <πίνακας
αναφοράς> ( <πεδίο πίνακα αναφοράς>) .
CREATE TABLE
 Στο παράδειγμά μας του Μαθητολογίου, οι μαθητές
του σχολείου εγγράφονται κάθε χρόνο που
φοιτούν σε συγκεκριμένη τάξη (Α, Β, ή Γ). Κάθε
μαθητής που θα φοιτήσει παραπάνω από ένα έτος
στο ίδιο σχολείο θα εγγραφεί τουλάχιστον μία
φορά σε κάθε τάξη που θα φοιτήσει.
 Για να καταγραφεί αυτή η πληροφορία στη
σχεσιακή Βάση Δεδομένων, θα πρέπει να
δημιουργηθεί ένας νέος πίνακας ο οποίος να
επιτρέπει την εγγραφή μαθητών σε σχολικά έτη
και τάξεις.
CREATE TABLE
 Σε αυτόν τον πίνακα που μπορούμε να τον
ονομάσουμε ΕγγραφήΜαθητή, αυτό που πρέπει να
δημιουργηθεί είναι ένα πεδίο που να ταυτοποιεί
κάθε μαθητή.
 Το πεδίο αυτό είναι ο αριθμός μητρώου (ΑΜ) του
μαθητή.
 Ο ΑΜ μαθητή πρέπει να συνοδεύεται και από το
σχολικό έτος και την τάξη στην οποία εγγράφεται ο
μαθητής.
CREATE TABLE
 Το πεδίο ΑΜ_Μαθητή αναφέρεται σε μαθητές που
είναι ήδη καταχωρημένοι στον πίνακα Μαθητής.
Για να εξασφαλιστεί αυτή η αναφορική
ακεραιότητα, το πεδίο ΑΜ_Μαθητή πρέπει να είναι
ξένο κλειδί που αναφέρεται στο πεδίο ΑΜ του
πίνακα Μαθητής.
CREATE TABLE
 Ένα επιπλέον σημείο που πρέπει να διευκρινιστεί
για τον συγκεκριμένο πίνακα, είναι το κύριο κλειδί
του, δηλαδή το πεδίο ή τα πεδία που πρέπει να
είναι μοναδικά για κάθε εγγραφή. Ας κάνουμε
μερικές παρατηρήσεις:
CREATE TABLE
 - Το πεδίο Σχολ_έτος δε μπορεί να είναι μοναδικό
γιατί σε κάθε σχολικό έτος εγγράφονται πολλοί
μαθητές στο σχολείο.
 - Ο ΑΜ_Μαθητή δε μπορεί να είναι μοναδικός γιατί
κάθε μαθητή μπορεί να γίνουν πολλές εγγραφές
(στην Α’, τη Β’ και τη Γ’ τάξη)
CREATE TABLE
 Επομένως το κύριο κλειδί θα είναι συνδυασμός
κάποιων πεδίων. Συγκεκριμένα, θα είναι ο
συνδυασμός των πεδίων (ΑΜ_Μαθητή, Σχολ_έτος)
ώστε να εξασφαλίζεται ότι κάθε μαθητής θα
εγγράφεται μόνο μία φορά ανά σχολικό έτος σε
κάποια τάξη.
 Άρα η δημιουργία του πίνακα μπορεί να γίνει με
την εξής εντολή SQL:
CREATE TABLE
 CREATE TABLE ΕγγραφήΜαθητή ( ΑΜ_Μαθητή
ΙΝΤ, Σχολ_έτος CHAR(9), Τάξη CHAR(1),
PRIMARY KEY (ΑΜ_Μαθητή, Σχολ_έτος),
FOREIGN KEY (ΑΜ_Μαθητή) REFERENCES
Μαθητής(ΑΜ) )
CREATE TABLE
 Παρατηρούμε ότι ο τύπος του πεδίο ΑΜ_Μαθητή
είναι ΙΝΤ, ίδιος με τον τύπο του πεδίου ΑΜ στον
πίνακα Μαθητής. Αυτή είναι απαραίτητη
προϋπόθεση για την δημιουργία του περιορισμού
ξένου κλειδιού (FOREIGN KEY) στον πίνακα
ΕγγραφήΜαθητή.
CREATE TABLE
 Στο ίδιο παράδειγμα, ένας μαθητής παίρνει γραπτό
βαθμό στα μαθήματα της τάξης που ένας μαθητής
παίρνει έναν γραπτό βαθμό στα μαθήματα της
τάξης που παρακολουθεί για κάθε σχολικό έτος
που φοιτά στο σχολείο.
 Άρα υπάρχει συσχέτιση ανάμεσα στον μαθητή και
τα μαθήματα για την καταχώρηση της γραπτής
βαθμολογίας.
CREATE TABLE
 Η συσχέτιση αυτή πρέπει να υλοποιηθεί στη
σχεσιακή Βάση Δεδομένων με ένα νέο πίνακα ο
οποίος θα συσχετίζει τον Αριθμό Μητρώου του
μαθητή με το μάθημα στο οποίο καταχωρείται η
βαθμολογία του, συμπληρωμένο με το σχολικό
έτος.
CREATE TABLE
 Σε αυτόν τον πίνακα, το κύριο κλειδί, δηλαδή το
πεδίο που πρέπει να είναι μοναδικό για κάθε
εγγραφή στον πίνακα είναι ο συνδυασμός των
πεδίων Αριθμός Μητρώου Μαθητή, Σχολικό Έτος
και Όνομα Μαθήματος, έτσι ώστε:
CREATE TABLE
 - να είναι δυνατό να εισαχθούν βαθμοί για όλα τα
(διαφορετικά) μαθήματα κάποιου μαθητή, να μην
είναι δυνατόν να εισαχθεί παραπάνω από ένας
βαθμός ανά μαθητή, μάθημα και σχολικό έτος,
CREATE TABLE
 - να είναι δυνατόν να εισαχθούν οι βαθμοί όλων
των μαθητών σε κάθε μάθημα που
παρακολουθούν,
 - να είναι δυνατόν να εισαχθούν βαθμοί κάποιου
μαθητή στο ίδιο μάθημα για διαφορετικά σχολικά
έτη σε περίπτωση επανάληψης της ίδιας τάξης
(κάτι που δεν είναι επιθυμητό φυσικά αλλά πρέπει
να προβλεφθεί στο ΣΔΒΔ).
CREATE TABLE
 Επομένως η δημιουργία του πίνακα για τις γραπτές
βαθμολογίες θα έχει ως εξής:
CREATE TABLE
 CREATE TABLE ΓραπτόςΒαθμόςΜαθητή (
ΑΜ_Μαθητή INT, Σχολ_έτος CHAR(9),
Όνομα_Μαθήματος VARCHAR(100), Βαθμός
FLOAT, PRIMARY KEY (ΑΜ_Μαθητή, Σχολ_έτος,
Όνομα_Μαθήματος), FOREIGN KEY
(ΑΜ_Μαθητή) REFERENCES Μαθητής(ΑΜ),
FOREIGN KEY (Όνομα_Μαθήματος)
REFERENCES Μάθημα(Όνομα) )
CREATE TABLE
 Παρατηρούμε ότι ο τύπος του πεδίο ΑΜ_Μαθητή
είναι ΙΝΤ, ίδιος με τον τύπο του πεδίου ΑΜ στον
πίνακα Μαθητής και ο τύπος του πεδίου
Όνομα_Μαθήματος είναι VARCHAR(100), ίδιος με
τον τύπο του πεδίου Όνομα στον πίνακα Μάθημα.
SQL DML
 SQL Σχεσιακή Γλώσσα Χειρισμού Δεδομένων
(DML)
 Μία Γλώσσα Χειρισμού Δεδομένων (Data
Manipulation Language DML) χρησιμοποιείται
από τους σχεδιαστές προγραμματιστές και από
τους διαχειριστές Βάσεων Δεδομένων για τον
χειρισμό των δεδομένων, δηλαδή για να εισαχθούν,
να ενημερωθούν, να διαγραφούν και να
ανακτηθούν τα δεδομένα της βάσης.
SQL DML
 Τα σχεσιακά ΣΔΒΔ χρησιμοποιούν κατά κανόνα τη
γλώσσα SQL για τον χειρισμό των δεδομένων. Η
γλώσσα SQL DML επιτρέπει την περιγραφή
εντολών εισαγωγής, ενημέρωσης, διαγραφής και
ανάκτησης των δεδομένων των πινάκων.
Εισαγωγή Δεδομένων με SQL
 Η εισαγωγή δεδομένων σε πίνακα σχεσιακής
Βάσης Δεδομένων πραγματοποιείται με την εντολή
INSERT INTO της SQL. Η σύνταξη της εντολής
INSERT INTO στη γενική της μορφή είναι:
 INSERT INTO <όνομα πίνακα> VALUES (τιμή_1,
τιμή_2, τιμή_3, ...)
Εισαγωγή Δεδομένων με SQL
 Με την παραπάνω εντολή εισάγεται μια νέα
γραμμή στον πίνακα που καθορίζεται στην εντολή.
Οι τιμές που εισάγονται στα πεδία του πίνακα
καθορίζονται μέσα στην παρένθεση χωριζόμενες με
κόμμα. Οι τιμές αυτές αντιστοιχίζονται σε όλα τα
πεδία του πίνακα και με τη σειρά που αυτά έχουν
καθοριστεί κατά την δημιουργία του πίνακα.
Εισαγωγή Δεδομένων με SQL
 Εισαγωγή εγγραφών καθορίζοντας τιμές για όλα
τα πεδία του πίνακα
 Για την εισαγωγή των στοιχείων του μαθητή
Πηλείδη Αχιλλέα στον πίνακα Μαθητής, γράφουμε
σε SQL την παρακάτω εντολή:
 INSERT INTO Μαθητής VALUES (863, ‘Πηλείδης’,
‘Αχιλλέας’, ‘Πηλέας’, ‘1999 06 24’, ‘Α’, ‘Αθήνα’)
Εισαγωγή Δεδομένων με SQL
 Στο παράδειγμα αυτό θυμίζουμε ότι στην εντολή
CREATE TABLE του πίνακα Μαθητής
καθορίστηκαν τα πεδία με τη σειρά: ΑΜ, Επώνυμο,
Όνομα, Πατρώνυμο, Ημερομηνία_γέννησης, Φύλο,
Πόλη.
 Παρατηρούμε ότι η τιμή της ημερομηνίας εισάγεται
με τη μορφή 'έτος μήνας ημέρα'.
Απλά παραδείγματα SQL
Απλά παραδείγματα SQL
 SELECT Επώνυμο, Όνομα FROM Μαθητής
WHERE Όνομα=’Γιώργος’
 Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες για
το Επώνυμο, Όνομα από τον πίνακα Μαθητής, όταν
το όνομα του μαθητή είναι ‘Γιώργος’
Απλά παραδείγματα SQL
 SELECT Όνομα, Ώρες FROM Μάθημα WHERE
Ώρες >=4
 Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες
Όνομα και Ώρες από τον πίνακα Μάθημα, όταν οι
ώρες του μαθήματος είναι μεγαλύτερες ή ίσες με 4
Απλά παραδείγματα SQL
 SELECT Όνομα, Ώρες FROM Μάθημα WHERE
Ώρες <>4
 Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες
Όνομα και Ώρες από τον πίνακα Μάθημα, όταν οι
ώρες του μαθήματος είναι διαφορετικές από 4
Απλά παραδείγματα SQL
 SELECT Όνομα, Ώρες FROM Μάθημα WHERE
Ώρες BETWEEN 4 AND 5
 Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες
Όνομα και Ώρες από τον πίνακα Μάθημα, όταν οι
ώρες του μαθήματος είναι μεταξύ 4 και 5 ωρών,
δηλαδή μεγαλύτερες ή ίσες με 4 και μικρότερες ή
ίσες με
Απλά παραδείγματα SQL
 SELECT Όνομα, Ώρες FROM Μάθημα WHERE
Ώρες IN (4, 5)
 Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες
Όνομα και Ώρες από τον πίνακα Μάθημα, όταν οι
ώρες του μαθήματος είναι 4 ή 5, δηλαδή
ικανοποιούν τις τιμές που περιλαμβάνονται στην
παρένθεση
Απλά παραδείγματα SQL
 SELECT Επώνυμο, Όνομα FROM Μαθητής
WHERE Όνομα LIKE “Μ%”
 Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες για
το Επώνυμο, Όνομα από τον πίνακα Μαθητής, όταν
το όνομα του μαθητή αρχίζει από “M”
Απλά παραδείγματα SQL
 SELECT Επώνυμο, Όνομα FROM Μαθητής
WHERE Όνομα LIKE “Μ “
 Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες για
το Επώνυμο, Όνομα από τον πίνακα Μαθητής, όταν
το όνομα του μαθητή αρχίζει από “M” και
περιλαμβάνει 5 χαρακτήρες
Απλά παραδείγματα SQL
 SELECT Επώνυμο, Όνομα FROM Μαθητής
WHERE Ημερομηνία_Γέννησης IS NULL
 Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες για
το Επώνυμο, Όνομα από τον πίνακα Μαθητής, όταν
η Ημερομηνία_Γέννησης δεν είναι συμπληρωμένη

Απλά παραδείγματα SQL
 SELECT Επώνυμο, Όνομα FROM Μαθητής
WHERE Όνομα NOT LIKE “Μ%”
 Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες για
το Επώνυμο, Όνομα από τον πίνακα Μαθητής, όταν
το όνομα του μαθητή δεν αρχίζει από “M”
Απλά παραδείγματα SQL
 SELECT Επώνυμο, Όνομα FROM Μαθητής
WHERE Ημερομηνία_Γέννησης IS NOT NULL
 Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες για
το Επώνυμο, Όνομα από τον πίνακα Μαθητής, όταν
η Ημερομηνία_Γέννησης είναι συμπληρωμένη
 Σημείωση: Ποτέ δεν γίνετε σύγκριση με Null. Πάντα
χρησιμοποιούμε τις φράσεις is Null ή is not Null.
Απλά παραδείγματα SQL
 SELECT Επώνυμο, Όνομα FROM Μαθητής
WHERE Όνομα LIKE “Μ%” AND Πόλη=’Χανιά’
 Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες για
το Επώνυμο, Όνομα από τον πίνακα Μαθητής, όταν
το όνομα του μαθητή αρχίζει από “M” και είναι από
τα Χανιά.
Απλά παραδείγματα SQL
 SELECT Επώνυμο, Όνομα FROM Μαθητής
WHERE Όνομα LIKE “Μ%” AND Πόλη=’Χανιά’ OR
Πόλη=’Ρέθυμνο’
 Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες για
το Επώνυμο, Όνομα από τον πίνακα Μαθητής, όταν
το όνομα του μαθητή αρχίζει από “M” και είναι από
τα Χανιά ή το Ρέθυμνο ανεξαρτήτως Ονόματος
μαθητή
Απλά παραδείγματα SQL
 SELECT Επώνυμο, Όνομα FROM Μαθητής
WHERE Όνομα LIKE “Μ%” AND (Πόλη=’Χανιά’
OR Πόλη=’Ρέθυμνο’)
 Ή
 SELECT Επώνυμο, Όνομα FROM Μαθητής
WHERE Όνομα LIKE “Μ%” OR Πόλη=’Χανιά’ AND
Πόλη=’Ρέθυμνο’
Απλά παραδείγματα SQL
 Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες για
το Επώνυμο, Όνομα από τον πίνακα Μαθητής, όταν
το όνομα του μαθητή αρχίζει από “M” και είναι από
τα Χανιά ή το Ρέθυμνο
 Σημείωση: Ισχύει και στις λογικές πράξεις η
προτεραιότητα των πράξεων (Not, And, Or)
Δεδομένα από περισσότερους από ένα
πίνακα
 Η φράση FROM
 Οι εγγραφές ενός πίνακα μπορούν να συνδυαστούν
με τις εγγραφές ενός άλλου πίνακα, εφόσον
υπάρχουν κοινά πεδία στους δύο πίνακες.
 Ο συνδυασμός γίνεται βάσει των τιμών του κοινού
πεδίου. Στη φράση from ορίζονται οι πίνακες.
Δεδομένα από περισσότερους από ένα
πίνακα
 Για να μπορέσουμε να εμφανίζουμε τις
πληροφορίες των πινάκων, στη φράση where θα
πρέπει να συνδέσουμε τα κοινά πεδία.
 Η αναφορά μας σε ένα πεδίο ενός πίνακα γίνεται με
το συμβολισμό: <όνομα-πίνακα>.<όνομα- πεδίου>
Δεδομένα από περισσότερους από ένα
πίνακα
 Η πρόταση from αντιστοιχεί στην πράξη του
καρτεσιανού γινομένου της σχεσιακής άλγεβρας.
Δίνει τη λίστα των σχέσεων που πρέπει να
σαρωθούν κατά την αξιολόγηση της έκφρασης.
Δεδομένα από περισσότερους από ένα
πίνακα
 Όταν το ίδιο γνώρισμα εμφανίζεται στο σχήμα
περισσότερων από μια σχέσεων, τότε γίνεται
διάκριση βάση του συμβολισμού: <όνομα -
σχέσης>.<όνομα -γνωρίσματος>
ΠΑΡΑΔΕΙΓΜΑΤΑ
 SELECT Επώνυμο, Όνομα, Τάξη FROM Μαθητής,
ΕγγραφήΜαθητή WHERE Μαθητής.ΑΜ=
ΕγγραφήΜαθητή.ΑΜ_Μαθητή
 Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες για
το Επώνυμο, Όνομα και την Τάξη από τους πίνακες
Μαθητής και ΕγγραφήΜαθητή, για όλους τους
μαθητές. Στο αποτέλεσμα, εμφανίζονται όλοι οι
δυνατοί συνδυασμοί των δύο πινάκων που έχουν
κοινό πεδίο τον ΑΜ
ΠΑΡΑΔΕΙΓΜΑΤΑ
 SELECT Επώνυμο, Όνομα, Τάξη FROM Μαθητής,
ΕγγραφήΜαθητή WHERE Μαθητής.ΑΜ=
ΕγγραφήΜαθητή.ΑΜ_Μαθητή AND
Σχολ_έτος=’2013 2014’
 Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες για
το Επώνυμο, Όνομα και την Τάξη από τους πίνακες
Μαθητής και ΕγγραφήΜαθητή, για τους μαθητές
στο σχολικό έτος 2013 2014. Στο αποτέλεσμα,
περιορίζονται οι συνδυασμοί των δύο πινάκων στο
σχολικό έτος 2013 -2014
Υποερωτήματα
 Τα υποερωτήματα είναι ερωτήματα που
περιέχονται στη φράση WHERE άλλων
ερωτημάτων. Τα αποτελέσματα των
υποερωτημάτων δεν εμφανίζονται αλλά απλά
δρουν βοηθητικά, ώστε να συνδεθούν τα στοιχεία
των πινάκων.
Υποερωτήματα
 SELECT Επώνυμο, Όνομα FROM Μαθητής,
ΕγγραφήΜαθητή WHERE Μαθητής.ΑΜ=
ΕγγραφήΜαθητή.ΑΜ_Μαθητή AND ΑΜ IN
(SELECT ΑΜ FROM ΕγγραφήΜαθητή
WHERE Σχολ_έτος=’2013 -2014’)
Υποερωτήματα
 Παρατηρούμε ότι έχουμε το ίδιο αποτέλεσμα με το
προηγούμενο ερώτημα, δηλαδή επέλεξε και
εμφάνισε τις πληροφορίες για το Επώνυμο, Όνομα
και την Τάξη από τους πίνακες Μαθητής και
ΕγγραφήΜαθητή, για τους μαθητές στο σχολικό
έτος 2013 -2014. Στο αποτέλεσμα, περιορίζονται οι
συνδυασμοί των δύο πινάκων στο σχολικό έτος
2013- 2014)
Ταξινόμηση Αποτελεσμάτων
 Διάταξη των εγγραφών – ORDER BY
 Στην SQL χρησιμοποιείται η φράση order by ώστε
οι εγγραφές στο αποτέλεσμα να είναι
ταξινομημένες (π.χ. με αλφαβητική σειρά) με βάση
το αντίστοιχο πεδίο.
Ταξινόμηση Αποτελεσμάτων
 SELECT Επώνυμο, Όνομα FROM Μαθητής ORDER
BY Επώνυμο
 Δηλαδή επέλεξε και εμφάνισε ταξινομημένες σε
αύξουσα σειρά, βάση του Επωνύμου τις πληροφορίες
για το Επώνυμο, Όνομα από τον πίνακα Μαθητής
 Η προεπιλογή είναι η αύξουσα διάταξη, αλλά μπορούμε
να επιλέξουμε διάταξη χρησιμοποιώντας το asc
(αύξουσα) ή το desc (φθίνουσα).
 Επίσης, μπορούμε να κάνουμε ταξινόμηση
χρησιμοποιώντας πολλά πεδία.
Ταξινόμηση Αποτελεσμάτων
 SELECT Επώνυμο, Όνομα FROM Μαθητής
ORDER BY Επώνυμο DESC, Όνομα ASC
 Δηλαδή επέλεξε και εμφάνισε ταξινομημένες σε
φθίνουσα σειρά, βάση του Επωνύμου και στη
συνέχεια στις εγγραφές με κοινό Επώνυμο σε
αύξουσα βάση του Ονόματος, τις πληροφορίες για
το Επώνυμο, Όνομα από τον πίνακα Μαθητής.
Ταξινόμηση Αποτελεσμάτων
 Ταξινόμηση εγγραφών μπορούμε να έχουμε και
όταν η επιλογή των πεδίων είναι από
περισσότερους από έναν πίνακες.

Ταξινόμηση Αποτελεσμάτων
 SELECT Επώνυμο, Όνομα, Τάξη FROM Μαθητής,
ΕγγραφήΜαθητή WHERE Μαθητής.ΑΜ=
ΕγγραφήΜαθητή.ΑΜ_Μαθητή ORDER BY Τάξη
 Δηλαδή επέλεξε και εμφάνισε ταξινομημένες σε
αύξουσα σειρά τις πληροφορίες για το Επώνυμο,
Όνομα και την Τάξη από τους πίνακες Μαθητής και
ΕγγραφήΜαθητή, για όλους τους μαθητές. Στο
αποτέλεσμα, εμφανίζονται όλοι οι δυνατοί
συνδυασμοί των δύο πινάκων που έχουν κοινό
πεδίο τον ΑΜ, ταξινομημένοι ανά τάξη.
Ταξινόμηση Αποτελεσμάτων
 Σημείωση:
 Η ταξινόμηση μπορεί να γίνει και με πεδία που δεν
εμφανίζονται στο Select, ενώ δεν επιτρέπεται η
ταξινόμηση με βάση τις πράξεις μεταξύ πεδίων.
Συναρτήσεις Συνάθροισης και
Ομαδοποίησης
 Η SQL έχει 5 ενσωματωμένες συναθροιστικές
συναρτήσεις.
 Οι ακόλουθες συναρτήσεις εφαρμόζονται στο
σύνολο των τιμών μιας στήλης ενός πίνακα, και
επιστρέφουν μία τιμή:
 Αυτές επιδρούν σε ομάδα εγγραφών (γραμμών)
του πίνακα και είναι:
Συναρτήσεις Συνάθροισης και
Ομαδοποίησης
 AVG (Α) :
 Μέσος όρος τιμών (μόνο σε αριθμούς)
Συναρτήσεις Συνάθροισης και
Ομαδοποίησης
 COUNT(Α):
 Πλήθος τιμών
Συναρτήσεις Συνάθροισης και
Ομαδοποίησης
 MAX (Α) :
 Μέγιστη τιμή
Συναρτήσεις Συνάθροισης και
Ομαδοποίησης
 MIN (Α) :
 Ελάχιστη τιμή
Συναρτήσεις Συνάθροισης και
Ομαδοποίησης
 SUM (Α) :
 Άθροισμα τιμών (μόνο σε αριθμούς)
Συναρτήσεις Συνάθροισης και
Ομαδοποίησης
 (Α): αποτελεί τη στήλη :
 Όλες οι συναρτήσεις αγνοούν τις τιμές NULL εκτός
από την COUNT(*).
ΠΑΡΑΔΕΙΓΜΑΤΑ:
 SELECT Όνομα_Μαθήματος, AVG(Βαθμός) FROM
ΓραπτόςΒαθμόςΜαθητή WHERE
Όνομα_Μαθήματος=’Συστήματα Διαχείρισης
Βάσεων Δεδομένων (ΣΔΒΔ) και Εφαρμογές στο
Διαδίκτυο’
 Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες
Όνομα_Μαθήματος και το Μέσο Όρο του βαθμού
από τον πίνακα ΓραπτόςΒαθμόςΜαθητή, για το
μάθημα Συστήματα Διαχείρισης Βάσεων
Δεδομένων (ΣΔΒΔ) και Εφαρμογές στο Διαδίκτυο
ΠΑΡΑΔΕΙΓΜΑΤΑ:
 SELECT Όνομα_Μαθήματος, MIN(Βαθμός) FROM
ΓραπτόςΒαθμόςΜαθητή WHERE
Όνομα_Μαθήματος=’Συστήματα Διαχείρισης
Βάσεων Δεδομένων (ΣΔΒΔ) και Εφαρμογές στο
Διαδίκτυο
 Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες
Όνομα_Μαθήματος και το Μικρότερο βαθμό από
τον πίνακα Γραπτός Βαθμός Μαθητή, για την για το
μάθημα Συστήματα Διαχείρισης Βάσεων
Δεδομένων (ΣΔΒΔ) και Εφαρμογές στο Διαδίκτυο
ΠΑΡΑΔΕΙΓΜΑΤΑ:
 SELECT Όνομα_Μαθήματος, COUNT(*) FROM
ΓραπτόςΒαθμόςΜαθητή WHERE
Όνομα_Μαθήματος=’Συστήματα Διαχείρισης
Βάσεων Δεδομένων (ΣΔΒΔ) και Εφαρμογές στο
Διαδίκτυο’ AND Βαθμός<10
 Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες
Όνομα_Μαθήματος και το Πλήθος των μαθητών
από τον πίνακα ΓραπτόςΒαθμόςΜαθητή, για το
μάθημα Συστήματα Διαχείρισης Βάσεων
Δεδομένων (ΣΔΒΔ) και Εφαρμογές στο Διαδίκτυο
που ο βαθμός τους είναι μικρότερος από 10
Η φράση GROUP BY
 Μπορούμε να εφαρμόσουμε τις συναρτήσεις όχι
μόνο σε ένα σύνολο από εγγραφές, αλλά σε ομάδες
από σύνολα εγγραφών.
 Οι ομάδες προσδιορίζονται χρησιμοποιώντας το
group by και οι εγγραφές μιας ομάδας περιέχουν
την ίδια τιμή σε κάποιο δεδομένο πεδίο.
 Η φράση αυτή μπαίνει ΠΑΝΤΑ στο τέλος του
ερωτήματος.
Η φράση GROUP BY
 SELECT Τάξη, COUNT(*) FROM
ΕγγραφήΜαθητή GROUP BY Τάξη
 Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες
Τάξη και το Πλήθος των μαθητών, ανά τάξη από
τον πίνακα ΕγγραφήΜαθητή

Η φράση GROUP BY
 SELECT Τάξη, COUNT(*) FROM
ΕγγραφήΜαθητή WHERE Σχολ_έτος=’2014 -2015’
GROUP BY Τάξη
 Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες
Τάξη και το Πλήθος των μαθητών, ανά τάξη από
τον πίνακα ΕγγραφήΜαθητή, για το Σχολικό έτος
είναι 2014 -2015

Η φράση GROUP BY
 SELECT Τάξη, COUNT(*) FROM
ΕγγραφήΜαθητή WHERE Τάξη<>’Α’ AND
Σχολ_έτος=’2014-2015’ GROUP BY Τάξη
 Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες
Τάξη και το Πλήθος των μαθητών, ανά τάξη, εκτός
της Α, για το Σχολικό έτος είναι 2014 -2015, από
τον πίνακα ΕγγραφήΜαθητή. Η φράση where,
αποκλείει ομάδες.
Η Φράση HAVING
 Μπορούμε να εφαρμόσουμε μια συνθήκη σε μια
συγκεκριμένη ομάδα από εγγραφές
χρησιμοποιώντας το having. Η συνθήκη στην
φράση having εφαρμόζεται αφού σχηματιστούν οι
ομάδες (group by) και υπολογιστούν οι
συναθροιστικές συναρτήσεις.
Η Φράση HAVING
 SELECT Όνομα_Μαθήματος, AVG(Βαθμός) FROM
ΓραπτόςΒαθμόςΜαθητή GROUP BY
Όνομα_Μαθήματος HAVING AVG(Βαθμός)>15
 Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες
Όνομα_Μαθήματος και το μέσο όρο του βαθμού,
ανά μάθημα από τον πίνακα
ΓραπτόςΒαθμόςΜαθητή για τα μαθήματα που ο
βαθμός τους είναι μεγαλύτερος από 15
Η Φράση HAVING
 SELECT Τάξη, Σχολ_έτος, AVG(Βαθμός) FROM
ΓραπτόςΒαθμόςΜαθητή, ΕγγραφήΜαθητή
WHERE
ΓραπτόςΒαθμόςΜαθητή.ΑΜ=ΕγγραφήΜαθητή.ΑΜ
GROUP BY Τάξη, Σχολ_έτος HAVING
AVG(Βαθμός)>15
 Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες
Τάξη, Σχολικό έτος και το μέσο όρο του βαθμού,
ανά τάξη και Σχολικό έτος, από τους πίνακες
ΓραπτόςΒαθμόςΜαθητή, ΕγγραφήΜαθητή για τα
μαθήματα που ο βαθμός τους είναι μεγαλύτερος
από 15
Οι Τύποι Δεδομένων της Γλώσσας SQL
 INTEGER :
 Ακέραιος αριθμός (χωρίς υποδιαστολή)
Οι Τύποι Δεδομένων της Γλώσσας SQL
 BIGINT :
 Ακέραιος αριθμός με ακρίβεια19 ψηφία.
Οι Τύποι Δεδομένων της Γλώσσας SQL
 INTEGER(p) :
 Ακέραιος αριθμός με ακρίβεια p ψηφία.
Οι Τύποι Δεδομένων της Γλώσσας SQL
 SMALLINT:
 Ακέραιος αριθμός με ακρίβεια 5 ψηφία.
Οι Τύποι Δεδομένων της Γλώσσας SQL
 BINARY(n):
 Σταθερού μήκους δυαδική συμβολοσειρά,
μέγιστου μήκους n.
Οι Τύποι Δεδομένων της Γλώσσας SQL
 BOOLEAN :
 Τιμές TRUE ή FALSE.
Οι Τύποι Δεδομένων της Γλώσσας SQL
 BINARY VARYING(n), VARBINARY(n) :
 Μεταβλητού μήκους δυαδική συμβολοσειρά
μέγιστου μήκους n.
Οι Τύποι Δεδομένων της Γλώσσας SQL
 FLOAT:
 Αριθμός με υποδιαστολή
Οι Τύποι Δεδομένων της Γλώσσας SQL
 DECIMAL(p, s) :
 Δεκαδικός αριθμός ακρίβειας p κλίμακας s. Η
κλίμακα s δε μπορεί να υπερβαίνει την ακρίβεια p.
Η ακρίβεια καθορίζει το πλήθος των ψηφίων
αριστερά της υποδιαστολής, ενώ η κλίμακα το
πλήθος των ψηφίων δεξιά της υποδιαστολής.
Οι Τύποι Δεδομένων της Γλώσσας SQL
 NUMERIC(p, s) :
 Το ίδιο με το DECIMAL.
Οι Τύποι Δεδομένων της Γλώσσας SQL
 FLOAT(p) :
 Προσεγγιστικός αριθμός με συντελεστή (mantissa)
ακρίβειας p. Κινητής υποδιαστολής αριθμός σε
εκθετική μορφή με βάση το 10.
Οι Τύποι Δεδομένων της Γλώσσας SQL
 REAL :
 Προσεγγιστικός αριθμός με συντελεστή (mantissa)
ακρίβειας 7.
Οι Τύποι Δεδομένων της Γλώσσας SQL
 DOUBLE PRECISION :
 Προσεγγιστικός αριθμός με συντελεστή (mantissa)
ακρίβειας 16.
Οι Τύποι Δεδομένων της Γλώσσας SQL
 CHARACTER(N) :
 Σειρά χαρακτήρων (συμβόλων) σταθερού μήκους
N. Το μήκος N αναφέρεται στο μέγιστος μήκος της
τιμής. Οι τιμές για πεδία αυτού του τύπου πρέπει
να γράφονται μέσα σε μονά εισαγωγικά ‘ ‘, π.χ.
‘Γιώργος’.
Οι Τύποι Δεδομένων της Γλώσσας SQL
 CHARACTER N. VARYING(N), VARCHAR(N):
 Συμβολοσειρά χαρακτήρων μεταβλητού μεγέθους,
μέγιστου
Οι Τύποι Δεδομένων της Γλώσσας SQL
 DATE, TIMESTAMP, TIME:
 Τύποι που αποτελούνται από έναν αριθμό
ακέραιων πεδίων που παριστάνουν, μια απόλυτη
χρονική στιγμή, ανάλογα με τον επιμέρους τύπο.
Οι Τύποι Δεδομένων της Γλώσσας SQL
 INTERVAL:
 Τύπος που αποτελείται από έναν αριθμό ακέραιων
πεδίων που παριστάνουν μια χρονική περίοδο,
ανάλογα με τον τύπο του διαστήματος.
 COLLECTION (ARRAY MULTISET)
 Ο πίνακας ARRAY (προστέθηκε στο πρότυπο
SQL99) είναι μια, διατεταγμένη συλλογή
στοιχείων. Ο τύπος MULTISET (προστέθηκε στο
πρότυπο SQL2003) είναι μεταβλητού μήκους και
μη διατεταγμένη συλλογή στοιχείων. Τα στοιχεία
και των δύο τύπων πρέπει να ανήκουν σε έναν από
τους προκαθορισμένους τύπους της SQL.
 XML
 Τύπος δεδομένων που αποθηκεύει δεδομένα
μορφής XML.
Εισαγωγή στην SQL
 Η SQL αποτελείται από εντολές με τα ορίσματά
τους, τις οποίες μπορούμε να χρησιμοποιήσουμε με
συγκεκριμένους κανόνες σύνταξης για να πάρουμε
τα αποτελέσματα που θέλουμε.
Εισαγωγή στην SQL
 Με την SQL μπορούμε να δημιουργήσουμε μια
βάση δεδομένων και τους πίνακές της με τα
αντίστοιχα πεδία, να καταχωρήσουμε δεδομένα
στους πίνακες, να τροποποιήσουμε και να
διαγράψουμε τα δεδομένα αυτά, να αλλάξουμε τη
δομή των πινάκων με προσθήκη και διαγραφή
πεδίων και να εμφανίσουμε πληροφορίες
(συνδυασμούς από δεδομένα).
Η SQL έχει δύο τμήματα : 1ο:
 Τη Γλώσσα Ορισμού Δεδομένων (DDL, Data
Definition Language), η οποία περιέχει τις
απαραίτητες εντολές για τον ορισμό και την
τροποποίηση του σχεσιακού σχήματος καθώς και
για τη δημιουργία, την τροποποίηση και τη
διαγραφή σχέσεων.
Η SQL έχει δύο τμήματα : 2ο:
 Τη Γλώσσα Χειρισμού Δεδομένων (DML, Data
Manipulation Language), η οποία περιέχει τις
απαραίτητες εντολές για την εμφάνιση
(αναζήτηση) δεδομένων καθώς και για την
καταχώρηση, τροποποίηση και διαγραφή των
εγγραφών (πλειάδων) μιας σχέσης.
Εισαγωγή στην SQL
 Η SQL υποστηρίζει τους εξής τύπους δεδομένων
για τα πεδία μιας σχέσης :
Τύποι δεδομένων της SQL
 char(n), ένα αλφαριθμητικό (string) με n ακριβώς
χαρακτήρες.
 varchar(n), ένα αλφαριθμητικό (string) με
μεταβλητό μήκος και με n το πολύ χαρακτήρες.
 int, ακέραιος αριθμός.
Τύποι δεδομένων της SQL
 smallint, ακέραιος αριθμός με μικρές τιμές.
 Numeric(p, d), αριθμός με p ψηφία, από τα οποία
τα d είναι δεκαδικά.
 real, αριθμός κινητής υποδιαστολής απλής
ακρίβειας.
 double precision, αριθμός κινητής υποδιαστολής
διπλής ακρίβειας.
Τύποι δεδομένων της SQL
 float(n), αριθμός κινητής υποδιαστολής με ακρίβεια
n ψηφίων.
 date, ημερομηνία (ημέρα, μήνας, έτος).
 time, ώρα (ώρα, λεπτά, δευτερόλεπτα).
Δημιουργία, Τροποποίηση και
Διαγραφή Σχέσεων
 Για να δημιουργήσουμε μια σχέση (πίνακα) χρησιμοποιούμε
την εντολή create table.
 Για παράδειγμα, για να δημιουργήσουμε τη σχέση Αθλητής
δίνουμε την εξής εντολή :
 Create table ΑΘΛΗΤΗΣ
 (Κωδικός_Αθλητή integer not null,
 Επώνυμο char(20) not null,
 Όνομα char(15),
 Ρεκόρ numeric(4, 2),
 Ημνία_Γέννησης date,
 Κωδικός_Συλλόγου integer not null,
 primary key (Κωδικός_Αθλητή),
 check(Κωδικός_Αθλητή >= 100));
Δημιουργία, Τροποποίηση και
Διαγραφή Σχέσεων
 Μετά την εντολή create table γράφουμε το όνομα
της σχέσης (πίνακα) και ακολουθεί μια παρένθεση
που περιέχει τα ονόματα των πεδίων με τους
τύπους δεδομένων τους. Η δήλωση not null
σημαίνει ότι το συγκεκριμένο πεδίο θα πρέπει να
έχει οπωσδήποτε κάποια τιμή.
Δημιουργία, Τροποποίηση και
Διαγραφή Σχέσεων
 Με τον όρο check μπορούμε να δηλώσουμε μια
συνθήκη για την περιοχή των τιμών ενός πεδίου.
Είδαμε τη χρήση του όρου check για να ελέγξει αν η
τιμή ενός κωδικού είναι μεγαλύτερη ή ίση από 100.
Δημιουργία, Τροποποίηση και
Διαγραφή Σχέσεων
 Μπορούμε να χρησιμοποιήσουμε τον όρο check και
για να ελέγξουμε αν η τιμή ενός πεδίου ανήκει σ’
ένα προκαθορισμένο σύνολο τιμών, ως εξής :
 check (Νομός in (‘Γρεβενών’, ‘Καστοριάς’, ‘Κοζάνης’,
‘Φλώρινας’))
Δημιουργία, Τροποποίηση και
Διαγραφή Σχέσεων
 Εδώ ελέγχουμε το αν η τιμή του πεδίου Νομός θα
ανήκει σε μία από τέσσερις συγκεκριμένες τιμές.
Για να τροποποιήσουμε μια σχέση και να
προσθέσουμε ένα πεδίο, δίνουμε την εντολή alter
table και το όρισμα add, ως εξής :
 Alter table ΑΘΛΗΤΗΣ add (Τηλέφωνο char(10));
Δημιουργία, Τροποποίηση και
Διαγραφή Σχέσεων
 Τα καινούργια πεδία που προστίθενται σε έναν
πίνακα, έχουν αρχικά τιμές ίσες με null. Για να
τροποποιήσουμε έναν πίνακα και να διαγράψουμε
ένα πεδίο, δίνουμε την εντολή alter table και το
όρισμα drop, ως εξής :
 Alter table ΑΘΛΗΤΗΣ drop Τηλέφωνο;
Δημιουργία, Τροποποίηση και
Διαγραφή Σχέσεων
 Για να διαγράψουμε τελείως μια σχέση από τη
βάση δεδομένων στην οποία ανήκει, μαζί με τις
τιμές των εγγραφών της, δίνουμε την εντολή drop
table, ως εξής :
 Drop table ΑΘΛΗΤΗΣ;
Δημιουργία, Τροποποίηση και
Διαγραφή Σχέσεων
 Υπάρχει και η εντολή delete from ΑΘΛΗΤΗΣ, με την
οποία μπορούμε να διαγράψουμε τις τιμές
(περιεχόμενα, εγγραφές) ενός πίνακα, αλλά όχι την
ίδιο τον πίνακα.
Πίνακες Βάσεων Δεδομένων
 Οι βάσεις δεδομένων (databases) περιέχουν
αντικείμενα (objects) που ονομάζονται Πίνακες
(Tables). Οι Εγγραφές (Records) των δεδομένων
αποθηκεύονται σ’ αυτούς τους πίνακες. Οι Πίνακες
αναγνωρίζονται με τα ονόματά τους, όπως
"Persons", "Orders", "Suppliers" κ.ά.
Πίνακες Βάσεων Δεδομένων
 Οι Πίνακες περιέχουν Στήλες (Columns) και
Γραμμές (Rows) με δε-δομένα. Οι Γραμμές (Rows)
περιέχουν εγγραφές (records), όπως μία εγγραφή
για κάθε άτομο. Οι Στήλες (Columns) περιέχουν
δεδομένα, όπως First Name, Last Name, Address
και City.
Ερωτήματα της SQL
 Με την SQL, μπορούμε να κάνουμε ένα ερώτημα
(Query) σε μια βάση δεδομένων και να έχουμε ένα
αποτέλεσμα (Result) σε μορφή πίνακα (tabu-lar
form).
Ερωτήματα της SQL
Ενα ερώτημα σαν το εξής :
 SELECT LastName FROM Persons
θα δώσει ένα αποτέλεσμα σαν το εξής :
 LastName
 Παπαδόπουλος
 Αντωνιάδης
 Γεωργιάδης
Ερωτήματα της SQL
 Πρέπει να έχουμε υπόψη μας ότι μερικά συστήματα
βάσεων δεδομένων απαιτούν το σύμβολο ;
(semicolon) στο τέλος μιας εντολής SQL. Δεν θα
χρησιμοποιήσουμε εδώ το σύμβολο ;.
Χειρισμός Δεδομένων της SQL
 Όπως υπονοεί και το όνομά της, η SQL είναι μια
σύνταξη για την εκτέλεση ερωτημάτων (queries).
Αλλά η γλώσσα της SQL περιλαμβάνει επίσης μια
σύνταξη για την ενημέρωση εγγραφών, την
εισαγωγή νέων εγγραφών και τη διαγραφή
υπαρχόντων εγγραφών.
Εντολές ερωτημάτων και ενημέρωσης
 Αυτές οι εντολές ερωτημάτων και ενημέρωσης
αποτελούν μαζί τη Γλώσσα Χειρισμού Δεδομένων
(Data Manipulation Language, DML) που αποτελεί
κομμάτι της SQL:
Εντολές ερωτημάτων και ενημέρωσης
 SELECT
 εξάγει δεδομένα από μια βάση δεδομένων.
 UPDATE
 ενημερώνει δεδομένα σε μια βάση δεδομένων.
Εντολές ερωτημάτων και ενημέρωσης
 DELETE
 διαγράφει δεδομένα από μια βάση δεδομένων.
 INSERT
 εισάγει νέα δεδομένα σε μια βάση δεδομένων.
Ορισμός Δεδομένων της SQL
 Η Γλώσσα Ορισμού Δεδομένων (Data Definition
Language, DDL), που αποτελεί μέρος της SQL,
επιτρέπει τη δημιουργία και τη διαγραφή πινάκων
μιας βάσης δεδομένων. Μπορούμε επίσης να
ορίσουμε indexes (keys), να καθορίσουμε
συνδέσμους (links) ανάμεσα στους πίνακες και να
επιβάλλουμε περιορισμούς ανάμεσα στους πίνακες
μιας βάσης δεδομένων.
Η Εντολή Select
 Θα δούμε τώρα τις εντολές της Γλώσσας Χειρισμού
Δεδομένων DML (Data Manipulation Language). Η
βασικότερη είναι η εντολή Select, που
χρησιμοποιείται για την εμφάνιση (ανάκληση)
δεδομένων από τη βάση δεδομένων.
Η Εντολή Select
 Η γενική σύνταξη της εντολής Select για την
αναζήτηση δεδομένων σε μια βάση δεδομένων
είναι η εξής :
Select Πεδίο1, Πεδίο2, … Πεδίοn
From Πίνακας1, Πίνακας2, …, Πίνακαςm
Where συνθήκη;
Η Εντολή Select
 Τα πεδία που δηλώνουμε στην εντολή Select είναι
αυτά που θα εμφανίζονται στο αποτέλεσμα. Είναι
αντίστοιχο με την πράξη της προβολής (projection)
της σχεσιακής άλγεβρας.
Η Εντολή Select
 Αν θέλουμε να εμφανίζονται όλα τα πεδία θα
πρέπει να χρησιμοποιήσουμε τον χαρακτήρα *. Ο
όρος From δηλώνει τις σχέσεις (πίνακες) στους
οποίους θα γίνει η αναζήτηση. Είναι αντίστοιχο με
την πράξη του καρτεσιανού γινομένου της
σχεσιακής άλγεβρας.
Η Εντολή Select
 Ο όρος Where είναι προαιρετικός και περιέχει τη
συνθήκη που θέλουμε να ικανοποιούν οι εγγραφές
(πλειάδες) του αποτελέσματος. Είναι αντίστοιχο με
την πράξη της επιλογής (selection) της σχεσιακής
άλγεβρας.
Η Εντολή Select
 Η επόμενη εντολή Select εμφανίζει μόνο τα πεδία
Επώνυμο και Όνομα αθλητή καθώς και τον Κωδικό
του Συλλόγου στον οποίο ανήκει ο κάθε αθλητής
και αυτό γι’ όλους ανεξαιρέτως τους αθλητές που
υπάρχουν στον πίνακα ΑΘΛΗΤΗΣ :
 Select Επώνυμο, Όνομα, Κωδικός_Συλλόγου
 From ΑΘΛΗΤΗΣ;
Η Εντολή Select
 Επειδή υπάρχει η περίπτωση, ακραία μεν αλλά
εφικτή, να υπάρχουν δύο ή και περισσότερες
εγγραφές με ίδια τα παραπάνω στοιχεία (πεδία)
ενός αθλητή, μπορούμε να χρησιμοποιήσουμε και
τον όρο distinct, ώστε να μην εμφανίζονται οι
όμοιες εγγραφές, ως εξής :
 Select distinct Επώνυμο, Όνομα,
Κωδικός_Συλλόγου
 From ΑΘΛΗΤΗΣ;
Η Εντολή Select
 Αν θέλουμε να δούμε όλα τα στοιχεία (πεδία) των
αθλητών, θα πρέπει να χρησιμοποιήσουμε το
σύμβολο *, ως εξής :
 Select *
 From ΑΘΛΗΤΗΣ;
Η Εντολή Select
 Η επόμενη εντολή Select εμφανίζει εκείνους τους
αθλητές που έχουν ατομικό ρεκόρ μεγαλύτερο από
μια συγκεκριμένη τιμή :
 Select Επώνυμο, Όνομα, Κωδικός_Συλλόγου, Ρεκόρ
 From ΑΘΛΗΤΗΣ
 Where Ρεκόρ > 10.05;
Η Εντολή Select
 Η επόμενη εντολή Select εμφανίζει με τη χρήση της
διάζευξης (λογικό ή – or) εκείνους τους αθλητές
που ανήκουν σ’ έναν από δύο συλλόγους :
 Select Επώνυμο, Όνομα, Κωδικός_Συλλόγου, Ρεκόρ
 From ΑΘΛΗΤΗΣ
 Where Κωδικός_Συλλόγου = 1 or
Κωδικός_Συλλόγου = 2;
Η Εντολή Select
 Η επόμενη εντολή Select εμφανίζει με τη χρήση της
σύζευξης (λογικό και – and) εκείνους τους αθλητές
που έχουν ατομικό ρεκόρ σε μια περιοχή τιμών :
 Select Επώνυμο, Όνομα, Κωδικός_Συλλόγου, Ρεκόρ
 From ΑΘΛΗΤΗΣ
 Where Ρεκόρ > 10.00 and Ρεκόρ < 10.08;
Η Εντολή Select
 Θα δούμε τώρα πώς μπορεί να γίνει η ανάκληση
δεδομένων από πεδία που περιέχονται σε
περισσότερες από μία σχέσεις. Η αναφορά σε
πολλές σχέσεις αντιστοιχεί στην πράξη της
σύνδεσης (join) της σχεσιακής άλγεβρας.
Η Εντολή Select
 Για παράδειγμα, για τη συσχέτιση των σχέσεων
ΑΘΛΗΤΗΣ και ΣΥΜΜΕΤΟΧΗ χρησιμοποιήσαμε το
κοινό πεδίο Κωδικός_Αθλητή, το οποίο είναι
πρωτεύον κλειδί στη σχέση ΑΘΛΗΤΗΣ και ξένο
κλειδί στη σχέση ΣΥΜΜΕΤΟΧΗ.
Η Εντολή Select
 Για να βρούμε τώρα ποιοι αθλητές συμμετείχαν σε
ποιους αγώνες, δίνουμε την εξής εντολή:
 Select Κωδικός_Αθλητή, Επώνυμο, Όνομα,
Κωδικός_Αγώνα
 From ΑΘΛΗΤΗΣ, ΣΥΜΜΕΤΟΧΗ
 Where ΑΘΛΗΤΗΣ.Κωδικός_Αθλητή =
 ΣΥΜΜΕΤΟΧΗ. Κωδικός_Αθλητή;
Η Εντολή Select
 Είδαμε στο προηγούμενο παράδειγμα τη χρήση του
όρου where με την απαραίτητη συνθήκη για τη
δημιουργία της σύνδεσης των δύο σχέσεων
(πινάκων). Μπορούμε να ορίσουμε και μια πιο
πολύπλοκη συνθήκη για να βρούμε τους αθλητές
που συμμετείχαν σε κάποιον συγκεκριμένο αγώνα:
Η Εντολή Select
 Select Κωδικός_Αθλητή, Επώνυμο, Όνομα,
Κωδικός_Αγώνα
 From ΑΘΛΗΤΗΣ, ΣΥΜΜΕΤΟΧΗ
 Where (ΑΘΛΗΤΗΣ.Κωδικός_Αθλητή =
 ΣΥΜΜΕΤΟΧΗ. Κωδικός_Αθλητή) and
Κωδικός_Αγώνα=100;8.
Το Where Clause της SQL
 Το WHERE clause χρησιμοποιείται για να
καθορίσουμε ένα κριτήριο επιλογής (selection
criteria). Για να μπορέσουμε να επιλέξουμε
δεδομένα υπό συνθήκη από έναν πίνακα, πρέπει να
προσθέσουμε ένα WHERE clause σε μια εντολή
SELECT, ως εξής :
Το Where Clause της SQL
 SELECT στήλη FROM πίνακα WHERE στήλη
συνθήκη τιμή
 Με το WHERE clause, μπορούμε να
χρησιμοποιήσουμε αυτές τις συνθήκες:
Το Where Clause της SQL
 = Ίσο
 <> Όχι ίσο
 > Μεγαλύτερο από
 < Μικρότερο από
 >= Μεγαλύτερο από ή ίσο με
 <= Μικρότερο από ή ίσο με
 LIKE Επεξηγείται παρακάτω
Το Where Clause της SQL
 Σε μερικές εκδόσεις της SQL, ο τελεστής για το όχι
ίσο (<>), μπορεί να γραφεί ως εξής : !=.
 Παράδειγμα : Επιλογή Ατόμων από μια Πόλη
Το Where Clause της SQL
 Για να επιλέξουμε μόνο τα άτομα που κατοικούν
στην πόλη Φλώρινα, προσθέτουμε ένα WHERE
clause στην εντολή SELECT, ως εξής :
 SELECT * FROM Persons WHERE City='Φλώρινα'
Το Where Clause της SQL
 Έχουμε χρησιμοποιήσει μονά εισαγωγικά (single
quotes) στις τιμές των συνθηκών στα
παραδείγματα.
Το Where Clause της SQL
 Η SQL χρησιμοποιεί μονά εισαγωγικά στις
αλφαριθμητικές τιμές (κείμενο). Τα περισσότερα
συστήματα βάσεων δεδομένων αποδέχονται και τα
διπλά εισαγωγικά (double quotes). Οι αριθμητικές
τιμές δεν πρέπει να περικλείονται σε εισαγωγικά.
Το Where Clause της SQL
 Για τις τιμές κειμένου (αλφαριθμητικές) :
 Αυτό είναι σωστό :
 SELECT * FROM Persons WHERE
FirstName='Δημήτριος'
 Αυτό δεν είναι σωστό :
 SELECT * FROM Persons WHERE
FirstName=Δημήτριος
Το Where Clause της SQL
 Για τις αριθμητικές τιμές :
 Αυτό είναι σωστό :
 SELECT * FROM Persons WHERE Year>1965
 Αυτό δεν είναι σωστό :
 SELECT * FROM Persons WHERE Year>'1965'
Η Συνθήκη LIKE
 Η συνθήκη LIKE χρησιμοποιείται για να
καθορίσουμε μια αναζήτηση για ένα υπόδειγμα
(pattern) σε μια στήλη. Η σύνταξη είναι ως εξής :
 SELECT στήλη FROM πίνακα WHERE στήλη LIKE
υπόδειγμα
Η Συνθήκη LIKE
 Μπορούμε να χρησιμοποιήσουμε το σύμβολο "%"
για να ορίσουμε χαρακτήρες μπαλαντέρ
(wildcards) πριν και μετά από το υπόδειγμα.
 Παράδειγμα : Επιλογή Ατόμων με Υπόδειγμα
Ονόματος
Η Συνθήκη LIKE
 Η επόμενη εντολή SQL θα επιστρέψει τα άτομα που
το όνομά τους αρχίζει από 'O’.
 SELECT * FROM Persons WHERE FirstName LIKE
'O%'
Η Συνθήκη LIKE
 Η επόμενη εντολή SQL θα επιστρέψει τα άτομα που
το όνομά τους τελειώνει σε 'α’.
 SELECT * FROM Persons WHERE FirstName LIKE
'%α'
Η Συνθήκη LIKE
 Η επόμενη εντολή SQL θα επιστρέψει τα άτομα που
το όνομά τους περιέχει το 'γα’.
 SELECT * FROM Persons WHERE FirstName LIKE
'%γα%'
Η Λέξη Κλειδί Distinct
 Η λέξη κλειδί DISTINCT χρησιμοποιείται για να
επιστρέφει μόνο διακριτές (διαφορετικές)
(distinct, different) τιμές. Η εντολή SELECT της SQL
επιστρέφει στοιχεία από τις στήλες ενός πίνακα,
αλλά τι μπορούμε να κάνουμε αν θέλουμε να
επιλέξουμε μόνο διακριτά στοιχεία (distinct eleme-
nts);
Η Λέξη Κλειδί Distinct
 Στην SQL, αυτό που πρέπει να κάνουμε είναι να
προσθέσουμε μια λέξη κλειδί DISTINCT στην
εντολή SELECT, ως εξής :
 SELECT DISTINCT ονόματα_στηλών FROM
όνομα_πίνακα
Η Λέξη Κλειδί Distinct
 Παράδειγμα
 Επιλογή εταιρειών από έναν πίνακα παραγγελιών.
 Ενας απλός πίνακας παραγγελιών :
 Company OrderNumber
 Line Computers 3412
 Sony 2312
 Algorithm 4678
 Sony 6798
Η Λέξη Κλειδί Distinct
 Η επόμενη εντολή SQL :
 SELECT Company FROM Orders
 θα δώσει αυτό το αποτέλεσμα :
 Company
 Line Computers
 Sony
 Algorithm
 Sony
Η Λέξη Κλειδί Distinct
 Βλέπουμε ότι η εταιρεία Sony εμφανίζεται δύο
φορές στο αποτέλεσμα. Μερικές φορές δεν το
θέλουμε αυτό.
 Παράδειγμα
 Επιλογή ξεχωριστών εταιρειών από έναν πίνακα
παραγγελιών.
Η Λέξη Κλειδί Distinct
Η επόμενη εντολή SQL :
SELECT DISTINCT Company FROM Orders
θα δώσει αυτό το αποτέλεσμα :
 Company
 Line Computers
 Sony
 Algorithm
Τώρα η εταιρεία Sony εμφανίζεται μόνο μία φορά
στο αποτέλεσμα.
Η Λέξη Κλειδί Order By
 Η λέξη κλειδί ORDER BY χρησιμοποιείται για να
ταξινομήσει το αποτέλεσμα. Το ORDER BY clause
χρησιμοποιείται για να ταξινομήσει τις γραμμές.
 Πίνακας Παραγγελίες :
 Company OrderNumber
 Digital Shop 3412
 ABC Shop 5678
 Sony 2312
 Sony 6798
Η Λέξη Κλειδί Order By
 Παράδειγμα
 Για να εμφανίσουμε τις εταιρείες σε αλφαβητική σειρά :
 SELECT Company, OrderNumber FROM Orders
 ORDER BY Company
 Αποτέλεσμα :
 Company OrderNumber
 ABC Shop 5678
 Digital Shop 3412
 Sony 6798
 Sony 2312
Η Εντολή INSERT INTO
 Η εντολή INSERT INTO εισάγει νέες γραμμές σ’ έναν
πίνακα. Η σύνταξή της είναι ως εξής :
 INSERT INTO όνομα_πίνακα
 VALUES (τιμή1, τιμή2, ...)
Η Εντολή INSERT INTO
 Μπορούμε επίσης να καθορίσουμε τις στήλες για
τις οποίες θέλουμε να εισάγουμε δεδομένα :
 INSERT INTO όνομα_πίνακα(στήλη1, στήλη2, ...)
 VALUES (τμή1, τιμή2, ...)
Η Εντολή INSERT INTO
 Ο επόμενος πίνακας "Persons" :
 LastNameFirstName Address City
 Σουμπάση Μαρία Καλλέργη 15Φλώρινα
Η Εντολή INSERT INTO
 και αυτή η εντολή SQL :
 INSERT INTO Persons
 VALUES ('Σιάμκουρης', 'Ιωάννης', 'Π. Μελά 90',
'Καστοριά')
 δίνουν αυτό το αποτέλεσμα :
 LastNameFirstName Address City
 Σουμπάση Μαρία Καλλέργη 15Φλώρινα
 Σιάμκουρης Ιωάννης Π. Μελά 90
Καστοριά
Η Εντολή Update
 Η εντολή UPDATE ενημερώνει ή αλλάζει γραμμές. Η
σύνταξή της είναι ως εξής :
 UPDATE όνομα_πίνακα SET
όνομα_στήλης=νέα_τιμή
 WHERE όνομα_στήλης=τιμή
Η Εντολή Update
 Αρχικός πίνακας Person :
LastName FirstName Address City
Σουμπάση Μαρία Καλλέργη 15Φλώρινα
Σιάμκουρης Ιωάννης Π. Μελά 90 Καστοριά
Νικολάου Ταγμ. Ναούμ 30
Η Εντολή Update
 Ενημέρωση μίας Στήλης σε μια Γραμμή
 Θέλουμε να προσθέσουμε ένα όνομα στο άτομο
που έχει το επώνυμο "Νικολάου" :
 UPDATE Person SET FirstName = 'Αθηνά'
 WHERE LastName = 'Νικολάου'
Η Εντολή Update
 Ενημέρωση Πολλών Στηλών σε μια Γραμμή
 Για το ίδιο άτομο θέλουμε να αλλάξουμε τη
διεύθυνση και να προσθέσουμε ένα όνομα για την
πόλη:
 UPDATE Person
 SET Address = 'Μεγαρόβου 12', City ='Φλώρινα'
 WHERE LastName = 'Νικολάου'
Η Εντολή Update
 Αποτέλεσμα :
LastName FirstName Address City
Σουμπάση Μαρία Καλλέργη 15Φλώρινα
Σιάμκουρης Ιωάννης Π. Μελά 90 Καστοριά
Νικολάου Αθηνά Μεγαρ 12 Φλώρινα
Η Εντολή Delete
 Η εντολή DELETE χρησιμοποιείται για να
διαγράψουμε γραμμές από έναν πίνακα. Η σύνταξή
της είναι ως εξής :
 DELETE FROM όνομα_πίνακα
 WHERE όνομα_στήλης = τιμή
Η Εντολή Delete
 Αρχικός πίνακας Person :
LastName FirstName Address City
Σουμπάση Μαρία Καλλέργη 15Φλώρινα
Σιάμκουρης Ιωάννης Π. Μελά 90 Καστοριά
Νικολάου Αθηνά Μεγαρ 12 Φλώρινα
Η Εντολή Delete
 Διαγραφή μιας Γραμμής
 Θα διαγράψουμε την "Νικολάου Αθηνά" :
 DELETE FROM Person WHERE LastName =
'Νικολάου'
Η Εντολή Delete
 Αποτέλεσμα :
LastName FirstName Address City
Σουμπάση Μαρία Καλλέργη 15Φλώρινα
Σιάμκουρης Ιωάννης Π. Μελά 90 Καστοριά
Οι Λέξεις Κλειδιά COUNT και DISTINCT
 Οι λέξεις κλειδιά DISTINCT και COUNT μπορούν να
χρησιμοποιηθούν μαζί για να μετρήσουμε τον
αριθμό των διακριτών αποτελεσμάτων (di-stinct
results).
Οι Λέξεις Κλειδιά COUNT και DISTINCT
 Η σύνταξη είναι ως εξής :
 SELECT DISTINCT COUNT(στήλες) FROM
πίνακας
 Με τον επόμενο πίνακα "Orders" :
 Company OrderNumber
 Hitachi 3412
 Sony 2312
 ABC 4678
 Sony 6798
Οι Λέξεις Κλειδιά COUNT και DISTINCT
 Η επόμενη εντολή SQL :
 SELECT COUNT(Company) FROM Orders
 θα δώσει αυτό το αποτέλεσμα : 4
Οι Λέξεις Κλειδιά COUNT και DISTINCT
 Η επόμενη εντολή SQL :
 SELECT DISTINCT COUNT(Company) FROM Orders
 θα δώσει αυτό το αποτέλεσμα : 3
Η Λέξη Κλειδί Group By
 Η λέξη κλειδί GROUP BY έχει προστεθεί στην SQL
επειδή οι αθροιστικές συναρτήσεις (aggregate
functions), όπως είναι η SUM, επιστρέφουν το
σύνολο όλων των τιμών μιας στήλης κάθε φορά
που καλούνται.
Η Λέξη Κλειδί Group By
 καλούνται. Χωρίς την λέξη κλειδί GROUP BY, το να
βρούμε το άθροισμα για κά-θε ανεξάρτητη ομάδα
τιμών μιας στήλης θα ήταν αδύνατο. Η σύνταξη της
GROUP BY είναι η εξής :
 SELECT στήλη, SUM(στήλη) FROM πίνακας GROUP
BY στήλη
Η Λέξη Κλειδί Group By
 Παράδειγμα με GROUP BY
 Ο παρακάτω πίνακας "Sales" :
 Company Amount
 Grundig 5500
 IBM 4500
 Grundig 7100
Η Λέξη Κλειδί Group By
 και αυτή η εντολή SQL :
 SELECT Company, SUM(Amount) FROM Sales
 θα δώσουν αυτό το αποτέλεσμα :
 Company SUM(Amount)
 Grundig 17100
 IBM 17100
 Grundig 17100
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL
Εισαγωγή στην SQL

More Related Content

What's hot

Eισαγωγή στις αρχές της επιστήμης των HY κεφ 1
Eισαγωγή στις αρχές της επιστήμης των HY κεφ 1Eισαγωγή στις αρχές της επιστήμης των HY κεφ 1
Eισαγωγή στις αρχές της επιστήμης των HY κεφ 1Ιωάννου Γιαννάκης
 
01 - Εισαγωγή σε Βάσεις Δεδομένων
01 - Εισαγωγή σε Βάσεις Δεδομένων01 - Εισαγωγή σε Βάσεις Δεδομένων
01 - Εισαγωγή σε Βάσεις ΔεδομένωνFotis Kokkoras
 
σενάριο Scratch δομή_επανάληψης
σενάριο Scratch δομή_επανάληψηςσενάριο Scratch δομή_επανάληψης
σενάριο Scratch δομή_επανάληψηςVasilis Sotiroudas
 
αεππ κεφαλαιο 1 ανάλυση προβλήματος
αεππ κεφαλαιο 1 ανάλυση προβλήματοςαεππ κεφαλαιο 1 ανάλυση προβλήματος
αεππ κεφαλαιο 1 ανάλυση προβλήματοςevoyiatz
 
Βάσεις δεδομένων Κεφ.1
Βάσεις δεδομένων Κεφ.1Βάσεις δεδομένων Κεφ.1
Βάσεις δεδομένων Κεφ.1marygeorg
 
Εισαγωγή στις Βάσεις Δεδομένων
Εισαγωγή στις Βάσεις ΔεδομένωνΕισαγωγή στις Βάσεις Δεδομένων
Εισαγωγή στις Βάσεις Δεδομένωνgkhglpzg
 
Φύλλα εργασίας Γεωμετρίας για την Α και Β Λυκείου [2018 - 19]
Φύλλα εργασίας Γεωμετρίας για την Α και Β Λυκείου [2018 - 19]Φύλλα εργασίας Γεωμετρίας για την Α και Β Λυκείου [2018 - 19]
Φύλλα εργασίας Γεωμετρίας για την Α και Β Λυκείου [2018 - 19]Μάκης Χατζόπουλος
 
Ανάπτυξη εφαρμογών κεφ. 2 βασικές έννοιες αλγορίθμων
 Ανάπτυξη εφαρμογών κεφ. 2  βασικές έννοιες αλγορίθμων Ανάπτυξη εφαρμογών κεφ. 2  βασικές έννοιες αλγορίθμων
Ανάπτυξη εφαρμογών κεφ. 2 βασικές έννοιες αλγορίθμωνevoyiatz
 
ΑΕΠΠ: 22ο Φύλλο Ασκήσεων
ΑΕΠΠ: 22ο Φύλλο ΑσκήσεωνΑΕΠΠ: 22ο Φύλλο Ασκήσεων
ΑΕΠΠ: 22ο Φύλλο ΑσκήσεωνNikos Michailidis
 
Σημειώσεις ανάπτυξη εφαρμογών Δομη επανάληψης
Σημειώσεις ανάπτυξη εφαρμογών Δομη επανάληψηςΣημειώσεις ανάπτυξη εφαρμογών Δομη επανάληψης
Σημειώσεις ανάπτυξη εφαρμογών Δομη επανάληψηςΘανάσης Δρούγας
 
Ενότητα 4 Κεφάλαιο 14
Ενότητα 4 Κεφάλαιο 14Ενότητα 4 Κεφάλαιο 14
Ενότητα 4 Κεφάλαιο 14Nikos Koulouridis
 
Εισαγωγή στις αρχές της επιστήμης των Η/Υ
Εισαγωγή στις αρχές της επιστήμης των Η/ΥΕισαγωγή στις αρχές της επιστήμης των Η/Υ
Εισαγωγή στις αρχές της επιστήμης των Η/ΥMinistry of Education
 
ECDL Access Σημειώσεις 5/7
ECDL Access Σημειώσεις 5/7ECDL Access Σημειώσεις 5/7
ECDL Access Σημειώσεις 5/7Michael Ntallas
 
Φύλλο εργασίας για HTML & CSS
Φύλλο εργασίας για HTML & CSSΦύλλο εργασίας για HTML & CSS
Φύλλο εργασίας για HTML & CSSlyk-tragaias
 
Μετατροπή δεκαδικών σε κλάσματα και αντίστροφα
Μετατροπή δεκαδικών σε κλάσματα και αντίστροφαΜετατροπή δεκαδικών σε κλάσματα και αντίστροφα
Μετατροπή δεκαδικών σε κλάσματα και αντίστροφαΓιάννης Φερεντίνος
 
δικτυα υπολογιστων λουδαρου
δικτυα υπολογιστων λουδαρουδικτυα υπολογιστων λουδαρου
δικτυα υπολογιστων λουδαρουVasso Servou
 

What's hot (20)

Eισαγωγή στις αρχές της επιστήμης των HY κεφ 1
Eισαγωγή στις αρχές της επιστήμης των HY κεφ 1Eισαγωγή στις αρχές της επιστήμης των HY κεφ 1
Eισαγωγή στις αρχές της επιστήμης των HY κεφ 1
 
01 - Εισαγωγή σε Βάσεις Δεδομένων
01 - Εισαγωγή σε Βάσεις Δεδομένων01 - Εισαγωγή σε Βάσεις Δεδομένων
01 - Εισαγωγή σε Βάσεις Δεδομένων
 
σενάριο Scratch δομή_επανάληψης
σενάριο Scratch δομή_επανάληψηςσενάριο Scratch δομή_επανάληψης
σενάριο Scratch δομή_επανάληψης
 
Ψηφιακός κόσμος
Ψηφιακός κόσμοςΨηφιακός κόσμος
Ψηφιακός κόσμος
 
Ενσωμάτωση και CSS
Ενσωμάτωση και CSSΕνσωμάτωση και CSS
Ενσωμάτωση και CSS
 
αεππ κεφαλαιο 1 ανάλυση προβλήματος
αεππ κεφαλαιο 1 ανάλυση προβλήματοςαεππ κεφαλαιο 1 ανάλυση προβλήματος
αεππ κεφαλαιο 1 ανάλυση προβλήματος
 
Βάσεις δεδομένων Κεφ.1
Βάσεις δεδομένων Κεφ.1Βάσεις δεδομένων Κεφ.1
Βάσεις δεδομένων Κεφ.1
 
Εισαγωγή στις Βάσεις Δεδομένων
Εισαγωγή στις Βάσεις ΔεδομένωνΕισαγωγή στις Βάσεις Δεδομένων
Εισαγωγή στις Βάσεις Δεδομένων
 
Φύλλα εργασίας Γεωμετρίας για την Α και Β Λυκείου [2018 - 19]
Φύλλα εργασίας Γεωμετρίας για την Α και Β Λυκείου [2018 - 19]Φύλλα εργασίας Γεωμετρίας για την Α και Β Λυκείου [2018 - 19]
Φύλλα εργασίας Γεωμετρίας για την Α και Β Λυκείου [2018 - 19]
 
Ανάπτυξη εφαρμογών κεφ. 2 βασικές έννοιες αλγορίθμων
 Ανάπτυξη εφαρμογών κεφ. 2  βασικές έννοιες αλγορίθμων Ανάπτυξη εφαρμογών κεφ. 2  βασικές έννοιες αλγορίθμων
Ανάπτυξη εφαρμογών κεφ. 2 βασικές έννοιες αλγορίθμων
 
ΑΕΠΠ - Βασικές έννοιες προγραμματισμού
ΑΕΠΠ - Βασικές έννοιες προγραμματισμούΑΕΠΠ - Βασικές έννοιες προγραμματισμού
ΑΕΠΠ - Βασικές έννοιες προγραμματισμού
 
ΑΕΠΠ: 22ο Φύλλο Ασκήσεων
ΑΕΠΠ: 22ο Φύλλο ΑσκήσεωνΑΕΠΠ: 22ο Φύλλο Ασκήσεων
ΑΕΠΠ: 22ο Φύλλο Ασκήσεων
 
Σημειώσεις ανάπτυξη εφαρμογών Δομη επανάληψης
Σημειώσεις ανάπτυξη εφαρμογών Δομη επανάληψηςΣημειώσεις ανάπτυξη εφαρμογών Δομη επανάληψης
Σημειώσεις ανάπτυξη εφαρμογών Δομη επανάληψης
 
Ενότητα 4 Κεφάλαιο 14
Ενότητα 4 Κεφάλαιο 14Ενότητα 4 Κεφάλαιο 14
Ενότητα 4 Κεφάλαιο 14
 
Εισαγωγή στις αρχές της επιστήμης των Η/Υ
Εισαγωγή στις αρχές της επιστήμης των Η/ΥΕισαγωγή στις αρχές της επιστήμης των Η/Υ
Εισαγωγή στις αρχές της επιστήμης των Η/Υ
 
ECDL Access Σημειώσεις 5/7
ECDL Access Σημειώσεις 5/7ECDL Access Σημειώσεις 5/7
ECDL Access Σημειώσεις 5/7
 
Φύλλο εργασίας για HTML & CSS
Φύλλο εργασίας για HTML & CSSΦύλλο εργασίας για HTML & CSS
Φύλλο εργασίας για HTML & CSS
 
Μετατροπή δεκαδικών σε κλάσματα και αντίστροφα
Μετατροπή δεκαδικών σε κλάσματα και αντίστροφαΜετατροπή δεκαδικών σε κλάσματα και αντίστροφα
Μετατροπή δεκαδικών σε κλάσματα και αντίστροφα
 
Energy
EnergyEnergy
Energy
 
δικτυα υπολογιστων λουδαρου
δικτυα υπολογιστων λουδαρουδικτυα υπολογιστων λουδαρου
δικτυα υπολογιστων λουδαρου
 

More from Nikos Mpalatsoukas

Μαζική αποστολή email
Μαζική αποστολή emailΜαζική αποστολή email
Μαζική αποστολή emailNikos Mpalatsoukas
 
Χρήση Vba για την πρόσβαση σε βάση δεδομένων
Χρήση Vba για την πρόσβαση σε βάση δεδομένωνΧρήση Vba για την πρόσβαση σε βάση δεδομένων
Χρήση Vba για την πρόσβαση σε βάση δεδομένωνNikos Mpalatsoukas
 
Δημιουργία βιογραφικού europass cv
Δημιουργία βιογραφικού europass cvΔημιουργία βιογραφικού europass cv
Δημιουργία βιογραφικού europass cvNikos Mpalatsoukas
 
Διαφοροποιημένη διδασκαλία στην πληροφορική
Διαφοροποιημένη διδασκαλία στην πληροφορικήΔιαφοροποιημένη διδασκαλία στην πληροφορική
Διαφοροποιημένη διδασκαλία στην πληροφορικήNikos Mpalatsoukas
 
Κανονικοποίηση βάσης δεδομένων
Κανονικοποίηση βάσης δεδομένωνΚανονικοποίηση βάσης δεδομένων
Κανονικοποίηση βάσης δεδομένωνNikos Mpalatsoukas
 
Wordpress administrator home-page
Wordpress administrator home-pageWordpress administrator home-page
Wordpress administrator home-pageNikos Mpalatsoukas
 
Photoshop levels πολύ φωτεινή εικόνα
Photoshop levels πολύ φωτεινή εικόναPhotoshop levels πολύ φωτεινή εικόνα
Photoshop levels πολύ φωτεινή εικόναNikos Mpalatsoukas
 
Photoshop curves και levels σε πολύ σκοτεινή εικόνα
Photoshop curves και levels σε πολύ σκοτεινή εικόναPhotoshop curves και levels σε πολύ σκοτεινή εικόνα
Photoshop curves και levels σε πολύ σκοτεινή εικόναNikos Mpalatsoukas
 
Εγκατάσταση tux-paint
Εγκατάσταση tux-paintΕγκατάσταση tux-paint
Εγκατάσταση tux-paintNikos Mpalatsoukas
 
Οδηγίες για την εξ αποστάσεως εκπαίδευση με το webex
Οδηγίες για την εξ αποστάσεως εκπαίδευση με το webexΟδηγίες για την εξ αποστάσεως εκπαίδευση με το webex
Οδηγίες για την εξ αποστάσεως εκπαίδευση με το webexNikos Mpalatsoukas
 
Σύνδεση εκπαιδευόμενου στο Webex μέσω smartphone
Σύνδεση εκπαιδευόμενου στο Webex μέσω smartphoneΣύνδεση εκπαιδευόμενου στο Webex μέσω smartphone
Σύνδεση εκπαιδευόμενου στο Webex μέσω smartphoneNikos Mpalatsoukas
 
Σύνδεση εκπαιδευόμενου στο Webex μέσω υπολογιστή
Σύνδεση εκπαιδευόμενου στο Webex μέσω υπολογιστήΣύνδεση εκπαιδευόμενου στο Webex μέσω υπολογιστή
Σύνδεση εκπαιδευόμενου στο Webex μέσω υπολογιστήNikos Mpalatsoukas
 
Πως να κάνετε activate το Webex
Πως να κάνετε activate το WebexΠως να κάνετε activate το Webex
Πως να κάνετε activate το WebexNikos Mpalatsoukas
 
Εκτίμηση αντίκτυπου σχετικά με την προστασία δεδομένων
Εκτίμηση αντίκτυπου σχετικά με την προστασία δεδομένωνΕκτίμηση αντίκτυπου σχετικά με την προστασία δεδομένων
Εκτίμηση αντίκτυπου σχετικά με την προστασία δεδομένωνNikos Mpalatsoukas
 
Χαρτογράφηση ροής δεδομένων Data Flow Mapping
Χαρτογράφηση ροής δεδομένων Data Flow MappingΧαρτογράφηση ροής δεδομένων Data Flow Mapping
Χαρτογράφηση ροής δεδομένων Data Flow MappingNikos Mpalatsoukas
 
Η λίστα ελέγχου συμβατότητας με το Γενικό Κανονισμο προστασίας Δεδομένων
Η λίστα ελέγχου συμβατότητας με το Γενικό Κανονισμο προστασίας ΔεδομένωνΗ λίστα ελέγχου συμβατότητας με το Γενικό Κανονισμο προστασίας Δεδομένων
Η λίστα ελέγχου συμβατότητας με το Γενικό Κανονισμο προστασίας ΔεδομένωνNikos Mpalatsoukas
 
Διαβίβαση δεδομένων σε άλλον οργανισμό και GDPR
Διαβίβαση δεδομένων σε άλλον οργανισμό και GDPRΔιαβίβαση δεδομένων σε άλλον οργανισμό και GDPR
Διαβίβαση δεδομένων σε άλλον οργανισμό και GDPRNikos Mpalatsoukas
 

More from Nikos Mpalatsoukas (20)

Μαζική αποστολή email
Μαζική αποστολή emailΜαζική αποστολή email
Μαζική αποστολή email
 
Χρήση Vba για την πρόσβαση σε βάση δεδομένων
Χρήση Vba για την πρόσβαση σε βάση δεδομένωνΧρήση Vba για την πρόσβαση σε βάση δεδομένων
Χρήση Vba για την πρόσβαση σε βάση δεδομένων
 
Vba παρουσίαση
Vba παρουσίασηVba παρουσίαση
Vba παρουσίαση
 
Δημιουργία βιογραφικού europass cv
Δημιουργία βιογραφικού europass cvΔημιουργία βιογραφικού europass cv
Δημιουργία βιογραφικού europass cv
 
Διαφοροποιημένη διδασκαλία στην πληροφορική
Διαφοροποιημένη διδασκαλία στην πληροφορικήΔιαφοροποιημένη διδασκαλία στην πληροφορική
Διαφοροποιημένη διδασκαλία στην πληροφορική
 
Κανονικοποίηση βάσης δεδομένων
Κανονικοποίηση βάσης δεδομένωνΚανονικοποίηση βάσης δεδομένων
Κανονικοποίηση βάσης δεδομένων
 
Wordpress administrator home-page
Wordpress administrator home-pageWordpress administrator home-page
Wordpress administrator home-page
 
Photoshop levels πολύ φωτεινή εικόνα
Photoshop levels πολύ φωτεινή εικόναPhotoshop levels πολύ φωτεινή εικόνα
Photoshop levels πολύ φωτεινή εικόνα
 
Photoshop curves και levels σε πολύ σκοτεινή εικόνα
Photoshop curves και levels σε πολύ σκοτεινή εικόναPhotoshop curves και levels σε πολύ σκοτεινή εικόνα
Photoshop curves και levels σε πολύ σκοτεινή εικόνα
 
Εγκατάσταση tux-paint
Εγκατάσταση tux-paintΕγκατάσταση tux-paint
Εγκατάσταση tux-paint
 
Οδηγίες για την εξ αποστάσεως εκπαίδευση με το webex
Οδηγίες για την εξ αποστάσεως εκπαίδευση με το webexΟδηγίες για την εξ αποστάσεως εκπαίδευση με το webex
Οδηγίες για την εξ αποστάσεως εκπαίδευση με το webex
 
Ασφάλεια στο webex
Ασφάλεια στο webexΑσφάλεια στο webex
Ασφάλεια στο webex
 
Σύνδεση εκπαιδευόμενου στο Webex μέσω smartphone
Σύνδεση εκπαιδευόμενου στο Webex μέσω smartphoneΣύνδεση εκπαιδευόμενου στο Webex μέσω smartphone
Σύνδεση εκπαιδευόμενου στο Webex μέσω smartphone
 
Σύνδεση εκπαιδευόμενου στο Webex μέσω υπολογιστή
Σύνδεση εκπαιδευόμενου στο Webex μέσω υπολογιστήΣύνδεση εκπαιδευόμενου στο Webex μέσω υπολογιστή
Σύνδεση εκπαιδευόμενου στο Webex μέσω υπολογιστή
 
Πως να κάνετε activate το Webex
Πως να κάνετε activate το WebexΠως να κάνετε activate το Webex
Πως να κάνετε activate το Webex
 
GDPR GAP Analysis
GDPR GAP AnalysisGDPR GAP Analysis
GDPR GAP Analysis
 
Εκτίμηση αντίκτυπου σχετικά με την προστασία δεδομένων
Εκτίμηση αντίκτυπου σχετικά με την προστασία δεδομένωνΕκτίμηση αντίκτυπου σχετικά με την προστασία δεδομένων
Εκτίμηση αντίκτυπου σχετικά με την προστασία δεδομένων
 
Χαρτογράφηση ροής δεδομένων Data Flow Mapping
Χαρτογράφηση ροής δεδομένων Data Flow MappingΧαρτογράφηση ροής δεδομένων Data Flow Mapping
Χαρτογράφηση ροής δεδομένων Data Flow Mapping
 
Η λίστα ελέγχου συμβατότητας με το Γενικό Κανονισμο προστασίας Δεδομένων
Η λίστα ελέγχου συμβατότητας με το Γενικό Κανονισμο προστασίας ΔεδομένωνΗ λίστα ελέγχου συμβατότητας με το Γενικό Κανονισμο προστασίας Δεδομένων
Η λίστα ελέγχου συμβατότητας με το Γενικό Κανονισμο προστασίας Δεδομένων
 
Διαβίβαση δεδομένων σε άλλον οργανισμό και GDPR
Διαβίβαση δεδομένων σε άλλον οργανισμό και GDPRΔιαβίβαση δεδομένων σε άλλον οργανισμό και GDPR
Διαβίβαση δεδομένων σε άλλον οργανισμό και GDPR
 

Recently uploaded

Επίσκεψη στο 11ο Γυμνάσιο Πάτρας
Επίσκεψη              στο 11ο Γυμνάσιο ΠάτραςΕπίσκεψη              στο 11ο Γυμνάσιο Πάτρας
Επίσκεψη στο 11ο Γυμνάσιο ΠάτραςDimitra Mylonaki
 
RODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣH
RODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣHRODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣH
RODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣHROUT Family
 
Η Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docx
Η Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docxΗ Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docx
Η Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docxeucharis
 
EKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOY
EKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOYEKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOY
EKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOYssuser369a35
 
Πασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptx
Πασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptxΠασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptx
Πασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptx36dimperist
 
Πασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptx
Πασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptxΠασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptx
Πασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptx36dimperist
 
Γιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξεις
Γιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξειςΓιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξεις
Γιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξειςΟΛΓΑ ΤΣΕΧΕΛΙΔΟΥ
 
Μια νύχτα σε κατάστημα παιχνιδιών.pdf
Μια νύχτα σε κατάστημα             παιχνιδιών.pdfΜια νύχτα σε κατάστημα             παιχνιδιών.pdf
Μια νύχτα σε κατάστημα παιχνιδιών.pdfDimitra Mylonaki
 
ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-24
ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-24ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-24
ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-242lykkomo
 
Μια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑ
Μια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑΜια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑ
Μια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑDimitra Mylonaki
 
2η Διεθνική Συνάντηση μαθητών και καθηγητών στο Σαλέρνο της Ιταλίας
2η Διεθνική Συνάντηση μαθητών και καθηγητών στο Σαλέρνο της Ιταλίας2η Διεθνική Συνάντηση μαθητών και καθηγητών στο Σαλέρνο της Ιταλίας
2η Διεθνική Συνάντηση μαθητών και καθηγητών στο Σαλέρνο της ΙταλίαςKonstantina Katirtzi
 
ΠΑΝΕΛΛΗΝΙΕΣ 2024 ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΝΕΟΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ ΚΑΙ ΛΟΓΟΤΕΧΝΙΑ.pdf
ΠΑΝΕΛΛΗΝΙΕΣ 2024 ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΝΕΟΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ ΚΑΙ ΛΟΓΟΤΕΧΝΙΑ.pdfΠΑΝΕΛΛΗΝΙΕΣ 2024 ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΝΕΟΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ ΚΑΙ ΛΟΓΟΤΕΧΝΙΑ.pdf
ΠΑΝΕΛΛΗΝΙΕΣ 2024 ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΝΕΟΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ ΚΑΙ ΛΟΓΟΤΕΧΝΙΑ.pdfssuserf9afe7
 
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ 2008
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ  2008Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ  2008
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ 2008Θεόδωρος Μαραγκούλας
 
Πασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptx
Πασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptxΠασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptx
Πασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptx36dimperist
 
ΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptx
ΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptxΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptx
ΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptxssuserb0ed14
 

Recently uploaded (15)

Επίσκεψη στο 11ο Γυμνάσιο Πάτρας
Επίσκεψη              στο 11ο Γυμνάσιο ΠάτραςΕπίσκεψη              στο 11ο Γυμνάσιο Πάτρας
Επίσκεψη στο 11ο Γυμνάσιο Πάτρας
 
RODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣH
RODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣHRODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣH
RODOPI CHALLENGE (ROC 50 MILES) 2024 ΤΕΧΝΙΚΗ ΕΝΗΜΕΡΩΣH
 
Η Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docx
Η Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docxΗ Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docx
Η Κινέζικη Αστρολογία - Ημερολόγιο - Ζώδια.docx
 
EKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOY
EKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOYEKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOY
EKSETASTEA KAI DIDAKTEA YLH G TAKSHS GENIKOY LYKEIOY
 
Πασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptx
Πασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptxΠασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptx
Πασχαλινές Λαμπάδες από ΣΤ τάξη του σχολείου μας.pptx
 
Πασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptx
Πασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptxΠασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptx
Πασχαλινά αυγά από τη Β΄ τάξη του σχολείου μας.pptx
 
Γιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξεις
Γιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξειςΓιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξεις
Γιορτή της μητέρας-Φύλλα εργασιών για όλες τις τάξεις
 
Μια νύχτα σε κατάστημα παιχνιδιών.pdf
Μια νύχτα σε κατάστημα             παιχνιδιών.pdfΜια νύχτα σε κατάστημα             παιχνιδιών.pdf
Μια νύχτα σε κατάστημα παιχνιδιών.pdf
 
ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-24
ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-24ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-24
ΕΝΔΟΣΧΟΛΙΚΕΣ_ΠΡΟΓΡΑΜΜΑ endosxolikes 2023-24
 
Μια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑ
Μια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑΜια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑ
Μια νύχτα σε κατάστημα παιχνιδιώνΚΕΙΜΕΝΑ
 
2η Διεθνική Συνάντηση μαθητών και καθηγητών στο Σαλέρνο της Ιταλίας
2η Διεθνική Συνάντηση μαθητών και καθηγητών στο Σαλέρνο της Ιταλίας2η Διεθνική Συνάντηση μαθητών και καθηγητών στο Σαλέρνο της Ιταλίας
2η Διεθνική Συνάντηση μαθητών και καθηγητών στο Σαλέρνο της Ιταλίας
 
ΠΑΝΕΛΛΗΝΙΕΣ 2024 ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΝΕΟΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ ΚΑΙ ΛΟΓΟΤΕΧΝΙΑ.pdf
ΠΑΝΕΛΛΗΝΙΕΣ 2024 ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΝΕΟΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ ΚΑΙ ΛΟΓΟΤΕΧΝΙΑ.pdfΠΑΝΕΛΛΗΝΙΕΣ 2024 ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΝΕΟΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ ΚΑΙ ΛΟΓΟΤΕΧΝΙΑ.pdf
ΠΑΝΕΛΛΗΝΙΕΣ 2024 ΠΡΟΤΕΙΝΟΜΕΝΑ ΘΕΜΑΤΑ ΝΕΟΕΛΛΗΝΙΚΗ ΓΛΩΣΣΑ ΚΑΙ ΛΟΓΟΤΕΧΝΙΑ.pdf
 
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ 2008
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ  2008Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ  2008
Η ΑΔΙΚΕΙΑ ΤΟΥ ΔΙΑΓΩΝΙΣΜΟΥ ΑΣΕΠ ΕΚΠΑΙΔΕΥΤΙΚΩΝ 2008
 
Πασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptx
Πασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptxΠασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptx
Πασχαλινές λαμπάδες από τη Δ΄ τάξη του σχολείου μας.pptx
 
ΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptx
ΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptxΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptx
ΚΛΙΜΑΤΙΚΗ ΑΛΛΑΓΗ ΚΑΙ ΠΟΛΙΤΙΚΕΣ ΤΗΣ Ε.Ε..pptx
 

Εισαγωγή στην SQL

  • 2. Η γλώσσα SQL  Η SQL αποτελείται από δύο βασικά μέρη: τη γλώσσα SQL Ορισμού Δεδομένων (SQL DDL) και τη γλώσσα SQL χειρισμού δεδομένων (SQL DML).  Με την γλώσσα ορισμού δεδομένων ορίζεται το σχήμα των δεδομένων, δηλαδή η μορφή τους, ενώ με τη γλώσσα χειρισμού δεδομένων ορίζονται οι λειτουργίες αποθήκευσης και ανάκτησης των δεδομένων.
  • 3. Η γλώσσα SQL  Επομένως η γλώσσα SQL περιέχει εντολές για τη δημιουργία και την επεξεργασία της μορφής των πινάκων (ορισμός δεδομένων), αλλά και εντολές για την εισαγωγή, ενημέρωση, διαγραφή και ανάκτηση των δεδομένων που είναι αποθηκευμένα σε πίνακες (χειρισμός δεδομένων).
  • 4. Η γλώσσα SQL  Αν για παράδειγμα θέλουμε να αποθηκεύσουμε τα στοιχεία των μαθητών ενός σχολείου σε σχεσιακή βάση δεδομένων, θα χρησιμοποιήσουμε τη γλώσσα SQL DDL για να δημιουργήσουμε τους σχεσιακούς πίνακες και κατόπιν θα χρησιμοποιήσουμε τη γλώσσα SQL DML για να εισάγουμε τα στοιχεία των μαθητών και για να κάνουμε ερωτήσεις που θα ανακτούν δεδομένα από τη βάση.
  • 5. Σε ένα Σχεσιακό Σύστημα Διαχείρισης Βάσεων Δεδομένων:  Δημιουργώ πίνακες με τη Γλώσσα Ορισμού Δεδομένων (DDL)  Εισάγω δεδομένα στους σχεσιακούς πίνακες με τη Γλώσσα Χειρισμού Δεδομένων (DML)  Ενημερώνω/διαγράφω τα δεδομένα των πινάκων με τη Γλώσσα Χειρισμού Δεδομένων (DML)  Εκτελώ ερωτήματα ανάκτησης για τα δεδομένα των πινάκων με τη Γλώσσα Χειρισμού Δεδομένων (DML)
  • 6. Η γλώσσα SQL  Φυσικά η δημιουργία πινάκων και η εισαγωγή/ενημέρωση/διαγραφή δεδομένων σε αυτούς μπορεί να γίνει και με γραφικά εργαλεία στα περισσότερα ΣΔΒΔ, όμως η χρήση της γλώσσας SQL εξασφαλίζει ανεξαρτησία από τον κατασκευαστή του συστήματος και εύκολη μεταφορά των προγραμμάτων ανάμεσα σε συστήματα κατασκευαστών.
  • 7. DDL  SQL Σχεσιακή Γλώσσα Ορισμού Δεδομένων (DDL)  Μία Γλώσσα Ορισμού Δεδομένων (Data Definition Language DDL) χρησιμοποιείται από τους σχεδιαστές προγραμματιστές και από τους διαχειριστές Βάσεων Δεδομένων για τον ορισμό του σχήματος των δεδομένων, δηλαδή για να καθοριστεί η μορφή με την οποία θα «βλέπουν» οι χρήστες και τα προγράμματα τα αποθηκευμένα δεδομένα.
  • 8. DDL  Τα ΣΔΒΔ διαθέτουν μεταφραστή της γλώσσας DDL που υποστηρίζουν, ώστε να μετατρέπεται η περιγραφή από DDL σε μορφή που μπορεί να αποθηκευτεί.  Τα σχεσιακά ΣΔΒΔ χρησιμοποιούν κατά κανόνα τη γλώσσα SQL για τον ορισμό του σχεσιακού σχήματος των δεδομένων.
  • 9. DDL  Η γλώσσα SQL DDL περιγράφει τους πίνακες, τα πεδία (ή χαρακτηριστικά ή στήλες) από τα οποία αποτελούνται οι πίνακες, το είδος ή τύπο δεδομένων κάθε πεδίου και τους περιορισμούς για τα πεδία των πινάκων.
  • 10. Tύποι Δεδομένων της SQL  Οι περισσότερες γλώσσες προγραμματισμού έχουν τύπους δεδομένων, δηλαδή συγκεκριμένους τρόπους αναπαράστασης των δεδομένων.  Αυτό σημαίνει ότι δίνουν στον προγραμματιστή συγκεκριμένες επιλογές για το είδος των στοιχείων που θα επεξεργαστούν τα προγράμματά του.
  • 11. Tύποι Δεδομένων της SQL  Για παράδειγμα, σε ένα πρόγραμμα που επεξεργάζεται βαθμούς μαθητών, ο προγραμματιστής θα ορίσει τους προφορικούς βαθμούς των τετραμήνων ως ακέραιους αριθμούς.  Με άλλα λόγια, ο τύπος δεδομένων των προφορικών βαθμών θα είναι ακέραιος αριθμός.
  • 12. Tύποι Δεδομένων της SQL  Η SQL που είναι γλώσσα προγραμματισμού Βάσεων Δεδομένων, έχει τους δικούς της τύπους δεδομένων, οι οποίοι χρησιμοποιούνται για να καθοριστεί το είδος των στοιχείων που θα αποθηκεύονται στους σχεσιακούς πίνακες.
  • 13. Tύποι Δεδομένων της SQL  Για να δημιουργηθεί ένας πίνακας με SQL, πρέπει πρώτα να καθοριστούν τα πεδία από τα οποία θα αποτελείται ο πίνακας. Τα πεδία καθορίζονται από το όνομά τους και τον τύπο τους.  Το όνομα κάθε πεδίου το επιλέγει ο σχεδιαστής και είναι μία λέξη, π.χ. Τίτλος, Ονοματεπώνυμο, Ημερομηνία_γέννησης, Έτος_δημιουργίας, Βαθμός, κλπ.
  • 14. Tύποι Δεδομένων της SQL  Ο τύπος ενός πεδίου καθορίζει το είδος των δεδομένων που μπορούν να αποθηκευτούν σε αυτό το πεδίο.  Ο τύπος αυτός είναι ένας από τους τύπους δεδομένων που υποστηρίζει η γλώσσα SQL.  Πριν μάθουμε επομένως πώς δημιουργούμε έναν πίνακα σε SQL, πρέπει να μάθουμε ποιοι είναι οι τύποι δεδομένων της SQL.
  • 15. Tύποι Δεδομένων της SQL  Η SQL υποστηρίζει διάφορους τύπους δεδομένων: αριθμητικούς, αλφαριθμητικούς, ημερομηνίας, ώρας, κλπ οι οποίοι επιλέγονται από το σχεδιαστή της βάσης ανάλογα με τις ανάγκες.  Για παράδειγμα, σε μια βάση δεδομένων που αποθηκεύει στοιχεία για ταινίες κινηματογράφου, ο τίτλος της ταινίας είναι μια φράση που αποτελείται από αλφαριθμητικά στοιχεία, δηλαδή γράμματα και σύμβολα.
  • 16. Tύποι Δεδομένων της SQL  Ο τύπος του πεδίου «Τίτλος» θα είναι επομένως αλφαριθμητικός. Το κόστος δημιουργίας μιας ταινίας όμως, είναι αριθμητικού τύπου. Στην Εικόνα 4 1 βλέπουμε τον πίνακα «Ταινία» που αποτελείται από τις στήλες «Τίτλος», «Έτος_δημιουργίας», «Σκηνοθέτης» και «Κόστος» καθώς και τιμές για την ταινία «Το κύμα (Die Welle)».
  • 17. Tύποι Δεδομένων της SQL  Σε ένα διαφορετικό παράδειγμα, αν θέλουμε να αποθηκεύσουμε σε έναν πίνακα τιμές προϊόντων, η τιμή κάθε προϊόντος σε ευρώ πρέπει να αποθηκευτεί ως αριθμός με υποδιαστολή, π.χ. 4,25 .
  • 18. Tύποι Δεδομένων της SQL  Στα σχολεία, για να διευκολυνθεί η λειτουργία τους, υπάρχει η ανάγκη αποθήκευσης δεδομένων για τους καθηγητές, τους μαθητές, τα τμήματα, τα μαθήματα, τις απουσίες, τους βαθμούς των μαθητών, κλπ. Τα στοιχεία των μαθητών περιλαμβάνουν το ονοματεπώνυμο και το πατρώνυμό τους.
  • 19. Αριθμητικοί τύποι δεδομένων της SQL  Δύο βασικοί αριθμητικοί τύποι δεδομένων που υποστηρίζονται από την SQL είναι οι ακέραιοι και οι πραγματικοί αριθμοί.  Οι ακέραιοι αριθμοί δεν έχουν υποδιαστολή, ενώ οι πραγματικοί έχουν. Η λέξη που χρησιμοποιεί η SQL για τον ορισμό πεδίων ακέραιου τύπου είναι INTEGER, ενώ για τον ορισμό πεδίων πραγματικού τύπου είναι FLOAT.
  • 20. Αριθμητικοί τύποι δεδομένων της SQL  Στο παράδειγμα των ταινιών κινηματογράφου επομένως που αναφέρθηκε παραπάνω, το πεδίο «Κόστος» είναι ακέραιου τύπου, δηλαδή τύπου INTEGER.  Στο παράδειγμα με τα προϊόντα, το πεδίο «Τιμή_προϊόντος» είναι πραγματικού τύπου, δηλαδή τύπου FLOAT γιατί οι τιμές έχουν και δεκαδικό μέρος.
  • 21. Αριθμητικοί τύποι δεδομένων της SQL  Σε μια βάση δεδομένων Μαθητολογίου για την αποθήκευση και διαχείριση των δεδομένων του σχολείου, καταγράφεται η πληροφορία για τα μαθήματα του προγράμματος σπουδών. Έτσι δημιουργείται ο πίνακας «Μάθημα» που αποτελείται από τις στήλες «Όνομα» και «Ώρες».
  • 22. Αριθμητικοί τύποι δεδομένων της SQL  Στον πίνακα Μάθημα αποθηκεύονται οι πληροφορίες για όλα τα μαθήματα που παρακολουθούν οι μαθητές του σχολείου. Οι εβδομαδιαίες ώρες διδασκαλίας των μαθημάτων που αποθηκεύονται στη στήλη «Ώρες», είναι ακέραιος αριθμός.
  • 23. Αλφαριθμητικοί τύποι δεδομένων της SQL  Οι αλφαριθμητικοί τύποι δεδομένων υποστηρίζουν την αποθήκευση κειμένου, δηλαδή συμβολοσειρών ή σειρών από χαρακτήρες, γι’ αυτό και συχνά ονομάζονται τύποι ‘χαρακτήρων’.  Η λέξη που χρησιμοποιεί η SQL για τον ορισμό πεδίων τύπου χαρακτήρα (αλφαριθμητικού) είναι CHARACTER.
  • 24. Αλφαριθμητικοί τύποι δεδομένων της SQL  Η SQL δίνει τη δυνατότητα ορισμού του μεγέθους μιας σειράς χαρακτήρων με την έκφραση CHARACTER(N), όπου στη θέση του N τοποθετείται ένας ακέραιος αριθμός που δηλώνει το μέγεθος του πεδίου, δηλαδή περιορίζει τις τιμές σε μέγεθος Ν.  Ο τύπος CHARACTER VARYING(N) ή VARCHAR(N) χρησιμοποιείται για τη δημιουργία πεδίων τύπου χαρακτήρων μεταβλητού μεγέθους N.
  • 25. Αλφαριθμητικοί τύποι δεδομένων της SQL  Στο παράδειγμα των μαθημάτων της προηγούμενης παραγράφου, το πεδίο «Όνομα_μαθήματος» είναι αλφαριθμητικού τύπου και επειδή κάθε όνομα έχει διαφορετικό πλήθος χαρακτήρων, το συγκεκριμένο πεδίο θα μπορούσε να οριστεί ως τύπου VARCHAR(100) ώστε να μπορέσει να αποθηκεύσει ονόματα μεταβλητού μεγέθους και αρκετά μεγάλα ονόματα, μέχρι 100 χαρακτήρων.
  • 26. Αλφαριθμητικοί τύποι δεδομένων της SQL  Στο Μαθητολόγιο του σχολείου, ένα άλλο πεδίο που αποθηκεύεται για τους μαθητές είναι το φύλο τους. Το φύλο μπορεί να πάρει τις τιμές ‘Άρρεν’ και ‘Θήλυ’ ή σε συντομία ‘Α’ ή ‘Θ’. Σε αυτή την περίπτωση το φύλο μπορεί να οριστεί ως τύπου CHARACTER(1).
  • 27. Τύποι δεδομένων για την ημερομηνία και την ώρα  Πεδία που αποθηκεύουν ημερομηνία ή ώρα μπορούν να οριστούν ως τύπου DATE, TIME ή TIMESTAMP.  Ο τύπος DATE μπορεί να αποθηκεύσει δεδομένα που αποτελούνται από το έτος (YEAR) με τιμές από 0001 ως 9999, το μήνα (MONTH) και την ημέρα (DAY)
  • 28. Τύποι δεδομένων για την ημερομηνία και την ώρα  Ο τύπος TIME μπορεί να αποθηκεύσει τιμές που αποτελούνται από την ώρα (HOUR), τα λεπτά (MINUTE) και τα δευτερόλεπτα (SECOND).  Ο τύπος TIMESTAMP μπορεί να αποθηκεύσει τιμές που αποτελούνται από το έτος, το μήνα, την ημέρα, την ώρα, τα λεπτά και τα δευτερόλεπτα.
  • 29. Τύποι δεδομένων για την ημερομηνία και την ώρα  Επομένως, τιμές όπως ‘24 06 2015’ μπορούν να αποθηκευτούν σε πεδία τύπου DATE, τιμές όπως ‘15:02:34’ μπορούν να αποθηκευτούν σε πεδία τύπου TIME, ενώ τιμές όπως ‘24 06 2015 15:02:34’. Στο παράδειγμα του Μαθητολογίου, η ημερομηνία γέννησης ενός μαθητή μπορεί να αποθηκευτεί σε πεδίο τύπου DATE.
  • 30. CREATE TABLE  Μετά την παρουσίαση βασικών τύπων δεδομένων μπορούμε να δημιουργήσουμε πίνακες χρησιμοποιώντας τη γλώσσα SQL.  Η εντολή της SQL που μας δίνει αυτή τη δυνατότητα είναι η CREATE TABLE, η οποία χρησιμοποιείται ως εξής:
  • 31. CREATE TABLE  Δηλαδή, ξεκινάμε δηλαδή με τη φράση CREATE TABLE, ακολουθούμενη από έναν ή περισσότερους κενούς χαρακτήρες και κατόπιν γράφουμε το όνομα του πίνακα που θέλουμε να δημιουργήσουμε.  Κατόπιν ανοίγουμε παρένθεση ‘(‘ και γράφουμε τα ονόματα και τους τύπους δεδομένων των στηλών του πίνακα.
  • 32. CREATE TABLE  Για κάθε στήλη (πεδίο) του πίνακα καθορίζουμε το όνομά της και μετά από ένα ή περισσότερα κενά τον τύπο δεδομένων της στήλης.  Οι τύποι δεδομένων είναι αυτοί που παρουσιάστηκαν στην προηγούμενη ενότητα.  Οι ορισμοί των στηλών μεταξύ τους διαχωρίζονται με κόμμα ‘,’.
  • 33. CREATE TABLE  Όταν ολοκληρωθεί ο ορισμός των στηλών κλείνουμε την παρένθεση ‘)’.  Κενός χαρακτήρας πρέπει να υπάρχει ανάμεσα στο όνομα και τον τύπο κάθε στήλης.
  • 34. CREATE TABLE  Αν επιστρέψουμε στα παραδείγματά μας, για να δημιουργήσουμε τον πίνακα Μάθημα, θα γράψουμε την εξής εντολή:  CREATE TABLE Μάθημα ( Όνομα VARCHAR(100), Ώρες INTEGER )
  • 35. CREATE TABLE  Ο πίνακας Μάθημα αποτελείται από δύο πεδία: Όνομα και Ώρες.  Ο τύπος του πεδίου "Όνομα" είναι συμβολοσειρά μέχρι 100 χαρακτήρων (VARCHAR(100)), ενώ ο τύπος του πεδίου "Ώρες" είναι ακέραιος αριθμός (INTEGER).  Για να δημιουργήσουμε τον πίνακα Μαθητής προσθέτοντας το πεδίο «Φύλο», θα γράψουμε την εξής εντολή:
  • 36. CREATE TABLE  CREATE TABLE Μαθητής ( Επώνυμο VARCHAR(50), Όνομα VARCHAR (50), Πατρώνυμο VARCHAR (50), Ημερομηνία_Γέννησης DATE, Φύλο CHAR(1) )
  • 37. CREATE TABLE  Τα πεδία αλφαριθμητικού τύπου «Επώνυμο», «Όνομα» και «Πατρώνυμο» είναι τύπου χαρακτήρα μεταβλητού μεγέθους με μήκος έως 50, δηλαδή VARCHAR(50).  Το πεδίο «Ημερομηνία_Γέννησης» είναι τύπου ημερομηνίας, δηλαδή DATE, ενώ το πεδίο «Φύλο» είναι ένας χαρακτήρας (‘Α’ ή ‘Θ’).
  • 38. Προκαθορισμένες τιμές  Κατά τη δημιουργία πινάκων με την εντολή CREATE TABLE μπορούν να καθοριστούν προκαθορισμένες τιμές και περιορισμοί για τα πεδία των πινάκων.
  • 39. Προκαθορισμένη τιμή πεδίων  Κατά την εισαγωγή δεδομένων σε έναν πίνακα, είναι πιθανό κάποιες τιμές πεδίων να μην είναι γνωστές, οπότε να μην εισάγονται. Σε αυτή την περίπτωση, το πεδίο θα έχει την τιμή NULL, που σημαίνει ότι δεν έχει εισαχθεί τιμή.
  • 40. CREATE TABLE  Για παράδειγμα όταν γίνονται εγγραφές μαθητών στο Μαθητολόγιο του σχολείου, μπορεί να μην εισάγεται η ημερομηνία γέννησης του μαθητή μέχρι εκείνος να προσκομίσει το πιστοποιητικό γέννησης.  Σε αυτή την περίπτωση η ημερομηνία γέννησης έχει την τιμή NULL μέχρι να γίνει εισαγωγή μιας έγκυρης ημερομηνίας.
  • 41. Προκαθορισμένη τιμή (default value)  Προκαθορισμένη τιμή (default value) σε ένα πεδίο σημαίνει ότι αν δεν καθοριστεί άλλη τιμή κατά την εισαγωγή δεδομένων, χρησιμοποιείται μία τιμή που έχει καθορίσει ο σχεδιαστής της Βάσης Δεδομένων.
  • 42. CREATE TABLE  Για παράδειγμα, αν στο Μαθητολόγιο καταχωρείται η πόλη καταγωγής των μαθητών ενός σχολείου, το πεδίο αυτό θα μπορούσε να έχει προκαθορισμένη τιμή συγκεκριμένη πόλη π.χ. «Αθήνα» αν πρόκειται για σχολείο της Αθήνας και αναμένεται οι περισσότεροι μαθητές να έχουν καταγωγή από την Αθήνα.
  • 43. CREATE TABLE  Σε αυτή την περίπτωση η προκαθορισμένη τιμή διευκολύνει την εισαγωγή δεδομένων εφόσον δεν είναι απαραίτητο να εισάγεται με κάθε νέο μαθητή, αλλά δημιουργείται αυτόματα από το σύστημα. Στην γλώσσα SQL, οι προκαθορισμένες τιμές περιγράφονται στην εντολή CREATE TABLE με την σύνταξη DEFAULT <τιμή> δίπλα από την περιγραφή της αντίστοιχης στήλης. Το παράδειγμα δημιουργίας του πίνακα Μαθητής θα γινόταν επομένως :
  • 44. CREATE TABLE  CREATE TABLE Μαθητής ( Επώνυμο VARCHAR(50), Όνομα VARCHAR (50), Πατρώνυμο VARCHAR (50), Ημερομηνία_Γέννησης DATE, Φύλο CHAR(1), Πόλη VARCHAR(50) DEFAULT ‘Αθήνα’ )
  • 45. Περιορισμοί  Συχνά είναι αναγκαίο να επιβληθούν περιορισμοί στα δεδομένα για να εξασφαλιστεί η ορθότητα και η ακεραιότητά τους.  Οι περιορισμοί με τους οποίους θα ασχοληθούμε σε αυτήν την υποενότητα είναι: περιορισμοί υπαρξιακής ακεραιότητας, περιορισμοί κύριου κλειδιού και περιορισμοί αναφορικής ακεραιότητας.
  • 46. Περιορισμοί υπαρξιακής ακεραιότητας  Οι περιορισμοί αυτοί μπορεί να αφορούν στην ύπαρξη ή μη τιμών σε κάποιο πεδίο πίνακα και εκφράζονται σε γλώσσα SQL με τις φράσεις NULL και NOT NULL.  Η λέξη «NULL» σημαίνει καμία τιμή και χρησιμοποιείται για πεδία που είναι αποδεκτό να μην έχουν τιμή, ενώ η φράση «NOT NULL» χρησιμοποιείται για πεδία που δεν επιτρέπεται να μην έχουν τιμή.
  • 47. CREATE TABLE  Στο παράδειγμα του Μαθητολογίου, η καταχώρηση μαθημάτων χωρίς τίτλους δεν είναι αποδεκτή, οπότε η δημιουργία του πίνακα Μάθημα θα έπρεπε να γραφτεί προσθέτοντας δίπλα στο πεδίο «Όνομα» τη φράση NOT NULL, ως εξής:
  • 48. CREATE TABLE  CREATE TABLE Μάθημα( Όνομα VARCHAR(100) NOT NULL, Ώρες INT )
  • 49. CREATE TABLE  Παρόμοια, στον πίνακα Μαθητής, η καταχώρηση μαθητών χωρίς το ονοματεπώνυμό τους δεν είναι αποδεκτή, οπότε και στα δύο πεδία καθορίζεται ο περιορισμός NOT NULL ώστε να αποφευχθεί η εισαγωγή μαθητών χωρίς ονοματεπώνυμο.
  • 50. CREATE TABLE  CREATE TABLE Μάθημα( Επώνυμο VARCHAR(50) NOT NULL, Όνομα VARCHAR (50) NOT NULL, Πατρώνυμο VARCHAR (50), Ημερομηνία_Γέννησης DATE, Φύλο CHAR(1), Πόλη VARCHAR(50) DEFAULT ‘Αθήνα’ )
  • 51. Περιορισμοί κύριου κλειδιού  Το κύριο κλειδί ενός σχεσιακού πίνακα είναι ένα πεδίο ή συνδυασμός πεδίων που για κάθε γραμμή του πίνακα έχει μοναδική τιμή. Ο περιορισμός του κύριου κλειδιού μπορεί να καθοριστεί στην εντολή CREATE TABLE με τη σύνταξη PRIMARY KEY (<πεδίο ή πεδία>). Η φράση PRIMARY KEY (<πεδίο ή πεδία>) προστίθεται μετά τον ορισμό των στηλών του πίνακα στην εντολή CREATE TABLE.
  • 52. CREATE TABLE  Ας επανέλθουμε στο παράδειγμα του Μαθητολογίου και στον πίνακα Μάθημα που δημιουργήθηκε προηγουμένως. Ένας ορθός σχεδιασμός της βάσης δεδομένων επιβάλλει τον καθορισμό κύριου κλειδιού σε όλους τους πίνακες που θα δημιουργηθούν.
  • 53. CREATE TABLE  Άρα στον πίνακα Μάθημα πρέπει να προστεθεί κύριο κλειδί. Σε αυτή την περίπτωση επιλέγουμε ως κύριο κλειδί το όνομα του μαθήματος, το οποίο θεωρούμε ότι είναι μοναδικό, π.χ. «Φυσική Α’ Τάξης», «Μαθηματικά Γ’ Τάξης», κ.ο.κ.
  • 54. CREATE TABLE  Άρα η δημιουργία του πίνακα Μάθημα θα συμπληρωθεί ως εξής:  CREATE TABLE Μάθημα ( Όνομα VARCHAR(100) NOT NULL, Ώρες INTEGER, PRIMARY KEY (Όνομα) )
  • 55. CREATE TABLE  Στο παράδειγμα του Μαθητολογίου, θέλουμε οι μαθητές επίσης να διακρίνονται μεταξύ τους με μοναδικό τρόπο. Αυτό εφαρμόζεται και στην πράξη στο μητρώο μαθητών του σχολείου.
  • 56. CREATE TABLE  Κατά την εγγραφή του στο βιβλίο του μητρώου μαθητών, κάθε μαθητής αποκτά έναν μοναδικό Αριθμό Μητρώου.  Στην Βάση Δεδομένων Μαθητολόγιο αυτό υλοποιείται με την προσθήκη του πεδίου ΑΜ στον πίνακα Μαθητής και τον καθορισμό του πεδίου ως κύριου κλειδιού ως εξής:
  • 57. CREATE TABLE  CREATE TABLE Μαθητής ( ΑΜ INT, Επώνυμο VARCHAR(50) NOT NULL, Όνομα VARCHAR (50) NOT NULL, Πατρώνυμο VARCHAR (50), Ημερομηνία_Γέννησης DATE, Φύλο CHAR(1), Πόλη VARCHAR(50) DEFAULT ‘Αθήνα’, PRIMARY KEY (ΑΜ) )
  • 58. CREATE TABLE  Αυτό σημαίνει ότι στον πίνακα δε μπορούν να εισαχθούν δύο μαθητές με τον ίδιο Αριθμό Μητρώου.  Περιορισμοί αναφορικής ακεραιότητας  Οι περιορισμοί αναφορικής ακεραιότητας καθορίζουν συσχετίσεις μεταξύ των πεδίων διαφορετικών πινάκων, δηλαδή τα ξένα κλειδιά.
  • 59. CREATE TABLE  Ο περιορισμός ξένου κλειδιού στην γλώσσα SQL καθορίζει ότι το πεδίο ενός πίνακα Β αναφέρεται σε ένα πεδίο ενός άλλου πίνακα Α, επομένως οι τιμές του πεδίου στον πίνακα Β πρέπει να υπάρχουν στο αντίστοιχο πεδίο στον πίνακα Α.  Οι περιορισμοί αναφορικής ακεραιότητας περιγράφονται στη γλώσσα SQL με την έκφραση FOREIGN KEY (<πεδίο>) REFERENCES <πίνακας αναφοράς> ( <πεδίο πίνακα αναφοράς>) .
  • 60. CREATE TABLE  Στο παράδειγμά μας του Μαθητολογίου, οι μαθητές του σχολείου εγγράφονται κάθε χρόνο που φοιτούν σε συγκεκριμένη τάξη (Α, Β, ή Γ). Κάθε μαθητής που θα φοιτήσει παραπάνω από ένα έτος στο ίδιο σχολείο θα εγγραφεί τουλάχιστον μία φορά σε κάθε τάξη που θα φοιτήσει.  Για να καταγραφεί αυτή η πληροφορία στη σχεσιακή Βάση Δεδομένων, θα πρέπει να δημιουργηθεί ένας νέος πίνακας ο οποίος να επιτρέπει την εγγραφή μαθητών σε σχολικά έτη και τάξεις.
  • 61. CREATE TABLE  Σε αυτόν τον πίνακα που μπορούμε να τον ονομάσουμε ΕγγραφήΜαθητή, αυτό που πρέπει να δημιουργηθεί είναι ένα πεδίο που να ταυτοποιεί κάθε μαθητή.  Το πεδίο αυτό είναι ο αριθμός μητρώου (ΑΜ) του μαθητή.  Ο ΑΜ μαθητή πρέπει να συνοδεύεται και από το σχολικό έτος και την τάξη στην οποία εγγράφεται ο μαθητής.
  • 62. CREATE TABLE  Το πεδίο ΑΜ_Μαθητή αναφέρεται σε μαθητές που είναι ήδη καταχωρημένοι στον πίνακα Μαθητής. Για να εξασφαλιστεί αυτή η αναφορική ακεραιότητα, το πεδίο ΑΜ_Μαθητή πρέπει να είναι ξένο κλειδί που αναφέρεται στο πεδίο ΑΜ του πίνακα Μαθητής.
  • 63. CREATE TABLE  Ένα επιπλέον σημείο που πρέπει να διευκρινιστεί για τον συγκεκριμένο πίνακα, είναι το κύριο κλειδί του, δηλαδή το πεδίο ή τα πεδία που πρέπει να είναι μοναδικά για κάθε εγγραφή. Ας κάνουμε μερικές παρατηρήσεις:
  • 64. CREATE TABLE  - Το πεδίο Σχολ_έτος δε μπορεί να είναι μοναδικό γιατί σε κάθε σχολικό έτος εγγράφονται πολλοί μαθητές στο σχολείο.  - Ο ΑΜ_Μαθητή δε μπορεί να είναι μοναδικός γιατί κάθε μαθητή μπορεί να γίνουν πολλές εγγραφές (στην Α’, τη Β’ και τη Γ’ τάξη)
  • 65. CREATE TABLE  Επομένως το κύριο κλειδί θα είναι συνδυασμός κάποιων πεδίων. Συγκεκριμένα, θα είναι ο συνδυασμός των πεδίων (ΑΜ_Μαθητή, Σχολ_έτος) ώστε να εξασφαλίζεται ότι κάθε μαθητής θα εγγράφεται μόνο μία φορά ανά σχολικό έτος σε κάποια τάξη.  Άρα η δημιουργία του πίνακα μπορεί να γίνει με την εξής εντολή SQL:
  • 66. CREATE TABLE  CREATE TABLE ΕγγραφήΜαθητή ( ΑΜ_Μαθητή ΙΝΤ, Σχολ_έτος CHAR(9), Τάξη CHAR(1), PRIMARY KEY (ΑΜ_Μαθητή, Σχολ_έτος), FOREIGN KEY (ΑΜ_Μαθητή) REFERENCES Μαθητής(ΑΜ) )
  • 67. CREATE TABLE  Παρατηρούμε ότι ο τύπος του πεδίο ΑΜ_Μαθητή είναι ΙΝΤ, ίδιος με τον τύπο του πεδίου ΑΜ στον πίνακα Μαθητής. Αυτή είναι απαραίτητη προϋπόθεση για την δημιουργία του περιορισμού ξένου κλειδιού (FOREIGN KEY) στον πίνακα ΕγγραφήΜαθητή.
  • 68. CREATE TABLE  Στο ίδιο παράδειγμα, ένας μαθητής παίρνει γραπτό βαθμό στα μαθήματα της τάξης που ένας μαθητής παίρνει έναν γραπτό βαθμό στα μαθήματα της τάξης που παρακολουθεί για κάθε σχολικό έτος που φοιτά στο σχολείο.  Άρα υπάρχει συσχέτιση ανάμεσα στον μαθητή και τα μαθήματα για την καταχώρηση της γραπτής βαθμολογίας.
  • 69. CREATE TABLE  Η συσχέτιση αυτή πρέπει να υλοποιηθεί στη σχεσιακή Βάση Δεδομένων με ένα νέο πίνακα ο οποίος θα συσχετίζει τον Αριθμό Μητρώου του μαθητή με το μάθημα στο οποίο καταχωρείται η βαθμολογία του, συμπληρωμένο με το σχολικό έτος.
  • 70. CREATE TABLE  Σε αυτόν τον πίνακα, το κύριο κλειδί, δηλαδή το πεδίο που πρέπει να είναι μοναδικό για κάθε εγγραφή στον πίνακα είναι ο συνδυασμός των πεδίων Αριθμός Μητρώου Μαθητή, Σχολικό Έτος και Όνομα Μαθήματος, έτσι ώστε:
  • 71. CREATE TABLE  - να είναι δυνατό να εισαχθούν βαθμοί για όλα τα (διαφορετικά) μαθήματα κάποιου μαθητή, να μην είναι δυνατόν να εισαχθεί παραπάνω από ένας βαθμός ανά μαθητή, μάθημα και σχολικό έτος,
  • 72. CREATE TABLE  - να είναι δυνατόν να εισαχθούν οι βαθμοί όλων των μαθητών σε κάθε μάθημα που παρακολουθούν,  - να είναι δυνατόν να εισαχθούν βαθμοί κάποιου μαθητή στο ίδιο μάθημα για διαφορετικά σχολικά έτη σε περίπτωση επανάληψης της ίδιας τάξης (κάτι που δεν είναι επιθυμητό φυσικά αλλά πρέπει να προβλεφθεί στο ΣΔΒΔ).
  • 73. CREATE TABLE  Επομένως η δημιουργία του πίνακα για τις γραπτές βαθμολογίες θα έχει ως εξής:
  • 74. CREATE TABLE  CREATE TABLE ΓραπτόςΒαθμόςΜαθητή ( ΑΜ_Μαθητή INT, Σχολ_έτος CHAR(9), Όνομα_Μαθήματος VARCHAR(100), Βαθμός FLOAT, PRIMARY KEY (ΑΜ_Μαθητή, Σχολ_έτος, Όνομα_Μαθήματος), FOREIGN KEY (ΑΜ_Μαθητή) REFERENCES Μαθητής(ΑΜ), FOREIGN KEY (Όνομα_Μαθήματος) REFERENCES Μάθημα(Όνομα) )
  • 75. CREATE TABLE  Παρατηρούμε ότι ο τύπος του πεδίο ΑΜ_Μαθητή είναι ΙΝΤ, ίδιος με τον τύπο του πεδίου ΑΜ στον πίνακα Μαθητής και ο τύπος του πεδίου Όνομα_Μαθήματος είναι VARCHAR(100), ίδιος με τον τύπο του πεδίου Όνομα στον πίνακα Μάθημα.
  • 76. SQL DML  SQL Σχεσιακή Γλώσσα Χειρισμού Δεδομένων (DML)  Μία Γλώσσα Χειρισμού Δεδομένων (Data Manipulation Language DML) χρησιμοποιείται από τους σχεδιαστές προγραμματιστές και από τους διαχειριστές Βάσεων Δεδομένων για τον χειρισμό των δεδομένων, δηλαδή για να εισαχθούν, να ενημερωθούν, να διαγραφούν και να ανακτηθούν τα δεδομένα της βάσης.
  • 77. SQL DML  Τα σχεσιακά ΣΔΒΔ χρησιμοποιούν κατά κανόνα τη γλώσσα SQL για τον χειρισμό των δεδομένων. Η γλώσσα SQL DML επιτρέπει την περιγραφή εντολών εισαγωγής, ενημέρωσης, διαγραφής και ανάκτησης των δεδομένων των πινάκων.
  • 78. Εισαγωγή Δεδομένων με SQL  Η εισαγωγή δεδομένων σε πίνακα σχεσιακής Βάσης Δεδομένων πραγματοποιείται με την εντολή INSERT INTO της SQL. Η σύνταξη της εντολής INSERT INTO στη γενική της μορφή είναι:  INSERT INTO <όνομα πίνακα> VALUES (τιμή_1, τιμή_2, τιμή_3, ...)
  • 79. Εισαγωγή Δεδομένων με SQL  Με την παραπάνω εντολή εισάγεται μια νέα γραμμή στον πίνακα που καθορίζεται στην εντολή. Οι τιμές που εισάγονται στα πεδία του πίνακα καθορίζονται μέσα στην παρένθεση χωριζόμενες με κόμμα. Οι τιμές αυτές αντιστοιχίζονται σε όλα τα πεδία του πίνακα και με τη σειρά που αυτά έχουν καθοριστεί κατά την δημιουργία του πίνακα.
  • 80. Εισαγωγή Δεδομένων με SQL  Εισαγωγή εγγραφών καθορίζοντας τιμές για όλα τα πεδία του πίνακα  Για την εισαγωγή των στοιχείων του μαθητή Πηλείδη Αχιλλέα στον πίνακα Μαθητής, γράφουμε σε SQL την παρακάτω εντολή:  INSERT INTO Μαθητής VALUES (863, ‘Πηλείδης’, ‘Αχιλλέας’, ‘Πηλέας’, ‘1999 06 24’, ‘Α’, ‘Αθήνα’)
  • 81. Εισαγωγή Δεδομένων με SQL  Στο παράδειγμα αυτό θυμίζουμε ότι στην εντολή CREATE TABLE του πίνακα Μαθητής καθορίστηκαν τα πεδία με τη σειρά: ΑΜ, Επώνυμο, Όνομα, Πατρώνυμο, Ημερομηνία_γέννησης, Φύλο, Πόλη.  Παρατηρούμε ότι η τιμή της ημερομηνίας εισάγεται με τη μορφή 'έτος μήνας ημέρα'.
  • 83. Απλά παραδείγματα SQL  SELECT Επώνυμο, Όνομα FROM Μαθητής WHERE Όνομα=’Γιώργος’  Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες για το Επώνυμο, Όνομα από τον πίνακα Μαθητής, όταν το όνομα του μαθητή είναι ‘Γιώργος’
  • 84. Απλά παραδείγματα SQL  SELECT Όνομα, Ώρες FROM Μάθημα WHERE Ώρες >=4  Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες Όνομα και Ώρες από τον πίνακα Μάθημα, όταν οι ώρες του μαθήματος είναι μεγαλύτερες ή ίσες με 4
  • 85. Απλά παραδείγματα SQL  SELECT Όνομα, Ώρες FROM Μάθημα WHERE Ώρες <>4  Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες Όνομα και Ώρες από τον πίνακα Μάθημα, όταν οι ώρες του μαθήματος είναι διαφορετικές από 4
  • 86. Απλά παραδείγματα SQL  SELECT Όνομα, Ώρες FROM Μάθημα WHERE Ώρες BETWEEN 4 AND 5  Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες Όνομα και Ώρες από τον πίνακα Μάθημα, όταν οι ώρες του μαθήματος είναι μεταξύ 4 και 5 ωρών, δηλαδή μεγαλύτερες ή ίσες με 4 και μικρότερες ή ίσες με
  • 87. Απλά παραδείγματα SQL  SELECT Όνομα, Ώρες FROM Μάθημα WHERE Ώρες IN (4, 5)  Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες Όνομα και Ώρες από τον πίνακα Μάθημα, όταν οι ώρες του μαθήματος είναι 4 ή 5, δηλαδή ικανοποιούν τις τιμές που περιλαμβάνονται στην παρένθεση
  • 88. Απλά παραδείγματα SQL  SELECT Επώνυμο, Όνομα FROM Μαθητής WHERE Όνομα LIKE “Μ%”  Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες για το Επώνυμο, Όνομα από τον πίνακα Μαθητής, όταν το όνομα του μαθητή αρχίζει από “M”
  • 89. Απλά παραδείγματα SQL  SELECT Επώνυμο, Όνομα FROM Μαθητής WHERE Όνομα LIKE “Μ “  Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες για το Επώνυμο, Όνομα από τον πίνακα Μαθητής, όταν το όνομα του μαθητή αρχίζει από “M” και περιλαμβάνει 5 χαρακτήρες
  • 90. Απλά παραδείγματα SQL  SELECT Επώνυμο, Όνομα FROM Μαθητής WHERE Ημερομηνία_Γέννησης IS NULL  Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες για το Επώνυμο, Όνομα από τον πίνακα Μαθητής, όταν η Ημερομηνία_Γέννησης δεν είναι συμπληρωμένη 
  • 91. Απλά παραδείγματα SQL  SELECT Επώνυμο, Όνομα FROM Μαθητής WHERE Όνομα NOT LIKE “Μ%”  Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες για το Επώνυμο, Όνομα από τον πίνακα Μαθητής, όταν το όνομα του μαθητή δεν αρχίζει από “M”
  • 92. Απλά παραδείγματα SQL  SELECT Επώνυμο, Όνομα FROM Μαθητής WHERE Ημερομηνία_Γέννησης IS NOT NULL  Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες για το Επώνυμο, Όνομα από τον πίνακα Μαθητής, όταν η Ημερομηνία_Γέννησης είναι συμπληρωμένη  Σημείωση: Ποτέ δεν γίνετε σύγκριση με Null. Πάντα χρησιμοποιούμε τις φράσεις is Null ή is not Null.
  • 93. Απλά παραδείγματα SQL  SELECT Επώνυμο, Όνομα FROM Μαθητής WHERE Όνομα LIKE “Μ%” AND Πόλη=’Χανιά’  Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες για το Επώνυμο, Όνομα από τον πίνακα Μαθητής, όταν το όνομα του μαθητή αρχίζει από “M” και είναι από τα Χανιά.
  • 94. Απλά παραδείγματα SQL  SELECT Επώνυμο, Όνομα FROM Μαθητής WHERE Όνομα LIKE “Μ%” AND Πόλη=’Χανιά’ OR Πόλη=’Ρέθυμνο’  Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες για το Επώνυμο, Όνομα από τον πίνακα Μαθητής, όταν το όνομα του μαθητή αρχίζει από “M” και είναι από τα Χανιά ή το Ρέθυμνο ανεξαρτήτως Ονόματος μαθητή
  • 95. Απλά παραδείγματα SQL  SELECT Επώνυμο, Όνομα FROM Μαθητής WHERE Όνομα LIKE “Μ%” AND (Πόλη=’Χανιά’ OR Πόλη=’Ρέθυμνο’)  Ή  SELECT Επώνυμο, Όνομα FROM Μαθητής WHERE Όνομα LIKE “Μ%” OR Πόλη=’Χανιά’ AND Πόλη=’Ρέθυμνο’
  • 96. Απλά παραδείγματα SQL  Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες για το Επώνυμο, Όνομα από τον πίνακα Μαθητής, όταν το όνομα του μαθητή αρχίζει από “M” και είναι από τα Χανιά ή το Ρέθυμνο  Σημείωση: Ισχύει και στις λογικές πράξεις η προτεραιότητα των πράξεων (Not, And, Or)
  • 97. Δεδομένα από περισσότερους από ένα πίνακα  Η φράση FROM  Οι εγγραφές ενός πίνακα μπορούν να συνδυαστούν με τις εγγραφές ενός άλλου πίνακα, εφόσον υπάρχουν κοινά πεδία στους δύο πίνακες.  Ο συνδυασμός γίνεται βάσει των τιμών του κοινού πεδίου. Στη φράση from ορίζονται οι πίνακες.
  • 98. Δεδομένα από περισσότερους από ένα πίνακα  Για να μπορέσουμε να εμφανίζουμε τις πληροφορίες των πινάκων, στη φράση where θα πρέπει να συνδέσουμε τα κοινά πεδία.  Η αναφορά μας σε ένα πεδίο ενός πίνακα γίνεται με το συμβολισμό: <όνομα-πίνακα>.<όνομα- πεδίου>
  • 99. Δεδομένα από περισσότερους από ένα πίνακα  Η πρόταση from αντιστοιχεί στην πράξη του καρτεσιανού γινομένου της σχεσιακής άλγεβρας. Δίνει τη λίστα των σχέσεων που πρέπει να σαρωθούν κατά την αξιολόγηση της έκφρασης.
  • 100. Δεδομένα από περισσότερους από ένα πίνακα  Όταν το ίδιο γνώρισμα εμφανίζεται στο σχήμα περισσότερων από μια σχέσεων, τότε γίνεται διάκριση βάση του συμβολισμού: <όνομα - σχέσης>.<όνομα -γνωρίσματος>
  • 101. ΠΑΡΑΔΕΙΓΜΑΤΑ  SELECT Επώνυμο, Όνομα, Τάξη FROM Μαθητής, ΕγγραφήΜαθητή WHERE Μαθητής.ΑΜ= ΕγγραφήΜαθητή.ΑΜ_Μαθητή  Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες για το Επώνυμο, Όνομα και την Τάξη από τους πίνακες Μαθητής και ΕγγραφήΜαθητή, για όλους τους μαθητές. Στο αποτέλεσμα, εμφανίζονται όλοι οι δυνατοί συνδυασμοί των δύο πινάκων που έχουν κοινό πεδίο τον ΑΜ
  • 102. ΠΑΡΑΔΕΙΓΜΑΤΑ  SELECT Επώνυμο, Όνομα, Τάξη FROM Μαθητής, ΕγγραφήΜαθητή WHERE Μαθητής.ΑΜ= ΕγγραφήΜαθητή.ΑΜ_Μαθητή AND Σχολ_έτος=’2013 2014’  Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες για το Επώνυμο, Όνομα και την Τάξη από τους πίνακες Μαθητής και ΕγγραφήΜαθητή, για τους μαθητές στο σχολικό έτος 2013 2014. Στο αποτέλεσμα, περιορίζονται οι συνδυασμοί των δύο πινάκων στο σχολικό έτος 2013 -2014
  • 103. Υποερωτήματα  Τα υποερωτήματα είναι ερωτήματα που περιέχονται στη φράση WHERE άλλων ερωτημάτων. Τα αποτελέσματα των υποερωτημάτων δεν εμφανίζονται αλλά απλά δρουν βοηθητικά, ώστε να συνδεθούν τα στοιχεία των πινάκων.
  • 104. Υποερωτήματα  SELECT Επώνυμο, Όνομα FROM Μαθητής, ΕγγραφήΜαθητή WHERE Μαθητής.ΑΜ= ΕγγραφήΜαθητή.ΑΜ_Μαθητή AND ΑΜ IN (SELECT ΑΜ FROM ΕγγραφήΜαθητή WHERE Σχολ_έτος=’2013 -2014’)
  • 105. Υποερωτήματα  Παρατηρούμε ότι έχουμε το ίδιο αποτέλεσμα με το προηγούμενο ερώτημα, δηλαδή επέλεξε και εμφάνισε τις πληροφορίες για το Επώνυμο, Όνομα και την Τάξη από τους πίνακες Μαθητής και ΕγγραφήΜαθητή, για τους μαθητές στο σχολικό έτος 2013 -2014. Στο αποτέλεσμα, περιορίζονται οι συνδυασμοί των δύο πινάκων στο σχολικό έτος 2013- 2014)
  • 106. Ταξινόμηση Αποτελεσμάτων  Διάταξη των εγγραφών – ORDER BY  Στην SQL χρησιμοποιείται η φράση order by ώστε οι εγγραφές στο αποτέλεσμα να είναι ταξινομημένες (π.χ. με αλφαβητική σειρά) με βάση το αντίστοιχο πεδίο.
  • 107. Ταξινόμηση Αποτελεσμάτων  SELECT Επώνυμο, Όνομα FROM Μαθητής ORDER BY Επώνυμο  Δηλαδή επέλεξε και εμφάνισε ταξινομημένες σε αύξουσα σειρά, βάση του Επωνύμου τις πληροφορίες για το Επώνυμο, Όνομα από τον πίνακα Μαθητής  Η προεπιλογή είναι η αύξουσα διάταξη, αλλά μπορούμε να επιλέξουμε διάταξη χρησιμοποιώντας το asc (αύξουσα) ή το desc (φθίνουσα).  Επίσης, μπορούμε να κάνουμε ταξινόμηση χρησιμοποιώντας πολλά πεδία.
  • 108. Ταξινόμηση Αποτελεσμάτων  SELECT Επώνυμο, Όνομα FROM Μαθητής ORDER BY Επώνυμο DESC, Όνομα ASC  Δηλαδή επέλεξε και εμφάνισε ταξινομημένες σε φθίνουσα σειρά, βάση του Επωνύμου και στη συνέχεια στις εγγραφές με κοινό Επώνυμο σε αύξουσα βάση του Ονόματος, τις πληροφορίες για το Επώνυμο, Όνομα από τον πίνακα Μαθητής.
  • 109. Ταξινόμηση Αποτελεσμάτων  Ταξινόμηση εγγραφών μπορούμε να έχουμε και όταν η επιλογή των πεδίων είναι από περισσότερους από έναν πίνακες. 
  • 110. Ταξινόμηση Αποτελεσμάτων  SELECT Επώνυμο, Όνομα, Τάξη FROM Μαθητής, ΕγγραφήΜαθητή WHERE Μαθητής.ΑΜ= ΕγγραφήΜαθητή.ΑΜ_Μαθητή ORDER BY Τάξη  Δηλαδή επέλεξε και εμφάνισε ταξινομημένες σε αύξουσα σειρά τις πληροφορίες για το Επώνυμο, Όνομα και την Τάξη από τους πίνακες Μαθητής και ΕγγραφήΜαθητή, για όλους τους μαθητές. Στο αποτέλεσμα, εμφανίζονται όλοι οι δυνατοί συνδυασμοί των δύο πινάκων που έχουν κοινό πεδίο τον ΑΜ, ταξινομημένοι ανά τάξη.
  • 111. Ταξινόμηση Αποτελεσμάτων  Σημείωση:  Η ταξινόμηση μπορεί να γίνει και με πεδία που δεν εμφανίζονται στο Select, ενώ δεν επιτρέπεται η ταξινόμηση με βάση τις πράξεις μεταξύ πεδίων.
  • 112. Συναρτήσεις Συνάθροισης και Ομαδοποίησης  Η SQL έχει 5 ενσωματωμένες συναθροιστικές συναρτήσεις.  Οι ακόλουθες συναρτήσεις εφαρμόζονται στο σύνολο των τιμών μιας στήλης ενός πίνακα, και επιστρέφουν μία τιμή:  Αυτές επιδρούν σε ομάδα εγγραφών (γραμμών) του πίνακα και είναι:
  • 113. Συναρτήσεις Συνάθροισης και Ομαδοποίησης  AVG (Α) :  Μέσος όρος τιμών (μόνο σε αριθμούς)
  • 117. Συναρτήσεις Συνάθροισης και Ομαδοποίησης  SUM (Α) :  Άθροισμα τιμών (μόνο σε αριθμούς)
  • 118. Συναρτήσεις Συνάθροισης και Ομαδοποίησης  (Α): αποτελεί τη στήλη :  Όλες οι συναρτήσεις αγνοούν τις τιμές NULL εκτός από την COUNT(*).
  • 119. ΠΑΡΑΔΕΙΓΜΑΤΑ:  SELECT Όνομα_Μαθήματος, AVG(Βαθμός) FROM ΓραπτόςΒαθμόςΜαθητή WHERE Όνομα_Μαθήματος=’Συστήματα Διαχείρισης Βάσεων Δεδομένων (ΣΔΒΔ) και Εφαρμογές στο Διαδίκτυο’  Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες Όνομα_Μαθήματος και το Μέσο Όρο του βαθμού από τον πίνακα ΓραπτόςΒαθμόςΜαθητή, για το μάθημα Συστήματα Διαχείρισης Βάσεων Δεδομένων (ΣΔΒΔ) και Εφαρμογές στο Διαδίκτυο
  • 120. ΠΑΡΑΔΕΙΓΜΑΤΑ:  SELECT Όνομα_Μαθήματος, MIN(Βαθμός) FROM ΓραπτόςΒαθμόςΜαθητή WHERE Όνομα_Μαθήματος=’Συστήματα Διαχείρισης Βάσεων Δεδομένων (ΣΔΒΔ) και Εφαρμογές στο Διαδίκτυο  Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες Όνομα_Μαθήματος και το Μικρότερο βαθμό από τον πίνακα Γραπτός Βαθμός Μαθητή, για την για το μάθημα Συστήματα Διαχείρισης Βάσεων Δεδομένων (ΣΔΒΔ) και Εφαρμογές στο Διαδίκτυο
  • 121. ΠΑΡΑΔΕΙΓΜΑΤΑ:  SELECT Όνομα_Μαθήματος, COUNT(*) FROM ΓραπτόςΒαθμόςΜαθητή WHERE Όνομα_Μαθήματος=’Συστήματα Διαχείρισης Βάσεων Δεδομένων (ΣΔΒΔ) και Εφαρμογές στο Διαδίκτυο’ AND Βαθμός<10  Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες Όνομα_Μαθήματος και το Πλήθος των μαθητών από τον πίνακα ΓραπτόςΒαθμόςΜαθητή, για το μάθημα Συστήματα Διαχείρισης Βάσεων Δεδομένων (ΣΔΒΔ) και Εφαρμογές στο Διαδίκτυο που ο βαθμός τους είναι μικρότερος από 10
  • 122. Η φράση GROUP BY  Μπορούμε να εφαρμόσουμε τις συναρτήσεις όχι μόνο σε ένα σύνολο από εγγραφές, αλλά σε ομάδες από σύνολα εγγραφών.  Οι ομάδες προσδιορίζονται χρησιμοποιώντας το group by και οι εγγραφές μιας ομάδας περιέχουν την ίδια τιμή σε κάποιο δεδομένο πεδίο.  Η φράση αυτή μπαίνει ΠΑΝΤΑ στο τέλος του ερωτήματος.
  • 123. Η φράση GROUP BY  SELECT Τάξη, COUNT(*) FROM ΕγγραφήΜαθητή GROUP BY Τάξη  Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες Τάξη και το Πλήθος των μαθητών, ανά τάξη από τον πίνακα ΕγγραφήΜαθητή 
  • 124. Η φράση GROUP BY  SELECT Τάξη, COUNT(*) FROM ΕγγραφήΜαθητή WHERE Σχολ_έτος=’2014 -2015’ GROUP BY Τάξη  Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες Τάξη και το Πλήθος των μαθητών, ανά τάξη από τον πίνακα ΕγγραφήΜαθητή, για το Σχολικό έτος είναι 2014 -2015 
  • 125. Η φράση GROUP BY  SELECT Τάξη, COUNT(*) FROM ΕγγραφήΜαθητή WHERE Τάξη<>’Α’ AND Σχολ_έτος=’2014-2015’ GROUP BY Τάξη  Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες Τάξη και το Πλήθος των μαθητών, ανά τάξη, εκτός της Α, για το Σχολικό έτος είναι 2014 -2015, από τον πίνακα ΕγγραφήΜαθητή. Η φράση where, αποκλείει ομάδες.
  • 126. Η Φράση HAVING  Μπορούμε να εφαρμόσουμε μια συνθήκη σε μια συγκεκριμένη ομάδα από εγγραφές χρησιμοποιώντας το having. Η συνθήκη στην φράση having εφαρμόζεται αφού σχηματιστούν οι ομάδες (group by) και υπολογιστούν οι συναθροιστικές συναρτήσεις.
  • 127. Η Φράση HAVING  SELECT Όνομα_Μαθήματος, AVG(Βαθμός) FROM ΓραπτόςΒαθμόςΜαθητή GROUP BY Όνομα_Μαθήματος HAVING AVG(Βαθμός)>15  Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες Όνομα_Μαθήματος και το μέσο όρο του βαθμού, ανά μάθημα από τον πίνακα ΓραπτόςΒαθμόςΜαθητή για τα μαθήματα που ο βαθμός τους είναι μεγαλύτερος από 15
  • 128. Η Φράση HAVING  SELECT Τάξη, Σχολ_έτος, AVG(Βαθμός) FROM ΓραπτόςΒαθμόςΜαθητή, ΕγγραφήΜαθητή WHERE ΓραπτόςΒαθμόςΜαθητή.ΑΜ=ΕγγραφήΜαθητή.ΑΜ GROUP BY Τάξη, Σχολ_έτος HAVING AVG(Βαθμός)>15  Δηλαδή επέλεξε και εμφάνισε τις πληροφορίες Τάξη, Σχολικό έτος και το μέσο όρο του βαθμού, ανά τάξη και Σχολικό έτος, από τους πίνακες ΓραπτόςΒαθμόςΜαθητή, ΕγγραφήΜαθητή για τα μαθήματα που ο βαθμός τους είναι μεγαλύτερος από 15
  • 129. Οι Τύποι Δεδομένων της Γλώσσας SQL  INTEGER :  Ακέραιος αριθμός (χωρίς υποδιαστολή)
  • 130. Οι Τύποι Δεδομένων της Γλώσσας SQL  BIGINT :  Ακέραιος αριθμός με ακρίβεια19 ψηφία.
  • 131. Οι Τύποι Δεδομένων της Γλώσσας SQL  INTEGER(p) :  Ακέραιος αριθμός με ακρίβεια p ψηφία.
  • 132. Οι Τύποι Δεδομένων της Γλώσσας SQL  SMALLINT:  Ακέραιος αριθμός με ακρίβεια 5 ψηφία.
  • 133. Οι Τύποι Δεδομένων της Γλώσσας SQL  BINARY(n):  Σταθερού μήκους δυαδική συμβολοσειρά, μέγιστου μήκους n.
  • 134. Οι Τύποι Δεδομένων της Γλώσσας SQL  BOOLEAN :  Τιμές TRUE ή FALSE.
  • 135. Οι Τύποι Δεδομένων της Γλώσσας SQL  BINARY VARYING(n), VARBINARY(n) :  Μεταβλητού μήκους δυαδική συμβολοσειρά μέγιστου μήκους n.
  • 136. Οι Τύποι Δεδομένων της Γλώσσας SQL  FLOAT:  Αριθμός με υποδιαστολή
  • 137. Οι Τύποι Δεδομένων της Γλώσσας SQL  DECIMAL(p, s) :  Δεκαδικός αριθμός ακρίβειας p κλίμακας s. Η κλίμακα s δε μπορεί να υπερβαίνει την ακρίβεια p. Η ακρίβεια καθορίζει το πλήθος των ψηφίων αριστερά της υποδιαστολής, ενώ η κλίμακα το πλήθος των ψηφίων δεξιά της υποδιαστολής.
  • 138. Οι Τύποι Δεδομένων της Γλώσσας SQL  NUMERIC(p, s) :  Το ίδιο με το DECIMAL.
  • 139. Οι Τύποι Δεδομένων της Γλώσσας SQL  FLOAT(p) :  Προσεγγιστικός αριθμός με συντελεστή (mantissa) ακρίβειας p. Κινητής υποδιαστολής αριθμός σε εκθετική μορφή με βάση το 10.
  • 140. Οι Τύποι Δεδομένων της Γλώσσας SQL  REAL :  Προσεγγιστικός αριθμός με συντελεστή (mantissa) ακρίβειας 7.
  • 141. Οι Τύποι Δεδομένων της Γλώσσας SQL  DOUBLE PRECISION :  Προσεγγιστικός αριθμός με συντελεστή (mantissa) ακρίβειας 16.
  • 142. Οι Τύποι Δεδομένων της Γλώσσας SQL  CHARACTER(N) :  Σειρά χαρακτήρων (συμβόλων) σταθερού μήκους N. Το μήκος N αναφέρεται στο μέγιστος μήκος της τιμής. Οι τιμές για πεδία αυτού του τύπου πρέπει να γράφονται μέσα σε μονά εισαγωγικά ‘ ‘, π.χ. ‘Γιώργος’.
  • 143. Οι Τύποι Δεδομένων της Γλώσσας SQL  CHARACTER N. VARYING(N), VARCHAR(N):  Συμβολοσειρά χαρακτήρων μεταβλητού μεγέθους, μέγιστου
  • 144. Οι Τύποι Δεδομένων της Γλώσσας SQL  DATE, TIMESTAMP, TIME:  Τύποι που αποτελούνται από έναν αριθμό ακέραιων πεδίων που παριστάνουν, μια απόλυτη χρονική στιγμή, ανάλογα με τον επιμέρους τύπο.
  • 145. Οι Τύποι Δεδομένων της Γλώσσας SQL  INTERVAL:  Τύπος που αποτελείται από έναν αριθμό ακέραιων πεδίων που παριστάνουν μια χρονική περίοδο, ανάλογα με τον τύπο του διαστήματος.
  • 146.  COLLECTION (ARRAY MULTISET)  Ο πίνακας ARRAY (προστέθηκε στο πρότυπο SQL99) είναι μια, διατεταγμένη συλλογή στοιχείων. Ο τύπος MULTISET (προστέθηκε στο πρότυπο SQL2003) είναι μεταβλητού μήκους και μη διατεταγμένη συλλογή στοιχείων. Τα στοιχεία και των δύο τύπων πρέπει να ανήκουν σε έναν από τους προκαθορισμένους τύπους της SQL.
  • 147.  XML  Τύπος δεδομένων που αποθηκεύει δεδομένα μορφής XML.
  • 148. Εισαγωγή στην SQL  Η SQL αποτελείται από εντολές με τα ορίσματά τους, τις οποίες μπορούμε να χρησιμοποιήσουμε με συγκεκριμένους κανόνες σύνταξης για να πάρουμε τα αποτελέσματα που θέλουμε.
  • 149. Εισαγωγή στην SQL  Με την SQL μπορούμε να δημιουργήσουμε μια βάση δεδομένων και τους πίνακές της με τα αντίστοιχα πεδία, να καταχωρήσουμε δεδομένα στους πίνακες, να τροποποιήσουμε και να διαγράψουμε τα δεδομένα αυτά, να αλλάξουμε τη δομή των πινάκων με προσθήκη και διαγραφή πεδίων και να εμφανίσουμε πληροφορίες (συνδυασμούς από δεδομένα).
  • 150. Η SQL έχει δύο τμήματα : 1ο:  Τη Γλώσσα Ορισμού Δεδομένων (DDL, Data Definition Language), η οποία περιέχει τις απαραίτητες εντολές για τον ορισμό και την τροποποίηση του σχεσιακού σχήματος καθώς και για τη δημιουργία, την τροποποίηση και τη διαγραφή σχέσεων.
  • 151. Η SQL έχει δύο τμήματα : 2ο:  Τη Γλώσσα Χειρισμού Δεδομένων (DML, Data Manipulation Language), η οποία περιέχει τις απαραίτητες εντολές για την εμφάνιση (αναζήτηση) δεδομένων καθώς και για την καταχώρηση, τροποποίηση και διαγραφή των εγγραφών (πλειάδων) μιας σχέσης.
  • 152. Εισαγωγή στην SQL  Η SQL υποστηρίζει τους εξής τύπους δεδομένων για τα πεδία μιας σχέσης :
  • 153. Τύποι δεδομένων της SQL  char(n), ένα αλφαριθμητικό (string) με n ακριβώς χαρακτήρες.  varchar(n), ένα αλφαριθμητικό (string) με μεταβλητό μήκος και με n το πολύ χαρακτήρες.  int, ακέραιος αριθμός.
  • 154. Τύποι δεδομένων της SQL  smallint, ακέραιος αριθμός με μικρές τιμές.  Numeric(p, d), αριθμός με p ψηφία, από τα οποία τα d είναι δεκαδικά.  real, αριθμός κινητής υποδιαστολής απλής ακρίβειας.  double precision, αριθμός κινητής υποδιαστολής διπλής ακρίβειας.
  • 155. Τύποι δεδομένων της SQL  float(n), αριθμός κινητής υποδιαστολής με ακρίβεια n ψηφίων.  date, ημερομηνία (ημέρα, μήνας, έτος).  time, ώρα (ώρα, λεπτά, δευτερόλεπτα).
  • 156. Δημιουργία, Τροποποίηση και Διαγραφή Σχέσεων  Για να δημιουργήσουμε μια σχέση (πίνακα) χρησιμοποιούμε την εντολή create table.  Για παράδειγμα, για να δημιουργήσουμε τη σχέση Αθλητής δίνουμε την εξής εντολή :  Create table ΑΘΛΗΤΗΣ  (Κωδικός_Αθλητή integer not null,  Επώνυμο char(20) not null,  Όνομα char(15),  Ρεκόρ numeric(4, 2),  Ημνία_Γέννησης date,  Κωδικός_Συλλόγου integer not null,  primary key (Κωδικός_Αθλητή),  check(Κωδικός_Αθλητή >= 100));
  • 157. Δημιουργία, Τροποποίηση και Διαγραφή Σχέσεων  Μετά την εντολή create table γράφουμε το όνομα της σχέσης (πίνακα) και ακολουθεί μια παρένθεση που περιέχει τα ονόματα των πεδίων με τους τύπους δεδομένων τους. Η δήλωση not null σημαίνει ότι το συγκεκριμένο πεδίο θα πρέπει να έχει οπωσδήποτε κάποια τιμή.
  • 158. Δημιουργία, Τροποποίηση και Διαγραφή Σχέσεων  Με τον όρο check μπορούμε να δηλώσουμε μια συνθήκη για την περιοχή των τιμών ενός πεδίου. Είδαμε τη χρήση του όρου check για να ελέγξει αν η τιμή ενός κωδικού είναι μεγαλύτερη ή ίση από 100.
  • 159. Δημιουργία, Τροποποίηση και Διαγραφή Σχέσεων  Μπορούμε να χρησιμοποιήσουμε τον όρο check και για να ελέγξουμε αν η τιμή ενός πεδίου ανήκει σ’ ένα προκαθορισμένο σύνολο τιμών, ως εξής :  check (Νομός in (‘Γρεβενών’, ‘Καστοριάς’, ‘Κοζάνης’, ‘Φλώρινας’))
  • 160. Δημιουργία, Τροποποίηση και Διαγραφή Σχέσεων  Εδώ ελέγχουμε το αν η τιμή του πεδίου Νομός θα ανήκει σε μία από τέσσερις συγκεκριμένες τιμές. Για να τροποποιήσουμε μια σχέση και να προσθέσουμε ένα πεδίο, δίνουμε την εντολή alter table και το όρισμα add, ως εξής :  Alter table ΑΘΛΗΤΗΣ add (Τηλέφωνο char(10));
  • 161. Δημιουργία, Τροποποίηση και Διαγραφή Σχέσεων  Τα καινούργια πεδία που προστίθενται σε έναν πίνακα, έχουν αρχικά τιμές ίσες με null. Για να τροποποιήσουμε έναν πίνακα και να διαγράψουμε ένα πεδίο, δίνουμε την εντολή alter table και το όρισμα drop, ως εξής :  Alter table ΑΘΛΗΤΗΣ drop Τηλέφωνο;
  • 162. Δημιουργία, Τροποποίηση και Διαγραφή Σχέσεων  Για να διαγράψουμε τελείως μια σχέση από τη βάση δεδομένων στην οποία ανήκει, μαζί με τις τιμές των εγγραφών της, δίνουμε την εντολή drop table, ως εξής :  Drop table ΑΘΛΗΤΗΣ;
  • 163. Δημιουργία, Τροποποίηση και Διαγραφή Σχέσεων  Υπάρχει και η εντολή delete from ΑΘΛΗΤΗΣ, με την οποία μπορούμε να διαγράψουμε τις τιμές (περιεχόμενα, εγγραφές) ενός πίνακα, αλλά όχι την ίδιο τον πίνακα.
  • 164. Πίνακες Βάσεων Δεδομένων  Οι βάσεις δεδομένων (databases) περιέχουν αντικείμενα (objects) που ονομάζονται Πίνακες (Tables). Οι Εγγραφές (Records) των δεδομένων αποθηκεύονται σ’ αυτούς τους πίνακες. Οι Πίνακες αναγνωρίζονται με τα ονόματά τους, όπως "Persons", "Orders", "Suppliers" κ.ά.
  • 165. Πίνακες Βάσεων Δεδομένων  Οι Πίνακες περιέχουν Στήλες (Columns) και Γραμμές (Rows) με δε-δομένα. Οι Γραμμές (Rows) περιέχουν εγγραφές (records), όπως μία εγγραφή για κάθε άτομο. Οι Στήλες (Columns) περιέχουν δεδομένα, όπως First Name, Last Name, Address και City.
  • 166. Ερωτήματα της SQL  Με την SQL, μπορούμε να κάνουμε ένα ερώτημα (Query) σε μια βάση δεδομένων και να έχουμε ένα αποτέλεσμα (Result) σε μορφή πίνακα (tabu-lar form).
  • 167. Ερωτήματα της SQL Ενα ερώτημα σαν το εξής :  SELECT LastName FROM Persons θα δώσει ένα αποτέλεσμα σαν το εξής :  LastName  Παπαδόπουλος  Αντωνιάδης  Γεωργιάδης
  • 168. Ερωτήματα της SQL  Πρέπει να έχουμε υπόψη μας ότι μερικά συστήματα βάσεων δεδομένων απαιτούν το σύμβολο ; (semicolon) στο τέλος μιας εντολής SQL. Δεν θα χρησιμοποιήσουμε εδώ το σύμβολο ;.
  • 169. Χειρισμός Δεδομένων της SQL  Όπως υπονοεί και το όνομά της, η SQL είναι μια σύνταξη για την εκτέλεση ερωτημάτων (queries). Αλλά η γλώσσα της SQL περιλαμβάνει επίσης μια σύνταξη για την ενημέρωση εγγραφών, την εισαγωγή νέων εγγραφών και τη διαγραφή υπαρχόντων εγγραφών.
  • 170. Εντολές ερωτημάτων και ενημέρωσης  Αυτές οι εντολές ερωτημάτων και ενημέρωσης αποτελούν μαζί τη Γλώσσα Χειρισμού Δεδομένων (Data Manipulation Language, DML) που αποτελεί κομμάτι της SQL:
  • 171. Εντολές ερωτημάτων και ενημέρωσης  SELECT  εξάγει δεδομένα από μια βάση δεδομένων.  UPDATE  ενημερώνει δεδομένα σε μια βάση δεδομένων.
  • 172. Εντολές ερωτημάτων και ενημέρωσης  DELETE  διαγράφει δεδομένα από μια βάση δεδομένων.  INSERT  εισάγει νέα δεδομένα σε μια βάση δεδομένων.
  • 173. Ορισμός Δεδομένων της SQL  Η Γλώσσα Ορισμού Δεδομένων (Data Definition Language, DDL), που αποτελεί μέρος της SQL, επιτρέπει τη δημιουργία και τη διαγραφή πινάκων μιας βάσης δεδομένων. Μπορούμε επίσης να ορίσουμε indexes (keys), να καθορίσουμε συνδέσμους (links) ανάμεσα στους πίνακες και να επιβάλλουμε περιορισμούς ανάμεσα στους πίνακες μιας βάσης δεδομένων.
  • 174. Η Εντολή Select  Θα δούμε τώρα τις εντολές της Γλώσσας Χειρισμού Δεδομένων DML (Data Manipulation Language). Η βασικότερη είναι η εντολή Select, που χρησιμοποιείται για την εμφάνιση (ανάκληση) δεδομένων από τη βάση δεδομένων.
  • 175. Η Εντολή Select  Η γενική σύνταξη της εντολής Select για την αναζήτηση δεδομένων σε μια βάση δεδομένων είναι η εξής : Select Πεδίο1, Πεδίο2, … Πεδίοn From Πίνακας1, Πίνακας2, …, Πίνακαςm Where συνθήκη;
  • 176. Η Εντολή Select  Τα πεδία που δηλώνουμε στην εντολή Select είναι αυτά που θα εμφανίζονται στο αποτέλεσμα. Είναι αντίστοιχο με την πράξη της προβολής (projection) της σχεσιακής άλγεβρας.
  • 177. Η Εντολή Select  Αν θέλουμε να εμφανίζονται όλα τα πεδία θα πρέπει να χρησιμοποιήσουμε τον χαρακτήρα *. Ο όρος From δηλώνει τις σχέσεις (πίνακες) στους οποίους θα γίνει η αναζήτηση. Είναι αντίστοιχο με την πράξη του καρτεσιανού γινομένου της σχεσιακής άλγεβρας.
  • 178. Η Εντολή Select  Ο όρος Where είναι προαιρετικός και περιέχει τη συνθήκη που θέλουμε να ικανοποιούν οι εγγραφές (πλειάδες) του αποτελέσματος. Είναι αντίστοιχο με την πράξη της επιλογής (selection) της σχεσιακής άλγεβρας.
  • 179. Η Εντολή Select  Η επόμενη εντολή Select εμφανίζει μόνο τα πεδία Επώνυμο και Όνομα αθλητή καθώς και τον Κωδικό του Συλλόγου στον οποίο ανήκει ο κάθε αθλητής και αυτό γι’ όλους ανεξαιρέτως τους αθλητές που υπάρχουν στον πίνακα ΑΘΛΗΤΗΣ :  Select Επώνυμο, Όνομα, Κωδικός_Συλλόγου  From ΑΘΛΗΤΗΣ;
  • 180. Η Εντολή Select  Επειδή υπάρχει η περίπτωση, ακραία μεν αλλά εφικτή, να υπάρχουν δύο ή και περισσότερες εγγραφές με ίδια τα παραπάνω στοιχεία (πεδία) ενός αθλητή, μπορούμε να χρησιμοποιήσουμε και τον όρο distinct, ώστε να μην εμφανίζονται οι όμοιες εγγραφές, ως εξής :  Select distinct Επώνυμο, Όνομα, Κωδικός_Συλλόγου  From ΑΘΛΗΤΗΣ;
  • 181. Η Εντολή Select  Αν θέλουμε να δούμε όλα τα στοιχεία (πεδία) των αθλητών, θα πρέπει να χρησιμοποιήσουμε το σύμβολο *, ως εξής :  Select *  From ΑΘΛΗΤΗΣ;
  • 182. Η Εντολή Select  Η επόμενη εντολή Select εμφανίζει εκείνους τους αθλητές που έχουν ατομικό ρεκόρ μεγαλύτερο από μια συγκεκριμένη τιμή :  Select Επώνυμο, Όνομα, Κωδικός_Συλλόγου, Ρεκόρ  From ΑΘΛΗΤΗΣ  Where Ρεκόρ > 10.05;
  • 183. Η Εντολή Select  Η επόμενη εντολή Select εμφανίζει με τη χρήση της διάζευξης (λογικό ή – or) εκείνους τους αθλητές που ανήκουν σ’ έναν από δύο συλλόγους :  Select Επώνυμο, Όνομα, Κωδικός_Συλλόγου, Ρεκόρ  From ΑΘΛΗΤΗΣ  Where Κωδικός_Συλλόγου = 1 or Κωδικός_Συλλόγου = 2;
  • 184. Η Εντολή Select  Η επόμενη εντολή Select εμφανίζει με τη χρήση της σύζευξης (λογικό και – and) εκείνους τους αθλητές που έχουν ατομικό ρεκόρ σε μια περιοχή τιμών :  Select Επώνυμο, Όνομα, Κωδικός_Συλλόγου, Ρεκόρ  From ΑΘΛΗΤΗΣ  Where Ρεκόρ > 10.00 and Ρεκόρ < 10.08;
  • 185. Η Εντολή Select  Θα δούμε τώρα πώς μπορεί να γίνει η ανάκληση δεδομένων από πεδία που περιέχονται σε περισσότερες από μία σχέσεις. Η αναφορά σε πολλές σχέσεις αντιστοιχεί στην πράξη της σύνδεσης (join) της σχεσιακής άλγεβρας.
  • 186. Η Εντολή Select  Για παράδειγμα, για τη συσχέτιση των σχέσεων ΑΘΛΗΤΗΣ και ΣΥΜΜΕΤΟΧΗ χρησιμοποιήσαμε το κοινό πεδίο Κωδικός_Αθλητή, το οποίο είναι πρωτεύον κλειδί στη σχέση ΑΘΛΗΤΗΣ και ξένο κλειδί στη σχέση ΣΥΜΜΕΤΟΧΗ.
  • 187. Η Εντολή Select  Για να βρούμε τώρα ποιοι αθλητές συμμετείχαν σε ποιους αγώνες, δίνουμε την εξής εντολή:  Select Κωδικός_Αθλητή, Επώνυμο, Όνομα, Κωδικός_Αγώνα  From ΑΘΛΗΤΗΣ, ΣΥΜΜΕΤΟΧΗ  Where ΑΘΛΗΤΗΣ.Κωδικός_Αθλητή =  ΣΥΜΜΕΤΟΧΗ. Κωδικός_Αθλητή;
  • 188. Η Εντολή Select  Είδαμε στο προηγούμενο παράδειγμα τη χρήση του όρου where με την απαραίτητη συνθήκη για τη δημιουργία της σύνδεσης των δύο σχέσεων (πινάκων). Μπορούμε να ορίσουμε και μια πιο πολύπλοκη συνθήκη για να βρούμε τους αθλητές που συμμετείχαν σε κάποιον συγκεκριμένο αγώνα:
  • 189. Η Εντολή Select  Select Κωδικός_Αθλητή, Επώνυμο, Όνομα, Κωδικός_Αγώνα  From ΑΘΛΗΤΗΣ, ΣΥΜΜΕΤΟΧΗ  Where (ΑΘΛΗΤΗΣ.Κωδικός_Αθλητή =  ΣΥΜΜΕΤΟΧΗ. Κωδικός_Αθλητή) and Κωδικός_Αγώνα=100;8.
  • 190. Το Where Clause της SQL  Το WHERE clause χρησιμοποιείται για να καθορίσουμε ένα κριτήριο επιλογής (selection criteria). Για να μπορέσουμε να επιλέξουμε δεδομένα υπό συνθήκη από έναν πίνακα, πρέπει να προσθέσουμε ένα WHERE clause σε μια εντολή SELECT, ως εξής :
  • 191. Το Where Clause της SQL  SELECT στήλη FROM πίνακα WHERE στήλη συνθήκη τιμή  Με το WHERE clause, μπορούμε να χρησιμοποιήσουμε αυτές τις συνθήκες:
  • 192. Το Where Clause της SQL  = Ίσο  <> Όχι ίσο  > Μεγαλύτερο από  < Μικρότερο από  >= Μεγαλύτερο από ή ίσο με  <= Μικρότερο από ή ίσο με  LIKE Επεξηγείται παρακάτω
  • 193. Το Where Clause της SQL  Σε μερικές εκδόσεις της SQL, ο τελεστής για το όχι ίσο (<>), μπορεί να γραφεί ως εξής : !=.  Παράδειγμα : Επιλογή Ατόμων από μια Πόλη
  • 194. Το Where Clause της SQL  Για να επιλέξουμε μόνο τα άτομα που κατοικούν στην πόλη Φλώρινα, προσθέτουμε ένα WHERE clause στην εντολή SELECT, ως εξής :  SELECT * FROM Persons WHERE City='Φλώρινα'
  • 195. Το Where Clause της SQL  Έχουμε χρησιμοποιήσει μονά εισαγωγικά (single quotes) στις τιμές των συνθηκών στα παραδείγματα.
  • 196. Το Where Clause της SQL  Η SQL χρησιμοποιεί μονά εισαγωγικά στις αλφαριθμητικές τιμές (κείμενο). Τα περισσότερα συστήματα βάσεων δεδομένων αποδέχονται και τα διπλά εισαγωγικά (double quotes). Οι αριθμητικές τιμές δεν πρέπει να περικλείονται σε εισαγωγικά.
  • 197. Το Where Clause της SQL  Για τις τιμές κειμένου (αλφαριθμητικές) :  Αυτό είναι σωστό :  SELECT * FROM Persons WHERE FirstName='Δημήτριος'  Αυτό δεν είναι σωστό :  SELECT * FROM Persons WHERE FirstName=Δημήτριος
  • 198. Το Where Clause της SQL  Για τις αριθμητικές τιμές :  Αυτό είναι σωστό :  SELECT * FROM Persons WHERE Year>1965  Αυτό δεν είναι σωστό :  SELECT * FROM Persons WHERE Year>'1965'
  • 199. Η Συνθήκη LIKE  Η συνθήκη LIKE χρησιμοποιείται για να καθορίσουμε μια αναζήτηση για ένα υπόδειγμα (pattern) σε μια στήλη. Η σύνταξη είναι ως εξής :  SELECT στήλη FROM πίνακα WHERE στήλη LIKE υπόδειγμα
  • 200. Η Συνθήκη LIKE  Μπορούμε να χρησιμοποιήσουμε το σύμβολο "%" για να ορίσουμε χαρακτήρες μπαλαντέρ (wildcards) πριν και μετά από το υπόδειγμα.  Παράδειγμα : Επιλογή Ατόμων με Υπόδειγμα Ονόματος
  • 201. Η Συνθήκη LIKE  Η επόμενη εντολή SQL θα επιστρέψει τα άτομα που το όνομά τους αρχίζει από 'O’.  SELECT * FROM Persons WHERE FirstName LIKE 'O%'
  • 202. Η Συνθήκη LIKE  Η επόμενη εντολή SQL θα επιστρέψει τα άτομα που το όνομά τους τελειώνει σε 'α’.  SELECT * FROM Persons WHERE FirstName LIKE '%α'
  • 203. Η Συνθήκη LIKE  Η επόμενη εντολή SQL θα επιστρέψει τα άτομα που το όνομά τους περιέχει το 'γα’.  SELECT * FROM Persons WHERE FirstName LIKE '%γα%'
  • 204. Η Λέξη Κλειδί Distinct  Η λέξη κλειδί DISTINCT χρησιμοποιείται για να επιστρέφει μόνο διακριτές (διαφορετικές) (distinct, different) τιμές. Η εντολή SELECT της SQL επιστρέφει στοιχεία από τις στήλες ενός πίνακα, αλλά τι μπορούμε να κάνουμε αν θέλουμε να επιλέξουμε μόνο διακριτά στοιχεία (distinct eleme- nts);
  • 205. Η Λέξη Κλειδί Distinct  Στην SQL, αυτό που πρέπει να κάνουμε είναι να προσθέσουμε μια λέξη κλειδί DISTINCT στην εντολή SELECT, ως εξής :  SELECT DISTINCT ονόματα_στηλών FROM όνομα_πίνακα
  • 206. Η Λέξη Κλειδί Distinct  Παράδειγμα  Επιλογή εταιρειών από έναν πίνακα παραγγελιών.  Ενας απλός πίνακας παραγγελιών :  Company OrderNumber  Line Computers 3412  Sony 2312  Algorithm 4678  Sony 6798
  • 207. Η Λέξη Κλειδί Distinct  Η επόμενη εντολή SQL :  SELECT Company FROM Orders  θα δώσει αυτό το αποτέλεσμα :  Company  Line Computers  Sony  Algorithm  Sony
  • 208. Η Λέξη Κλειδί Distinct  Βλέπουμε ότι η εταιρεία Sony εμφανίζεται δύο φορές στο αποτέλεσμα. Μερικές φορές δεν το θέλουμε αυτό.  Παράδειγμα  Επιλογή ξεχωριστών εταιρειών από έναν πίνακα παραγγελιών.
  • 209. Η Λέξη Κλειδί Distinct Η επόμενη εντολή SQL : SELECT DISTINCT Company FROM Orders θα δώσει αυτό το αποτέλεσμα :  Company  Line Computers  Sony  Algorithm Τώρα η εταιρεία Sony εμφανίζεται μόνο μία φορά στο αποτέλεσμα.
  • 210. Η Λέξη Κλειδί Order By  Η λέξη κλειδί ORDER BY χρησιμοποιείται για να ταξινομήσει το αποτέλεσμα. Το ORDER BY clause χρησιμοποιείται για να ταξινομήσει τις γραμμές.  Πίνακας Παραγγελίες :  Company OrderNumber  Digital Shop 3412  ABC Shop 5678  Sony 2312  Sony 6798
  • 211. Η Λέξη Κλειδί Order By  Παράδειγμα  Για να εμφανίσουμε τις εταιρείες σε αλφαβητική σειρά :  SELECT Company, OrderNumber FROM Orders  ORDER BY Company  Αποτέλεσμα :  Company OrderNumber  ABC Shop 5678  Digital Shop 3412  Sony 6798  Sony 2312
  • 212. Η Εντολή INSERT INTO  Η εντολή INSERT INTO εισάγει νέες γραμμές σ’ έναν πίνακα. Η σύνταξή της είναι ως εξής :  INSERT INTO όνομα_πίνακα  VALUES (τιμή1, τιμή2, ...)
  • 213. Η Εντολή INSERT INTO  Μπορούμε επίσης να καθορίσουμε τις στήλες για τις οποίες θέλουμε να εισάγουμε δεδομένα :  INSERT INTO όνομα_πίνακα(στήλη1, στήλη2, ...)  VALUES (τμή1, τιμή2, ...)
  • 214. Η Εντολή INSERT INTO  Ο επόμενος πίνακας "Persons" :  LastNameFirstName Address City  Σουμπάση Μαρία Καλλέργη 15Φλώρινα
  • 215. Η Εντολή INSERT INTO  και αυτή η εντολή SQL :  INSERT INTO Persons  VALUES ('Σιάμκουρης', 'Ιωάννης', 'Π. Μελά 90', 'Καστοριά')  δίνουν αυτό το αποτέλεσμα :  LastNameFirstName Address City  Σουμπάση Μαρία Καλλέργη 15Φλώρινα  Σιάμκουρης Ιωάννης Π. Μελά 90 Καστοριά
  • 216. Η Εντολή Update  Η εντολή UPDATE ενημερώνει ή αλλάζει γραμμές. Η σύνταξή της είναι ως εξής :  UPDATE όνομα_πίνακα SET όνομα_στήλης=νέα_τιμή  WHERE όνομα_στήλης=τιμή
  • 217. Η Εντολή Update  Αρχικός πίνακας Person : LastName FirstName Address City Σουμπάση Μαρία Καλλέργη 15Φλώρινα Σιάμκουρης Ιωάννης Π. Μελά 90 Καστοριά Νικολάου Ταγμ. Ναούμ 30
  • 218. Η Εντολή Update  Ενημέρωση μίας Στήλης σε μια Γραμμή  Θέλουμε να προσθέσουμε ένα όνομα στο άτομο που έχει το επώνυμο "Νικολάου" :  UPDATE Person SET FirstName = 'Αθηνά'  WHERE LastName = 'Νικολάου'
  • 219. Η Εντολή Update  Ενημέρωση Πολλών Στηλών σε μια Γραμμή  Για το ίδιο άτομο θέλουμε να αλλάξουμε τη διεύθυνση και να προσθέσουμε ένα όνομα για την πόλη:  UPDATE Person  SET Address = 'Μεγαρόβου 12', City ='Φλώρινα'  WHERE LastName = 'Νικολάου'
  • 220. Η Εντολή Update  Αποτέλεσμα : LastName FirstName Address City Σουμπάση Μαρία Καλλέργη 15Φλώρινα Σιάμκουρης Ιωάννης Π. Μελά 90 Καστοριά Νικολάου Αθηνά Μεγαρ 12 Φλώρινα
  • 221. Η Εντολή Delete  Η εντολή DELETE χρησιμοποιείται για να διαγράψουμε γραμμές από έναν πίνακα. Η σύνταξή της είναι ως εξής :  DELETE FROM όνομα_πίνακα  WHERE όνομα_στήλης = τιμή
  • 222. Η Εντολή Delete  Αρχικός πίνακας Person : LastName FirstName Address City Σουμπάση Μαρία Καλλέργη 15Φλώρινα Σιάμκουρης Ιωάννης Π. Μελά 90 Καστοριά Νικολάου Αθηνά Μεγαρ 12 Φλώρινα
  • 223. Η Εντολή Delete  Διαγραφή μιας Γραμμής  Θα διαγράψουμε την "Νικολάου Αθηνά" :  DELETE FROM Person WHERE LastName = 'Νικολάου'
  • 224. Η Εντολή Delete  Αποτέλεσμα : LastName FirstName Address City Σουμπάση Μαρία Καλλέργη 15Φλώρινα Σιάμκουρης Ιωάννης Π. Μελά 90 Καστοριά
  • 225. Οι Λέξεις Κλειδιά COUNT και DISTINCT  Οι λέξεις κλειδιά DISTINCT και COUNT μπορούν να χρησιμοποιηθούν μαζί για να μετρήσουμε τον αριθμό των διακριτών αποτελεσμάτων (di-stinct results).
  • 226. Οι Λέξεις Κλειδιά COUNT και DISTINCT  Η σύνταξη είναι ως εξής :  SELECT DISTINCT COUNT(στήλες) FROM πίνακας  Με τον επόμενο πίνακα "Orders" :  Company OrderNumber  Hitachi 3412  Sony 2312  ABC 4678  Sony 6798
  • 227. Οι Λέξεις Κλειδιά COUNT και DISTINCT  Η επόμενη εντολή SQL :  SELECT COUNT(Company) FROM Orders  θα δώσει αυτό το αποτέλεσμα : 4
  • 228. Οι Λέξεις Κλειδιά COUNT και DISTINCT  Η επόμενη εντολή SQL :  SELECT DISTINCT COUNT(Company) FROM Orders  θα δώσει αυτό το αποτέλεσμα : 3
  • 229. Η Λέξη Κλειδί Group By  Η λέξη κλειδί GROUP BY έχει προστεθεί στην SQL επειδή οι αθροιστικές συναρτήσεις (aggregate functions), όπως είναι η SUM, επιστρέφουν το σύνολο όλων των τιμών μιας στήλης κάθε φορά που καλούνται.
  • 230. Η Λέξη Κλειδί Group By  καλούνται. Χωρίς την λέξη κλειδί GROUP BY, το να βρούμε το άθροισμα για κά-θε ανεξάρτητη ομάδα τιμών μιας στήλης θα ήταν αδύνατο. Η σύνταξη της GROUP BY είναι η εξής :  SELECT στήλη, SUM(στήλη) FROM πίνακας GROUP BY στήλη
  • 231. Η Λέξη Κλειδί Group By  Παράδειγμα με GROUP BY  Ο παρακάτω πίνακας "Sales" :  Company Amount  Grundig 5500  IBM 4500  Grundig 7100
  • 232. Η Λέξη Κλειδί Group By  και αυτή η εντολή SQL :  SELECT Company, SUM(Amount) FROM Sales  θα δώσουν αυτό το αποτέλεσμα :  Company SUM(Amount)  Grundig 17100  IBM 17100  Grundig 17100