SlideShare a Scribd company logo
1 of 52
ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ
ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ
Τι είναι μια βάση δεδομένων (Database-DB);
Βάση Δεδομένων-DB: συλλογή από σχετιζόμενα δεδομένα.
Σύστημα Διαχείρισης Βάσεων Δεδομένων (ΣΔΒΔ-DBMS):
λογισμικό για δημιουργία και χρήση μιας βάσης δεδομένων.
Σύστημα Βάσης Δεδομένων (ΣΒΔ-DBS): η βάση και το
αντίστοιχο λογισμικό μαζί.
Σύστημα Διαχείρισης Βάσεων Δεδομένων (ΣΔΒΔ-DBMS)
Το ΣΔΒΔ είναι ένας μεσάζων μεταξύ του χρήστη και της βάσης
δεδομένων και μόνο μέσω αυτού ο χρήστης μπορεί να ζητήσει
πληροφορίες από τη βάση. Μπορεί το ΣΔΒΔ να είναι
εγκατεστημένο σε ένα Η/Υ και να χρησιμοποιείται από ένα
χρήστη (single user system) ή να είναι εγκατεστημένο σε ένα
σύνολο ηλεκτρονικών υπολογιστών, που επικοινωνούν μεταξύ
τους μέσω κάποιου (τοπικού ή απομακρυσμένου) δικτύου, και
να χρησιμοποιείται από πολλούς χρήστες (multi user system).
Βασικές Λειτουργίες ΣΔΒΔ
Οι βασικές λειτουργίες τις οποίες αναλαμβάνει
ένα ΣΔΒΔ είναι όπως είδαμε παραπάνω:
 Οργανώνει τη βάση δεδομένων στο μέσο αποθήκευσης
(σκληροί δίσκοι, οπτικοί δίσκοι, νέφος κλπ.).
 Διαθέτει τους μηχανισμούς για τη διαχείριση των
δεδομένων.
 Τροφοδοτεί τις εφαρμογές με δεδομένα στη μορφή που
αυτές τα ζητούν.
Χαρακτηριστικά ενός ΣΔΒΔ
Την ανάγκη για αξιολόγηση της αξιοπιστίας σε οτιδήποτε
αφορά τις συναλλαγές στη βάση δεδομένων, έρχεται να
εγγυηθεί η αποδοχή των απαιτήσεων ACID (Atomicity,
Consistency, Isolation, Durability) - (Ατομικότητα,
Συνέπεια, Απομόνωση, Μονιμότητα). Σαν συναλλαγή θα
θεωρήσουμε οποιαδήποτε λογική ενέργεια που σχετίζεται με τα
δεδομένα. Π.χ. μια μεταφορά κεφαλαίου από ένα λογαριασμό
μιας τράπεζας σε έναν άλλο, όσες κινήσεις και να χρειάζεται
τελικά είναι μια συναλλαγή.
Χαρακτηριστικά ενός ΣΔΒΔ
Χαρακτηριστικά ενός ΣΔΒΔ
Προβληματισμός
Δύο είναι τα βασικά προβλήματα με τις
συναλλαγές:
Τι θα γίνει αν κατά τη διάρκεια της εκτέλεσης, πέσει
το σύστημα?
Τι θα γίνει αν δύο συναλλαγές επιχειρούν να
μεταβάλλουν το ίδιο αντικείμενο ταυτοχρόνως?
Χαρακτηριστικά ενός ΣΔΒΔ
Η Ατομικότητα απαιτεί η τροποποίηση που θα γίνει
στην ΒΔ να τηρεί τον κανόνα όλα ή τίποτα, αν δηλαδή
ένα μέρος της συναλλαγής αποτύχει, αποτυγχάνει όλη
η συναλλαγή και η ΒΔ μένει όπως ήταν πριν εκτελεστεί
η συναλλαγή. Η Ατομικότητα σημαίνει ότι οι χρήστες
είναι απαλλαγμένοι από τον φόβο μη ολοκληρωμένων
συναλλαγών.
Χαρακτηριστικά ενός ΣΔΒΔ
Χαρακτηριστικά ενός ΣΔΒΔ
Η Συνέπεια διασφαλίζει ότι η ΒΔ διατηρείται σε μια συνεπή
κατάσταση, συγκεκριμένα λέει ότι κάθε συναλλαγή θα
οδηγεί την βάση δεδομένων από τη μια συνεπή κατάσταση
στην άλλη. Σε περίπτωση που μια συναλλαγή παραβιάζει
κάποιο κανόνα της συνέπειας, ανακαλείται προκειμένου η
ΒΔ να έχει μόνο έγκυρα δεδομένα. Παράδειγμα λογικού
περιορισμού:
κατά τη διάρκεια της μεταφοράς χρημάτων από ένα
λογαριασμό σε ένα άλλο, το άθροισμα των δύο
λογαριασμών στο τέλος, πρέπει να ισούται με το άθροισμα
τους στην αρχή
Χαρακτηριστικά ενός ΣΔΒΔ
Χαρακτηριστικά ενός ΣΔΒΔ
Η Απομόνωση αναφέρεται στην απαίτηση ότι όλες οι
ενέργειες δεν μπορούν να έχουν πρόσβαση ή να δουν
δεδομένα τα οποία τροποποιούνται εκείνη την στιγμή από μια
συναλλαγή η οποία δεν έχει ακόμα ολοκληρωθεί.
Η Μονιμότητα εγγυάται στον χρήστη ότι αν τελειώσει μια
συναλλαγή επιτυχώς τότε τα αποτελέσματα της δεν θα χαθούν.
Οι αλλαγές που έχει κάνει η συναλλαγή δεν θα χαθούν σε
περίπτωση απώλειας ρεύματος ή άλλης καταστροφής
Αρχιτεκτονική ΣΔΒΔ
Στα ΣΔΒΔ έχει επικρατήσει η αρχιτεκτονική των εξής
τριών επιπέδων (ANSI/SPARC):
 Εσωτερικό επίπεδο (internal level), έχει να κάνει με την αποθήκευση
των αρχείων στον σκληρό δίσκο, δηλ. την πραγματική ή φυσική
κατάστασή τους.
 Εξωτερικό επίπεδο (external level), έχει να κάνει με τους χρήστες
είτε αυτοί είναι απλοί χειριστές, είτε προγραμματιστές ή και οι
διαχειριστές της βάσης δεδομένων.
 Εννοιολογικό επίπεδο (conceptual level), είναι το ενδιάμεσο επίπεδο
που συνδέει τα δύο άλλα και έχει να κάνει με τη λογική σχεδίαση των
αρχείων της βάσης δεδομένων.
Κατηγορίες Χρηστών
Οι δυνατότητες του ΣΔΒΔ αξιοποιούνται από διάφορες κατηγορίες χρηστών. Οι κατηγορίες
αυτές έχουν ως εξής:
 Τελικοί Χρήστες Στην ουσία οι πελάτες της ΒΔ. Διακρίνονται σε:
 Απλούς χρήστες. Στην κατηγορία αυτή ανήκουν οι χρήστες που χρησιμοποιούν
κάποιο πρόγραμμα εφαρμογής για να αποκτήσουν πρόσβαση στα δεδομένα της
βάσης. Τα δικαιώματα των απλών χρηστών είναι περιορισμένα, ενώ οι λειτουργίες που
επιτρέπεται να πραγματοποιήσουν είναι προκαθορισμένες και ρυθμίζονται αναλόγως
με τη λειτουργία του συστήματος. Για παράδειγμα, ένας χρήστης του φορολογικού
συστήματος TAXIS, ο οποίος έχει υποβάλλει ηλεκτρονικά τη φορολογική του δήλωση,
μπορεί να διαβάσει και να τροποποιήσει μόνο τα δικά του δεδομένα και όχι άλλων
χρηστών. Οι απλοί χρήστες τις περισσότερες φορές αγνοούν την ύπαρξη του ΣΔΒΔ.
 Προχωρημένοι Χρήστες. Στην κατηγορία αυτή ανήκουν οι χρήστες που έχουν
επίγνωση της ύπαρξης του ΣΔΒΔ καθώς και της δομής της βάσης. Έχουν τη
δυνατότητα να χρησιμοποιούν τη Δομημένη Γλώσσα ερωτημάτων (SQL) για να
επικοινωνούν με τη βάση, ενώ σε πολλές περιπτώσεις γράφουν τα δικά τους
προγράμματα εφαρμογής.
Κατηγορίες Χρηστών
Προγραμματιστές Εφαρμογών. Ο προγραμματιστής εφαρμογών καλείται να
υλοποιήσει τμήματα λογισμικού, τα οποία επικοινωνούν με το ΣΔΒΔ για προσπέλαση
και ενημέρωση δεδομένων. Οι εφαρμογές υλοποιούνται χρησιμοποιώντας μία γλώσσα
προγραμματισμού (π.χ. C++, Java) ή χρησιμοποιώντας κάποιο περιβάλλον ανάπτυξης
εφαρμογών, το οποίο παρέχει ο κατασκευαστής του ΣΔΒΔ.
Σχεδιαστές Βάσεων Δεδομένων. Η αναπαράσταση του πραγματικού κόσμου απαιτεί
την προσεκτική σχεδίαση της Βάσης Δεδομένων. Αρχικά θα πρέπει να
προσδιορισθούν οι απαραίτητες οντότητες και οι συσχετίσεις που υπάρχουν μεταξύ
τους. Στη συνέχεια, η πληροφορία αυτή χρησιμοποιείται για την κατασκευή της
εσωτερικής αναπαράστασης της πληροφορίας στη Βάση Δεδομένων του συστήματος.
Η διαδικασία αυτή εκτελείται από εξειδικευμένους αναλυτές και σχεδιαστές Βάσεων
Δεδομένων, οι οποίοι καλούνται να περιγράψουν τα αντικείμενα του πραγματικού
κόσμου με αντικείμενα της Βάσης Δεδομένων. Οι σχεδιαστές έχουν στη διάθεσή τους
εργαλεία λογισμικού με τα οποία αυτοματοποιείται η διαδικασία περιγραφής των
δεδομένων
Κατηγορίες Χρηστών
Διαχειριστές Βάσεων Δεδομένων. Στην κατηγορία αυτή ανήκουν οι
χρήστες που έχουν επιπλέον δικαιώματα που αφορούν στον τρόπο
οργάνωσης των δεδομένων, στον τρόπο λειτουργίας του ΣΔΒΔ, στη
διαχείριση των χρηστών και στην αποκατάσταση των δεδομένων σε
περιπτώσεις απώλειας δεδομένων λόγω βλαβών του υλικού του
συστήματος. Οι διαχειριστές έχουν στη διάθεσή τους εξειδικευμένες
εφαρμογές με τις οποίες ελέγχουν την ορθότητα των δεδομένων και
φροντίζουν για τη βέλτιστη λειτουργία του συστήματος.
Γλώσσα Βάσεων Δεδομένων
Αποτελείται από δυο τμήματα που είναι σχεδιασμένα για διαφορετικούς
σκοπούς.
 Η γλώσσα ορισμού δεδομένων (Data Definition Language, DDL)
χρησιμοποιείται για τον ορισμό των οντοτήτων και των μεταξύ τους
σχέσεων. Με τη γλώσσα αυτή δηλώνουμε τα χαρακτηριστικά που έχει
κάθε οντότητα και τους αντίστοιχους τύπους δεδομένων (π.χ., ακέραιος
αριθμός, σειρά χαρακτήρων).
 Η γλώσσα χειρισμού δεδομένων (Data Manipulation Language, DML)
χρησιμοποιείται για την επεξεργασία, την ενημέρωση, την εισαγωγή και
τη διαγραφή δεδομένων.
Κατηγορίες ΣΔΒΔ
Τα κεντρικά ΣΔΒΔ υλοποιούνται όταν τα στοιχεία τους βρίσκονται, αποθηκεύονται και
διατηρούνται σε μια ενιαία θέση. Αυτή η θέση είναι πολύ συχνά ένας κεντρικός
υπολογιστής. Στις περισσότερες περιπτώσεις, μια κεντρική βάση δεδομένων θα
χρησιμοποιηθεί από έναν οργανισμό ή ένα ίδρυμα (π.χ. κάποια εταιρεία επιχειρήσεων ή
ένα πανεπιστήμιο.) Οι χρήστες έχουν πρόσβαση σε μια κεντρική βάση δεδομένων μέσω
ενός δικτύου υπολογιστών.
Μοντέλο πελάτη-εξυπηρετητή Σύμφωνα με το μοντέλο αυτό, τόσο ο κεντρικός
υπολογιστής όσο και οι υπολογιστές που χρησιμοποιούν οι χρήστες είναι προσωπικοί
υπολογιστές και συνδέονται μεταξύ τους μέσω τοπικού δικτύου
Kατανεμημένη Βάση Δεδομένων (ΚΒΔ) είναι η βάση δεδομένων στην οποία τμήματά
της αποθηκεύονται σε πολλούς υπολογιστές σε ένα δίκτυο. Οι χρήστες έχουν πρόσβαση
στο τμήμα της βάσης δεδομένων στην τοποθεσία τους, έτσι ώστε να έχουν πρόσβαση
στα δεδομένα που σχετίζονται με τα καθήκοντά τους, χωρίς να επηρεάζεται η εργασία
των άλλων χρηστών.
Κατάταξη ΣΔΒΔ
Η Γλώσσα Βάσεων Δεδομένων SQL
Η γλώσσα SQL (Structured Query Language) είναι γλώσσα
διαχείρισης Σχεσιακών Βάσεων Δεδομένων. Η SQL
αναπτύχθηκε στην εταιρεία IBM στις αρχές της δεκαετίας του
1970 και αρχικά ονομαζόταν SEQUEL. Η γλώσσα SQL
θεωρείται μια από τις κύριες αιτίες της εμπορικής επιτυχίας των
Σχεσιακών Βάσεων Δεδομένων, επειδή ήταν απλή και εύκολη
στη χρήση της.
Η Γλώσσα Βάσεων Δεδομένων SQL
Η SQL αποτελείται από δύο βασικά μέρη:
τη γλώσσα SQL Ορισμού Δεδομένων (SQL DDL) και
τη γλώσσα SQL χειρισμού δεδομένων (SQL DML).
Με την γλώσσα ορισμού δεδομένων ορίζεται το σχήμα των
δεδομένων, δηλαδή η μορφή τους, ενώ με τη γλώσσα
χειρισμού δεδομένων ορίζονται οι λειτουργίες αποθήκευσης και
ανάκτησης των δεδομένων.
Η Γλώσσα Βάσεων Δεδομένων SQL
Σε ένα Σχεσιακό Σύστημα Διαχείρισης Βάσεων
Δεδομένων:
 Δημιουργώ πίνακες με τη Γλώσσα Ορισμού Δεδομένων (DDL)
 Εισάγω δεδομένα στους σχεσιακούς πίνακες με τη Γλώσσα
Χειρισμού Δεδομένων (DML)
 Ενημερώνω/διαγράφω τα δεδομένα των πινάκων με τη Γλώσσα
Χειρισμού Δεδομένων (DML)
 Εκτελώ ερωτήματα ανάκτησης για τα δεδομένα των πινάκων με τη
Γλώσσα Χειρισμού Δεδομένων (DML)
Τύποι Δεδομένων της SQL
Η SQL που είναι γλώσσα προγραμματισμού Βάσεων Δεδομένων, έχει
τους δικούς της τύπους δεδομένων, οι οποίοι χρησιμοποιούνται για να
καθοριστεί το είδος των στοιχείων που θα αποθηκεύονται στους
σχεσιακούς πίνακες.
 Αριθμητικοί τύποι δεδομένων της SQL (INTEGER ή ΙΝΤ FLOAT)
 Αλφαριθμητικοί τύποι δεδομένων της SQL (CHAR(N) η VARCHAR(N))
 Τύποι δεδομένων για την ημερομηνία και την ώρα
Επώνυμο Όνομα Πατρώνυμο Ημερομηνία_Γέννησης
Ομήρου Οδύσσεια Όμηρος 01-05-1999
Πηλείδης Αχιλλέας Πρίαμος 24-06-1999
Δημιουργία Πίνακα
Η εντολή της SQL που μας δίνει αυτή τη δυνατότητα είναι η CREATE
TABLE, η οποία χρησιμοποιείται ως εξής:
CREATE TABLE <όνομα_πίνακα>
(
<όνομα στήλης 1> <τύπος στήλης 1>,
<όνομα στήλης 2> <τύπος στήλης 2>,
…
<όνομα στήλης Ν> <τύπος στήλης Ν>
)
Δημιουργία Πίνακα
CREATE TABLE Μάθημα
(
Όνομα VARCHAR(100),
Ώρες INTEGER
)
CREATE TABLE Μαθητής
(
Επώνυμο VARCHAR(50),
Όνομα VARCHAR (50),
Πατρώνυμο VARCHAR (50),
Ημερομηνία_Γέννησης DATE,
Φύλο CHAR(1)
)
Δημιουργία Πίνακα
CREATE TABLE Μαθητής
(
Επώνυμο VARCHAR(50),
Όνομα VARCHAR (50),
Πατρώνυμο VARCHAR (50),
Ημερομηνία_Γέννησης DATE,
Φύλο CHAR(1),
Πόλη VARCHAR(50) DEFAULT 'Αθήνα'
)
Προκαθορισμένη τιμή
(default value) σε ένα πεδίο
σημαίνει ότι αν δεν καθοριστεί
άλλη τιμή κατά την εισαγωγή
δεδομένων, χρησιμοποιείται
μία τιμή που έχει καθορίσει ο
σχεδιαστής της Βάσης
Δεδομένων.
Δημιουργία Πίνακα
CREATE TABLE Μαθητής (
Επώνυμο VARCHAR(50) NOT NULL,
Όνομα VARCHAR (50) NOT NULL,
Πατρώνυμο VARCHAR (50),
Ημερομηνία_Γέννησης DATE,
Φύλο CHAR(1),
Πόλη VARCHAR(50) DEFAULT 'Αθήνα'
)
Περιορισμοί υπαρξιακής
ακεραιότητας
Οι περιορισμοί αυτοί μπορεί να
αφορούν στην ύπαρξη ή μη
τιμών σε κάποιο πεδίο πίνακα
και εκφράζονται σε γλώσσα
SQL με τις φράσεις NULL και
NOT NULL.
Δημιουργία Πίνακα
CREATE TABLE Μαθητής (
ΑΜ INT,
Επώνυμο VARCHAR(50) NOT NULL,
Όνομα VARCHAR (50) NOT NULL,
Πατρώνυμο VARCHAR (50),
Ημερομηνία_Γέννησης DATE,
Φύλο CHAR(1),
Πόλη VARCHAR(50) DEFAULT 'Αθήνα',
PRIMARY KEY (ΑΜ)
)
Περιορισμοί κύριου
κλειδιού
Το κύριο κλειδί ενός
σχεσιακού πίνακα είναι ένα
πεδίο ή συνδυασμός πεδίων
που για κάθε γραμμή του
πίνακα έχει μοναδική τιμή.
Δημιουργία Πίνακα
CREATE TABLE ΕγγραφήΜαθητή
(
ΑΜ_Μαθητή ΙΝΤ,
Σχολ_έτος CHAR(9),
Τάξη CHAR(1),
PRIMARY KEY (ΑΜ_Μαθητή,
Σχολ_έτος),
FOREIGN KEY (ΑΜ_Μαθητή)
REFERENCES Μαθητής(ΑΜ)
)
Περιορισμοί αναφορικής
ακεραιότητας
Οι περιορισμοί αναφορικής
ακεραιότητας καθορίζουν
συσχετίσεις μεταξύ των πεδίων
διαφορετικών πινάκων,
δηλαδή τα ξένα κλειδιά.
SQL Σχεσιακή Γλώσσα Χειρισμού Δεδομένων
(DML)
Μία Γλώσσα Χειρισμού Δεδομένων (Data Manipulation
Language - DML) χρησιμοποιείται από τους σχεδιαστές -
προγραμματιστές και από τους διαχειριστές Βάσεων
Δεδομένων για τον χειρισμό των δεδομένων, δηλαδή για να
εισαχθούν, να ενημερωθούν, να διαγραφούν και να
ανακτηθούν τα δεδομένα της βάσης.
Τα σχεσιακά ΣΔΒΔ χρησιμοποιούν κατά κανόνα τη γλώσσα
SQL για τον χειρισμό των δεδομένων. Η γλώσσα SQL DML
επιτρέπει την περιγραφή εντολών εισαγωγής, ενημέρωσης,
διαγραφής και ανάκτησης των δεδομένων των πινάκων.
Εισαγωγή Δεδομένων σε Πίνακα Σχεσιακής ΒΔ με
SQL
Η εισαγωγή δεδομένων σε πίνακα σχεσιακής Βάσης
Δεδομένων πραγματοποιείται με την εντολή INSERT INTO της
SQL. Η σύνταξη της εντολής INSERT INTO στη γενική της
μορφή είναι:
INSERT INTO <όνομα πίνακα> VALUES (τιμή_1, τιμή_2, τιμή_3, ...)
Εισαγωγή Δεδομένων σε Πίνακα Σχεσιακής ΒΔ με SQL
Εισαγωγή εγγραφών καθορίζοντας τιμές για όλα τα πεδία
του πίνακα
INSERT INTO Μαθητής VALUES (863, 'Πηλείδης', 'Αχιλλέας’,
'Πηλέας', '1999-06-24', 'Α', 'Αθήνα')
Εισαγωγή Δεδομένων σε Πίνακα Σχεσιακής ΒΔ με SQL
Εισαγωγή εγγραφών καθορίζοντας τιμές για μερικά από τα πεδία
του πίνακα
INSERT INTO Μαθητής (ΑΜ, Επώνυμο, Όνομα, Πατρώνυμο, Φύλο)
VALUES (864, 'Ομήρου', 'Οδύσσεια', 'Όμηρος', 'Θ')
Ενημέρωση Εγγραφών Πίνακα Σχεσιακής ΒΔ
θέλουμε να ενημερώσουμε την τιμή
του πεδίου Ώρες έτσι ώστε όλα τα
καταχωρημένα μαθήματα να έχουν
3 ώρες διδασκαλίας.
UPDATE Μάθημα
SET Ώρες = 3
UPDATE Μάθημα
SET Ώρες = 3
WHERE Ώρες = 5
Διαγραφή Εγγραφών Πίνακα Σχεσιακής ΒΔ
DELETE FROM <πίνακας>
Αν για παράδειγμα θέλουμε να
διαγράψουμε όλα τα μαθήματα
που είναι καταχωρημένα στον
πίνακα Μάθημα, γράφουμε και
εκτελούμε την εντολή:
DELETE FROM Μάθημα
DELETE FROM
ΓραπτόςΒαθμόςΜαθητή
WHERE Σχολ_έτος = '2014-2015'
στο προηγούμενο μάθημα…
 Γιατί χρησιμοποιούμε μία Βάση Δεδομένων;
Για να αποθηκεύσω-οργανώσω την πληροφορία που έχω, να μπορώ να την
αναζητήσω αποδοτικά (βοηθάει η δομή που έχει).
 Τί αποθηκεύουμε σε μία Βάση Δεδομένων;
Οι πληροφορίες οργανώνονται σε πίνακες. Οι πίνακες μπορούν να
συνδεθούν μεταξύ τους έτσι ώστε να μπορεί να αποθηκευτεί
αλληλεξαρτώμενη πληροφορία (π.χ. ποιοι φοιτητές συμμετέχουν σε ποια
μαθήματα).
 Πώς οργανώνονται οι πληροφορίες σε μία Βάση Δεδομένων;
Πίνακες-Εγγραφές: Δημιουργούμε τους πίνακες με τα πεδία που θέλουμε.
Στη συνέχεια Αποθηκεύουμε τις πληροφορίες (με τη μορφή εγγραφών) στους
πίνακες που δημιουργήσαμε.Αποθηκεύουμε τις πληροφορίες με τέτοιο
τρόπο ώστε να μην επαναλαμβάνονται και καταλαμβάνουν άσκοπα χώρο και
πόρους κατά την αναζήτηση.
Η Πρόταση Select
Παράδειγμα: Ονόματα όλων των ηθοποιών που έχουν παίξει σε
ταινίες
select Όνομα From Παίζει
Στην απλή σχεσιακή άλγεβρα, το ερώτημα θα ήταν Πόνομα(Παίζει)
•Η SQL επιτρέπει πολλαπλές εμφανίσεις (διπλότυπα) της ίδιας
συστοιχίας (σειράς) τόσο στις σχέσεις όσο και στα αποτελέσματα
των ερωτήσεων. Μια σχέση στην SQL είναι ένα πολυσύνολο.
•Για να πραγματοποιηθεί η διαγραφή των διπλοτύπων, εισάγεται τη
λέξη κλειδί distinct μετά τη select.
Απαλοιφή διπλών εμφανίσεων
select distinct Όνομα from Παίζει
Βασικές Ερωτήσεις Ανάκτησης
Απλή μορφή
Επιλογή και παρουσίαση
πληροφοριών από
συγκεκριμένα πεδία πίνακα
SELECT Επώνυμο, Όνομα
FROM Μαθητής
Επιλογή και παρουσίαση
πληροφοριών όλων των
πεδίων του πίνακα
SELECT * FROM Μαθητής
Αλλαγές επιλογών σε πίνακες
Μπορείτε να κάνετε αλλαγές σε υπάρχοντες πίνακες με την εντολή
ALTER TABLE (δείτε παραδείγματα).
Αλλάζει πεδίο σε UNIQUE
ALTER TABLE Persons ADD UNIQUE (P_Id);
Αλλάζει πεδίο σε PRIMARY KEY
ALTER TABLE Persons ADD PRIMARY KEY (P_Id);
Διαγράφει PRIMARY KEY
ALTER TABLE Persons DROP PRIMARY KEY;
Αλλάζει πεδίο σε FOREIGN KEY
ALTER TABLE Orders ADD FOREIGN KEY (P_Id) REFERENCES
Persons(P_Id);
Διαγράφει FOREIGN KEY
ALTER TABLE Orders DROP FOREIGN KEY (P_Id) REFERENCES
Persons(P_Id);
Αλλαγές επιλογών σε πίνακες
Θέτει προκαθορισμένη τιμή σε πεδίο
ALTER TABLE Persons ALTER City SET DEFAULT 'Athens';
Διαγράφει προκαθορισμένη τιμή σε πεδίο ALTER TABLE Persons ALTER
City DROP DEFAULT;
Μετονομάζει πίνακα ALTER TABLE mytb RENAME TO yourdb;
Προσθέτει στήλη στον πίνακα ALTER TABLE mytb lastname
VARCHAR(30);
Αλλάζει χαρακτηριστικά στήλης στον πίνακα ALTER TABLE mytb
MODIFY name VARCHAR(35);
ή
ALTER TABLE mytb ALTER COLUMN name VARCHAR(35);
Διαγράφει στήλη από τον πίνακα ALTER TABLE mytb DROP COLUMN
name id2;
Διάφορες εντολές σχετικές με πίνακες
Αδειάζει τον πίνακα TRUNCATE TABLE mytb;
Εμφανίζει τη δομή (σχήμα) του πίνακα DESC mytb;
Διαγράφει τον πίνακα DROP TABLE mytb;
Επιλογή με κριτήρια
Επιλέγει και εμφανίζει πεδία που ικανοποιούν το κριτήριο.
SELECT LastName, FirstName
FROM Persons
WHERE FirstName='Πολυξένη';
Η πρόταση DISTINCT
Επιλέγει και εμφανίζει συγκεκριμένα πεδία και τις εγγραφές του
πίνακα αλλά όχι διπλοεγγραφές.
SELECT DISTINCT City
FROM Persons;
Επιστρέφει τον αριθμό εγγραφών συγκεκριμένου πεδίου αλλά μόνο
για διακριτές τιμές.
SELECT COUNT(DISTINCT column_name)
FROM table_name;
Η πρόταση AS
Μετονομάζει ονόματα πεδίων και πινάκων.
SELECT LastName AS Επώνυμο,FirstName AS Όνομα
FROM Persons;
Συναθροιστικές συναρτήσεις (Aggregate functions)
Έστω ο παρακάτω πίνακας Orders
Εκτός από τη συνάρτηση count() που είδαμε παραπάνω, άλλες
συναρτήσεις που μπορείτε να χρησιμοποιήσετε είναι:
Order_Id OrderDate OrderPrice CustomerName
1 2010/11/12 1000 Αγγέλου
2 2010/10/23 1600 Νικολάου
3 2010/09/02 700 Αγγέλου
4 2010/09/03 300 Αγγέλου
5 2010/08/30 2000 Ιωάννου
6 2010/10/04 100 Νικολάου
Συναθροιστικές συναρτήσεις (Aggregate functions)
Η συνάρτηση SUM() επιστρέφει
το άθροισμα (αριθμητικό) από μια
στήλη (πεδίο).
SELECT
SUM(OrderPrice)
FROM Orders;
Με το παρακάτω
αποτέλεσμα
Η συνάρτηση AVG() επιστρέφει
τη μέση τιμή (αριθμητική).
SELECT AVG(OrderPrice)
FROM Orders;
Με το παρακάτω αποτέλεσμα
SUM(OrderPrice)
5700
AVG(OrderPrice)
950.0000
Συναθροιστικές συναρτήσεις (Aggregate functions)
Η συνάρτηση MIN()
Η συνάρτηση MIN() επιστρέφει τη
μικρότερη τιμή (αριθμητική).
SELECT MIN(OrderPrice)
FROM Orders;
Η συνάρτηση MAX()
Η συνάρτηση MAX() επιστρέφει τη
μεγαλύτερη τιμή (αριθμητική).
SELECT MAX(OrderPrice)
FROM Orders;
Η ΠρότασηWhere
Η πρόταση where αντιστοιχεί στο κατηγόρημα επιλογής της σχεσιακής
άλγεβρας. Αποτελείται από ένα κατηγόρημα που περιλαμβάνει
γνωρίσματα των σχέσεων που εμφανίζονται στην πρότασηfrom.
Παράδειγμα: Τον τίτλο όλων των ταινιών που γυρίστηκαν μετά το 1995 και
είναι ασπρόμαυρες
Select Τίτλος from Ταινία where Έτος >1995 and
Είδος=''Ασπρόμαυρη''
συνθήκη του where
Λογικοί τελεστές: NOT AND OR
Τελεστές σύγκρισης: <, <=, >, >=, =, <>,between, not between
ανάμεσα σε αριθμητικές εκφράσεις, συμβολοσειρές (strings), και ειδικούς
τύπους.
Η ΠρότασηWhere
Η SQL περιλαμβάνει μια πράξη σύγκρισης between
προκειμένου να απλοποιηθούν οι συνθήκες επιλογής στην
πρόταση where που καθορίζουν ότι μια τιμή είναι μικρότερη ή
ίση προς κάποια τιμή και μεγαλύτερη ή ίση από κάποια άλλη
τιμή.
Παράδειγμα χρήσης του between :
Select Τίτλος From Ταινία where Έτος between1990 and1995
αντί του
Select Τίτλος from Ταινία Where Έτος >=1990 and Έτος
<=1995
Η ΠρότασηWhere
Χρήση συγκριτικών τελεστών (=, =>, <=, <, >, <>)
Επιλογή με χρήση συγκριτικών τελεστών
SELECT * FROM Persons
WHERE City='Athens’;
Χρήση λογικών τελεστών (AND, OR, NOT)
Μπορεί να έχουμε λογικούς τελεστές σε συνδυασμό με συγκριτικούς τελεστές
SELECT * FROM Persons
WHERE LastName='Αγγέλου' AND (FirstName='Ελένη' OR FirstName='Μαρία');
Η Πρόταση Where
Επιλογή με τον τελεστή BETWEEN
SELECT * FROM Persons
WHERE FirstName BETWEEN 'Ελένη' AND 'Πέτρος';
Επιλογή με τον τελεστή IN ή NOT IN
Ελέγχουμε αν μια τιμή ανήκει ή δεν ανήκει σε ένα σύνολο τιμών.
SELECT * FROM Persons
WHERE FirstName IN ('Ελένη','Πέτρος');
Επίσης
SELECT * FROM Persons
WHERE FirstName NOT IN ('Ελένη','Πέτρος');
Η Πρόταση Where
Επιλογή με τον τελεστή LIKE.
Το παρακάτω ερώτημα επιλέγει ότι αρχίζει από Α. Άλλες επιλογές είναι '%a' ή '%ab%
SELECT * FROM Persons WHERE City LIKE 'A%';
Το παρακάτω ερώτημα επιλέγει ότι τελειώνει σε 'ia' και με τον πρώτο χαρακτήρα να είναι
οποιοσδήποτε. Άλλες επιλογές είναι 'a_' ή '_ab_is'
SELECT * FROM Persons WHERE FirstName LIKE '_ia';
Το παρακάτω ερώτημα επιλέγει ότι αρχίζει από τον χαρακτήρα b, s ή p.
Άλλες επιλογές είναι '%[bsp]' ή '%[bsp]%'
SELECT * FROM Persons WHERE LastName LIKE '[bsp]%';
Το παρακάτω ερώτημα επιλέγει ό,τι δεν αρχίζει από τον χαρακτήρα b, s ή p. Άλλες επιλογές
είναι '%[^bsp]' ή '%[^bsp]%'
SELECT * FROM Persons WHERE LastName LIKE '[^bsp]%';

More Related Content

Similar to ΒΑΣΕΙς ΔΕΔΟΜΕΝΩΝ 2 Θεωρία και ασκήσεις.pptx

C6 1 Introduction to Data Base
C6 1 Introduction to Data BaseC6 1 Introduction to Data Base
C6 1 Introduction to Data Basepapettas
 
Micro Front-ends and Microservices Architecture in Web Application Development
Micro Front-ends and Microservices Architecture in Web Application DevelopmentMicro Front-ends and Microservices Architecture in Web Application Development
Micro Front-ends and Microservices Architecture in Web Application DevelopmentISSEL
 
Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...
Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...
Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...ISSEL
 
01 - Εισαγωγή σε Βάσεις Δεδομένων
01 - Εισαγωγή σε Βάσεις Δεδομένων01 - Εισαγωγή σε Βάσεις Δεδομένων
01 - Εισαγωγή σε Βάσεις ΔεδομένωνFotis Kokkoras
 
Software requirements
Software requirementsSoftware requirements
Software requirementsGeorge Kara
 
1st StudentGuru Live Meeting | Imagine Cup 2011 | IT Challenge Support
1st StudentGuru Live Meeting | Imagine Cup 2011 | IT Challenge Support1st StudentGuru Live Meeting | Imagine Cup 2011 | IT Challenge Support
1st StudentGuru Live Meeting | Imagine Cup 2011 | IT Challenge SupportAlexandros Sigaras
 
Μαϊτης Αντώνιος
Μαϊτης ΑντώνιοςΜαϊτης Αντώνιος
Μαϊτης ΑντώνιοςAntonis Maitis
 
Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Nikos Dimitrakopoulos
 
ΔιαδίκτυοGt
ΔιαδίκτυοGtΔιαδίκτυοGt
ΔιαδίκτυοGtpanat5lthes
 
κεφ2 λογισμικό
κεφ2 λογισμικόκεφ2 λογισμικό
κεφ2 λογισμικόakarathanos
 
Σύγχρονες μεθοδολογίες ανάπτυξης και διαχείρισης Πληροφοριακών Συστημάτων Β.pdf
Σύγχρονες μεθοδολογίες ανάπτυξης και διαχείρισης Πληροφοριακών Συστημάτων Β.pdfΣύγχρονες μεθοδολογίες ανάπτυξης και διαχείρισης Πληροφοριακών Συστημάτων Β.pdf
Σύγχρονες μεθοδολογίες ανάπτυξης και διαχείρισης Πληροφοριακών Συστημάτων Β.pdfJoSk9
 
κατηγορίες ως πρός την αρχιτεκτονική τους
κατηγορίες ως πρός την αρχιτεκτονική τουςκατηγορίες ως πρός την αρχιτεκτονική τους
κατηγορίες ως πρός την αρχιτεκτονική τουςbasflor
 
Java free-book
Java free-bookJava free-book
Java free-bookble nature
 
Εισαγωγή στις αρχές της επιστήμης των ΗΥ κεφ 3 1
Εισαγωγή στις αρχές της επιστήμης των ΗΥ κεφ 3 1Εισαγωγή στις αρχές της επιστήμης των ΗΥ κεφ 3 1
Εισαγωγή στις αρχές της επιστήμης των ΗΥ κεφ 3 1Ιωάννου Γιαννάκης
 
στατικες δυναμικες νες
στατικες δυναμικες νεςστατικες δυναμικες νες
στατικες δυναμικες νεςStauroula Kakaraki
 

Similar to ΒΑΣΕΙς ΔΕΔΟΜΕΝΩΝ 2 Θεωρία και ασκήσεις.pptx (20)

C6 1 Introduction to Data Base
C6 1 Introduction to Data BaseC6 1 Introduction to Data Base
C6 1 Introduction to Data Base
 
Micro Front-ends and Microservices Architecture in Web Application Development
Micro Front-ends and Microservices Architecture in Web Application DevelopmentMicro Front-ends and Microservices Architecture in Web Application Development
Micro Front-ends and Microservices Architecture in Web Application Development
 
Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...
Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...
Η αρχιτεκτονική των Microservices και Micro Front-ends στην Ανάπτυξη Εφαρµογώ...
 
01 - Εισαγωγή σε Βάσεις Δεδομένων
01 - Εισαγωγή σε Βάσεις Δεδομένων01 - Εισαγωγή σε Βάσεις Δεδομένων
01 - Εισαγωγή σε Βάσεις Δεδομένων
 
Παρουσίαση Smart
Παρουσίαση SmartΠαρουσίαση Smart
Παρουσίαση Smart
 
Software requirements
Software requirementsSoftware requirements
Software requirements
 
1st StudentGuru Live Meeting | Imagine Cup 2011 | IT Challenge Support
1st StudentGuru Live Meeting | Imagine Cup 2011 | IT Challenge Support1st StudentGuru Live Meeting | Imagine Cup 2011 | IT Challenge Support
1st StudentGuru Live Meeting | Imagine Cup 2011 | IT Challenge Support
 
Μαϊτης Αντώνιος
Μαϊτης ΑντώνιοςΜαϊτης Αντώνιος
Μαϊτης Αντώνιος
 
Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]Ruby On Rails Introduction [Εισαγωγή στο Rails]
Ruby On Rails Introduction [Εισαγωγή στο Rails]
 
ΔιαδίκτυοGt
ΔιαδίκτυοGtΔιαδίκτυοGt
ΔιαδίκτυοGt
 
Access2010
Access2010Access2010
Access2010
 
Access2010
Access2010Access2010
Access2010
 
κεφ2 λογισμικό
κεφ2 λογισμικόκεφ2 λογισμικό
κεφ2 λογισμικό
 
Σύγχρονες μεθοδολογίες ανάπτυξης και διαχείρισης Πληροφοριακών Συστημάτων Β.pdf
Σύγχρονες μεθοδολογίες ανάπτυξης και διαχείρισης Πληροφοριακών Συστημάτων Β.pdfΣύγχρονες μεθοδολογίες ανάπτυξης και διαχείρισης Πληροφοριακών Συστημάτων Β.pdf
Σύγχρονες μεθοδολογίες ανάπτυξης και διαχείρισης Πληροφοριακών Συστημάτων Β.pdf
 
Hemodialysis Leader
Hemodialysis LeaderHemodialysis Leader
Hemodialysis Leader
 
κατηγορίες ως πρός την αρχιτεκτονική τους
κατηγορίες ως πρός την αρχιτεκτονική τουςκατηγορίες ως πρός την αρχιτεκτονική τους
κατηγορίες ως πρός την αρχιτεκτονική τους
 
Java free-book
Java free-bookJava free-book
Java free-book
 
NoSQL Databases
NoSQL DatabasesNoSQL Databases
NoSQL Databases
 
Εισαγωγή στις αρχές της επιστήμης των ΗΥ κεφ 3 1
Εισαγωγή στις αρχές της επιστήμης των ΗΥ κεφ 3 1Εισαγωγή στις αρχές της επιστήμης των ΗΥ κεφ 3 1
Εισαγωγή στις αρχές της επιστήμης των ΗΥ κεφ 3 1
 
στατικες δυναμικες νες
στατικες δυναμικες νεςστατικες δυναμικες νες
στατικες δυναμικες νες
 

ΒΑΣΕΙς ΔΕΔΟΜΕΝΩΝ 2 Θεωρία και ασκήσεις.pptx

  • 2. ΒΑΣΙΚΕΣ ΕΝΝΟΙΕΣ Τι είναι μια βάση δεδομένων (Database-DB); Βάση Δεδομένων-DB: συλλογή από σχετιζόμενα δεδομένα. Σύστημα Διαχείρισης Βάσεων Δεδομένων (ΣΔΒΔ-DBMS): λογισμικό για δημιουργία και χρήση μιας βάσης δεδομένων. Σύστημα Βάσης Δεδομένων (ΣΒΔ-DBS): η βάση και το αντίστοιχο λογισμικό μαζί.
  • 3. Σύστημα Διαχείρισης Βάσεων Δεδομένων (ΣΔΒΔ-DBMS) Το ΣΔΒΔ είναι ένας μεσάζων μεταξύ του χρήστη και της βάσης δεδομένων και μόνο μέσω αυτού ο χρήστης μπορεί να ζητήσει πληροφορίες από τη βάση. Μπορεί το ΣΔΒΔ να είναι εγκατεστημένο σε ένα Η/Υ και να χρησιμοποιείται από ένα χρήστη (single user system) ή να είναι εγκατεστημένο σε ένα σύνολο ηλεκτρονικών υπολογιστών, που επικοινωνούν μεταξύ τους μέσω κάποιου (τοπικού ή απομακρυσμένου) δικτύου, και να χρησιμοποιείται από πολλούς χρήστες (multi user system).
  • 4. Βασικές Λειτουργίες ΣΔΒΔ Οι βασικές λειτουργίες τις οποίες αναλαμβάνει ένα ΣΔΒΔ είναι όπως είδαμε παραπάνω:  Οργανώνει τη βάση δεδομένων στο μέσο αποθήκευσης (σκληροί δίσκοι, οπτικοί δίσκοι, νέφος κλπ.).  Διαθέτει τους μηχανισμούς για τη διαχείριση των δεδομένων.  Τροφοδοτεί τις εφαρμογές με δεδομένα στη μορφή που αυτές τα ζητούν.
  • 5. Χαρακτηριστικά ενός ΣΔΒΔ Την ανάγκη για αξιολόγηση της αξιοπιστίας σε οτιδήποτε αφορά τις συναλλαγές στη βάση δεδομένων, έρχεται να εγγυηθεί η αποδοχή των απαιτήσεων ACID (Atomicity, Consistency, Isolation, Durability) - (Ατομικότητα, Συνέπεια, Απομόνωση, Μονιμότητα). Σαν συναλλαγή θα θεωρήσουμε οποιαδήποτε λογική ενέργεια που σχετίζεται με τα δεδομένα. Π.χ. μια μεταφορά κεφαλαίου από ένα λογαριασμό μιας τράπεζας σε έναν άλλο, όσες κινήσεις και να χρειάζεται τελικά είναι μια συναλλαγή.
  • 7. Χαρακτηριστικά ενός ΣΔΒΔ Προβληματισμός Δύο είναι τα βασικά προβλήματα με τις συναλλαγές: Τι θα γίνει αν κατά τη διάρκεια της εκτέλεσης, πέσει το σύστημα? Τι θα γίνει αν δύο συναλλαγές επιχειρούν να μεταβάλλουν το ίδιο αντικείμενο ταυτοχρόνως?
  • 8. Χαρακτηριστικά ενός ΣΔΒΔ Η Ατομικότητα απαιτεί η τροποποίηση που θα γίνει στην ΒΔ να τηρεί τον κανόνα όλα ή τίποτα, αν δηλαδή ένα μέρος της συναλλαγής αποτύχει, αποτυγχάνει όλη η συναλλαγή και η ΒΔ μένει όπως ήταν πριν εκτελεστεί η συναλλαγή. Η Ατομικότητα σημαίνει ότι οι χρήστες είναι απαλλαγμένοι από τον φόβο μη ολοκληρωμένων συναλλαγών.
  • 10. Χαρακτηριστικά ενός ΣΔΒΔ Η Συνέπεια διασφαλίζει ότι η ΒΔ διατηρείται σε μια συνεπή κατάσταση, συγκεκριμένα λέει ότι κάθε συναλλαγή θα οδηγεί την βάση δεδομένων από τη μια συνεπή κατάσταση στην άλλη. Σε περίπτωση που μια συναλλαγή παραβιάζει κάποιο κανόνα της συνέπειας, ανακαλείται προκειμένου η ΒΔ να έχει μόνο έγκυρα δεδομένα. Παράδειγμα λογικού περιορισμού: κατά τη διάρκεια της μεταφοράς χρημάτων από ένα λογαριασμό σε ένα άλλο, το άθροισμα των δύο λογαριασμών στο τέλος, πρέπει να ισούται με το άθροισμα τους στην αρχή
  • 12. Χαρακτηριστικά ενός ΣΔΒΔ Η Απομόνωση αναφέρεται στην απαίτηση ότι όλες οι ενέργειες δεν μπορούν να έχουν πρόσβαση ή να δουν δεδομένα τα οποία τροποποιούνται εκείνη την στιγμή από μια συναλλαγή η οποία δεν έχει ακόμα ολοκληρωθεί. Η Μονιμότητα εγγυάται στον χρήστη ότι αν τελειώσει μια συναλλαγή επιτυχώς τότε τα αποτελέσματα της δεν θα χαθούν. Οι αλλαγές που έχει κάνει η συναλλαγή δεν θα χαθούν σε περίπτωση απώλειας ρεύματος ή άλλης καταστροφής
  • 13. Αρχιτεκτονική ΣΔΒΔ Στα ΣΔΒΔ έχει επικρατήσει η αρχιτεκτονική των εξής τριών επιπέδων (ANSI/SPARC):  Εσωτερικό επίπεδο (internal level), έχει να κάνει με την αποθήκευση των αρχείων στον σκληρό δίσκο, δηλ. την πραγματική ή φυσική κατάστασή τους.  Εξωτερικό επίπεδο (external level), έχει να κάνει με τους χρήστες είτε αυτοί είναι απλοί χειριστές, είτε προγραμματιστές ή και οι διαχειριστές της βάσης δεδομένων.  Εννοιολογικό επίπεδο (conceptual level), είναι το ενδιάμεσο επίπεδο που συνδέει τα δύο άλλα και έχει να κάνει με τη λογική σχεδίαση των αρχείων της βάσης δεδομένων.
  • 14. Κατηγορίες Χρηστών Οι δυνατότητες του ΣΔΒΔ αξιοποιούνται από διάφορες κατηγορίες χρηστών. Οι κατηγορίες αυτές έχουν ως εξής:  Τελικοί Χρήστες Στην ουσία οι πελάτες της ΒΔ. Διακρίνονται σε:  Απλούς χρήστες. Στην κατηγορία αυτή ανήκουν οι χρήστες που χρησιμοποιούν κάποιο πρόγραμμα εφαρμογής για να αποκτήσουν πρόσβαση στα δεδομένα της βάσης. Τα δικαιώματα των απλών χρηστών είναι περιορισμένα, ενώ οι λειτουργίες που επιτρέπεται να πραγματοποιήσουν είναι προκαθορισμένες και ρυθμίζονται αναλόγως με τη λειτουργία του συστήματος. Για παράδειγμα, ένας χρήστης του φορολογικού συστήματος TAXIS, ο οποίος έχει υποβάλλει ηλεκτρονικά τη φορολογική του δήλωση, μπορεί να διαβάσει και να τροποποιήσει μόνο τα δικά του δεδομένα και όχι άλλων χρηστών. Οι απλοί χρήστες τις περισσότερες φορές αγνοούν την ύπαρξη του ΣΔΒΔ.  Προχωρημένοι Χρήστες. Στην κατηγορία αυτή ανήκουν οι χρήστες που έχουν επίγνωση της ύπαρξης του ΣΔΒΔ καθώς και της δομής της βάσης. Έχουν τη δυνατότητα να χρησιμοποιούν τη Δομημένη Γλώσσα ερωτημάτων (SQL) για να επικοινωνούν με τη βάση, ενώ σε πολλές περιπτώσεις γράφουν τα δικά τους προγράμματα εφαρμογής.
  • 15. Κατηγορίες Χρηστών Προγραμματιστές Εφαρμογών. Ο προγραμματιστής εφαρμογών καλείται να υλοποιήσει τμήματα λογισμικού, τα οποία επικοινωνούν με το ΣΔΒΔ για προσπέλαση και ενημέρωση δεδομένων. Οι εφαρμογές υλοποιούνται χρησιμοποιώντας μία γλώσσα προγραμματισμού (π.χ. C++, Java) ή χρησιμοποιώντας κάποιο περιβάλλον ανάπτυξης εφαρμογών, το οποίο παρέχει ο κατασκευαστής του ΣΔΒΔ. Σχεδιαστές Βάσεων Δεδομένων. Η αναπαράσταση του πραγματικού κόσμου απαιτεί την προσεκτική σχεδίαση της Βάσης Δεδομένων. Αρχικά θα πρέπει να προσδιορισθούν οι απαραίτητες οντότητες και οι συσχετίσεις που υπάρχουν μεταξύ τους. Στη συνέχεια, η πληροφορία αυτή χρησιμοποιείται για την κατασκευή της εσωτερικής αναπαράστασης της πληροφορίας στη Βάση Δεδομένων του συστήματος. Η διαδικασία αυτή εκτελείται από εξειδικευμένους αναλυτές και σχεδιαστές Βάσεων Δεδομένων, οι οποίοι καλούνται να περιγράψουν τα αντικείμενα του πραγματικού κόσμου με αντικείμενα της Βάσης Δεδομένων. Οι σχεδιαστές έχουν στη διάθεσή τους εργαλεία λογισμικού με τα οποία αυτοματοποιείται η διαδικασία περιγραφής των δεδομένων
  • 16. Κατηγορίες Χρηστών Διαχειριστές Βάσεων Δεδομένων. Στην κατηγορία αυτή ανήκουν οι χρήστες που έχουν επιπλέον δικαιώματα που αφορούν στον τρόπο οργάνωσης των δεδομένων, στον τρόπο λειτουργίας του ΣΔΒΔ, στη διαχείριση των χρηστών και στην αποκατάσταση των δεδομένων σε περιπτώσεις απώλειας δεδομένων λόγω βλαβών του υλικού του συστήματος. Οι διαχειριστές έχουν στη διάθεσή τους εξειδικευμένες εφαρμογές με τις οποίες ελέγχουν την ορθότητα των δεδομένων και φροντίζουν για τη βέλτιστη λειτουργία του συστήματος.
  • 17. Γλώσσα Βάσεων Δεδομένων Αποτελείται από δυο τμήματα που είναι σχεδιασμένα για διαφορετικούς σκοπούς.  Η γλώσσα ορισμού δεδομένων (Data Definition Language, DDL) χρησιμοποιείται για τον ορισμό των οντοτήτων και των μεταξύ τους σχέσεων. Με τη γλώσσα αυτή δηλώνουμε τα χαρακτηριστικά που έχει κάθε οντότητα και τους αντίστοιχους τύπους δεδομένων (π.χ., ακέραιος αριθμός, σειρά χαρακτήρων).  Η γλώσσα χειρισμού δεδομένων (Data Manipulation Language, DML) χρησιμοποιείται για την επεξεργασία, την ενημέρωση, την εισαγωγή και τη διαγραφή δεδομένων.
  • 18. Κατηγορίες ΣΔΒΔ Τα κεντρικά ΣΔΒΔ υλοποιούνται όταν τα στοιχεία τους βρίσκονται, αποθηκεύονται και διατηρούνται σε μια ενιαία θέση. Αυτή η θέση είναι πολύ συχνά ένας κεντρικός υπολογιστής. Στις περισσότερες περιπτώσεις, μια κεντρική βάση δεδομένων θα χρησιμοποιηθεί από έναν οργανισμό ή ένα ίδρυμα (π.χ. κάποια εταιρεία επιχειρήσεων ή ένα πανεπιστήμιο.) Οι χρήστες έχουν πρόσβαση σε μια κεντρική βάση δεδομένων μέσω ενός δικτύου υπολογιστών. Μοντέλο πελάτη-εξυπηρετητή Σύμφωνα με το μοντέλο αυτό, τόσο ο κεντρικός υπολογιστής όσο και οι υπολογιστές που χρησιμοποιούν οι χρήστες είναι προσωπικοί υπολογιστές και συνδέονται μεταξύ τους μέσω τοπικού δικτύου Kατανεμημένη Βάση Δεδομένων (ΚΒΔ) είναι η βάση δεδομένων στην οποία τμήματά της αποθηκεύονται σε πολλούς υπολογιστές σε ένα δίκτυο. Οι χρήστες έχουν πρόσβαση στο τμήμα της βάσης δεδομένων στην τοποθεσία τους, έτσι ώστε να έχουν πρόσβαση στα δεδομένα που σχετίζονται με τα καθήκοντά τους, χωρίς να επηρεάζεται η εργασία των άλλων χρηστών.
  • 20. Η Γλώσσα Βάσεων Δεδομένων SQL Η γλώσσα SQL (Structured Query Language) είναι γλώσσα διαχείρισης Σχεσιακών Βάσεων Δεδομένων. Η SQL αναπτύχθηκε στην εταιρεία IBM στις αρχές της δεκαετίας του 1970 και αρχικά ονομαζόταν SEQUEL. Η γλώσσα SQL θεωρείται μια από τις κύριες αιτίες της εμπορικής επιτυχίας των Σχεσιακών Βάσεων Δεδομένων, επειδή ήταν απλή και εύκολη στη χρήση της.
  • 21. Η Γλώσσα Βάσεων Δεδομένων SQL Η SQL αποτελείται από δύο βασικά μέρη: τη γλώσσα SQL Ορισμού Δεδομένων (SQL DDL) και τη γλώσσα SQL χειρισμού δεδομένων (SQL DML). Με την γλώσσα ορισμού δεδομένων ορίζεται το σχήμα των δεδομένων, δηλαδή η μορφή τους, ενώ με τη γλώσσα χειρισμού δεδομένων ορίζονται οι λειτουργίες αποθήκευσης και ανάκτησης των δεδομένων.
  • 22. Η Γλώσσα Βάσεων Δεδομένων SQL Σε ένα Σχεσιακό Σύστημα Διαχείρισης Βάσεων Δεδομένων:  Δημιουργώ πίνακες με τη Γλώσσα Ορισμού Δεδομένων (DDL)  Εισάγω δεδομένα στους σχεσιακούς πίνακες με τη Γλώσσα Χειρισμού Δεδομένων (DML)  Ενημερώνω/διαγράφω τα δεδομένα των πινάκων με τη Γλώσσα Χειρισμού Δεδομένων (DML)  Εκτελώ ερωτήματα ανάκτησης για τα δεδομένα των πινάκων με τη Γλώσσα Χειρισμού Δεδομένων (DML)
  • 23. Τύποι Δεδομένων της SQL Η SQL που είναι γλώσσα προγραμματισμού Βάσεων Δεδομένων, έχει τους δικούς της τύπους δεδομένων, οι οποίοι χρησιμοποιούνται για να καθοριστεί το είδος των στοιχείων που θα αποθηκεύονται στους σχεσιακούς πίνακες.  Αριθμητικοί τύποι δεδομένων της SQL (INTEGER ή ΙΝΤ FLOAT)  Αλφαριθμητικοί τύποι δεδομένων της SQL (CHAR(N) η VARCHAR(N))  Τύποι δεδομένων για την ημερομηνία και την ώρα Επώνυμο Όνομα Πατρώνυμο Ημερομηνία_Γέννησης Ομήρου Οδύσσεια Όμηρος 01-05-1999 Πηλείδης Αχιλλέας Πρίαμος 24-06-1999
  • 24. Δημιουργία Πίνακα Η εντολή της SQL που μας δίνει αυτή τη δυνατότητα είναι η CREATE TABLE, η οποία χρησιμοποιείται ως εξής: CREATE TABLE <όνομα_πίνακα> ( <όνομα στήλης 1> <τύπος στήλης 1>, <όνομα στήλης 2> <τύπος στήλης 2>, … <όνομα στήλης Ν> <τύπος στήλης Ν> )
  • 25. Δημιουργία Πίνακα CREATE TABLE Μάθημα ( Όνομα VARCHAR(100), Ώρες INTEGER ) CREATE TABLE Μαθητής ( Επώνυμο VARCHAR(50), Όνομα VARCHAR (50), Πατρώνυμο VARCHAR (50), Ημερομηνία_Γέννησης DATE, Φύλο CHAR(1) )
  • 26. Δημιουργία Πίνακα CREATE TABLE Μαθητής ( Επώνυμο VARCHAR(50), Όνομα VARCHAR (50), Πατρώνυμο VARCHAR (50), Ημερομηνία_Γέννησης DATE, Φύλο CHAR(1), Πόλη VARCHAR(50) DEFAULT 'Αθήνα' ) Προκαθορισμένη τιμή (default value) σε ένα πεδίο σημαίνει ότι αν δεν καθοριστεί άλλη τιμή κατά την εισαγωγή δεδομένων, χρησιμοποιείται μία τιμή που έχει καθορίσει ο σχεδιαστής της Βάσης Δεδομένων.
  • 27. Δημιουργία Πίνακα CREATE TABLE Μαθητής ( Επώνυμο VARCHAR(50) NOT NULL, Όνομα VARCHAR (50) NOT NULL, Πατρώνυμο VARCHAR (50), Ημερομηνία_Γέννησης DATE, Φύλο CHAR(1), Πόλη VARCHAR(50) DEFAULT 'Αθήνα' ) Περιορισμοί υπαρξιακής ακεραιότητας Οι περιορισμοί αυτοί μπορεί να αφορούν στην ύπαρξη ή μη τιμών σε κάποιο πεδίο πίνακα και εκφράζονται σε γλώσσα SQL με τις φράσεις NULL και NOT NULL.
  • 28. Δημιουργία Πίνακα CREATE TABLE Μαθητής ( ΑΜ INT, Επώνυμο VARCHAR(50) NOT NULL, Όνομα VARCHAR (50) NOT NULL, Πατρώνυμο VARCHAR (50), Ημερομηνία_Γέννησης DATE, Φύλο CHAR(1), Πόλη VARCHAR(50) DEFAULT 'Αθήνα', PRIMARY KEY (ΑΜ) ) Περιορισμοί κύριου κλειδιού Το κύριο κλειδί ενός σχεσιακού πίνακα είναι ένα πεδίο ή συνδυασμός πεδίων που για κάθε γραμμή του πίνακα έχει μοναδική τιμή.
  • 29. Δημιουργία Πίνακα CREATE TABLE ΕγγραφήΜαθητή ( ΑΜ_Μαθητή ΙΝΤ, Σχολ_έτος CHAR(9), Τάξη CHAR(1), PRIMARY KEY (ΑΜ_Μαθητή, Σχολ_έτος), FOREIGN KEY (ΑΜ_Μαθητή) REFERENCES Μαθητής(ΑΜ) ) Περιορισμοί αναφορικής ακεραιότητας Οι περιορισμοί αναφορικής ακεραιότητας καθορίζουν συσχετίσεις μεταξύ των πεδίων διαφορετικών πινάκων, δηλαδή τα ξένα κλειδιά.
  • 30. SQL Σχεσιακή Γλώσσα Χειρισμού Δεδομένων (DML) Μία Γλώσσα Χειρισμού Δεδομένων (Data Manipulation Language - DML) χρησιμοποιείται από τους σχεδιαστές - προγραμματιστές και από τους διαχειριστές Βάσεων Δεδομένων για τον χειρισμό των δεδομένων, δηλαδή για να εισαχθούν, να ενημερωθούν, να διαγραφούν και να ανακτηθούν τα δεδομένα της βάσης. Τα σχεσιακά ΣΔΒΔ χρησιμοποιούν κατά κανόνα τη γλώσσα SQL για τον χειρισμό των δεδομένων. Η γλώσσα SQL DML επιτρέπει την περιγραφή εντολών εισαγωγής, ενημέρωσης, διαγραφής και ανάκτησης των δεδομένων των πινάκων.
  • 31. Εισαγωγή Δεδομένων σε Πίνακα Σχεσιακής ΒΔ με SQL Η εισαγωγή δεδομένων σε πίνακα σχεσιακής Βάσης Δεδομένων πραγματοποιείται με την εντολή INSERT INTO της SQL. Η σύνταξη της εντολής INSERT INTO στη γενική της μορφή είναι: INSERT INTO <όνομα πίνακα> VALUES (τιμή_1, τιμή_2, τιμή_3, ...)
  • 32. Εισαγωγή Δεδομένων σε Πίνακα Σχεσιακής ΒΔ με SQL Εισαγωγή εγγραφών καθορίζοντας τιμές για όλα τα πεδία του πίνακα INSERT INTO Μαθητής VALUES (863, 'Πηλείδης', 'Αχιλλέας’, 'Πηλέας', '1999-06-24', 'Α', 'Αθήνα')
  • 33. Εισαγωγή Δεδομένων σε Πίνακα Σχεσιακής ΒΔ με SQL Εισαγωγή εγγραφών καθορίζοντας τιμές για μερικά από τα πεδία του πίνακα INSERT INTO Μαθητής (ΑΜ, Επώνυμο, Όνομα, Πατρώνυμο, Φύλο) VALUES (864, 'Ομήρου', 'Οδύσσεια', 'Όμηρος', 'Θ')
  • 34. Ενημέρωση Εγγραφών Πίνακα Σχεσιακής ΒΔ θέλουμε να ενημερώσουμε την τιμή του πεδίου Ώρες έτσι ώστε όλα τα καταχωρημένα μαθήματα να έχουν 3 ώρες διδασκαλίας. UPDATE Μάθημα SET Ώρες = 3 UPDATE Μάθημα SET Ώρες = 3 WHERE Ώρες = 5
  • 35. Διαγραφή Εγγραφών Πίνακα Σχεσιακής ΒΔ DELETE FROM <πίνακας> Αν για παράδειγμα θέλουμε να διαγράψουμε όλα τα μαθήματα που είναι καταχωρημένα στον πίνακα Μάθημα, γράφουμε και εκτελούμε την εντολή: DELETE FROM Μάθημα DELETE FROM ΓραπτόςΒαθμόςΜαθητή WHERE Σχολ_έτος = '2014-2015'
  • 36. στο προηγούμενο μάθημα…  Γιατί χρησιμοποιούμε μία Βάση Δεδομένων; Για να αποθηκεύσω-οργανώσω την πληροφορία που έχω, να μπορώ να την αναζητήσω αποδοτικά (βοηθάει η δομή που έχει).  Τί αποθηκεύουμε σε μία Βάση Δεδομένων; Οι πληροφορίες οργανώνονται σε πίνακες. Οι πίνακες μπορούν να συνδεθούν μεταξύ τους έτσι ώστε να μπορεί να αποθηκευτεί αλληλεξαρτώμενη πληροφορία (π.χ. ποιοι φοιτητές συμμετέχουν σε ποια μαθήματα).  Πώς οργανώνονται οι πληροφορίες σε μία Βάση Δεδομένων; Πίνακες-Εγγραφές: Δημιουργούμε τους πίνακες με τα πεδία που θέλουμε. Στη συνέχεια Αποθηκεύουμε τις πληροφορίες (με τη μορφή εγγραφών) στους πίνακες που δημιουργήσαμε.Αποθηκεύουμε τις πληροφορίες με τέτοιο τρόπο ώστε να μην επαναλαμβάνονται και καταλαμβάνουν άσκοπα χώρο και πόρους κατά την αναζήτηση.
  • 37. Η Πρόταση Select Παράδειγμα: Ονόματα όλων των ηθοποιών που έχουν παίξει σε ταινίες select Όνομα From Παίζει Στην απλή σχεσιακή άλγεβρα, το ερώτημα θα ήταν Πόνομα(Παίζει) •Η SQL επιτρέπει πολλαπλές εμφανίσεις (διπλότυπα) της ίδιας συστοιχίας (σειράς) τόσο στις σχέσεις όσο και στα αποτελέσματα των ερωτήσεων. Μια σχέση στην SQL είναι ένα πολυσύνολο. •Για να πραγματοποιηθεί η διαγραφή των διπλοτύπων, εισάγεται τη λέξη κλειδί distinct μετά τη select. Απαλοιφή διπλών εμφανίσεων select distinct Όνομα from Παίζει
  • 38. Βασικές Ερωτήσεις Ανάκτησης Απλή μορφή Επιλογή και παρουσίαση πληροφοριών από συγκεκριμένα πεδία πίνακα SELECT Επώνυμο, Όνομα FROM Μαθητής Επιλογή και παρουσίαση πληροφοριών όλων των πεδίων του πίνακα SELECT * FROM Μαθητής
  • 39. Αλλαγές επιλογών σε πίνακες Μπορείτε να κάνετε αλλαγές σε υπάρχοντες πίνακες με την εντολή ALTER TABLE (δείτε παραδείγματα). Αλλάζει πεδίο σε UNIQUE ALTER TABLE Persons ADD UNIQUE (P_Id); Αλλάζει πεδίο σε PRIMARY KEY ALTER TABLE Persons ADD PRIMARY KEY (P_Id); Διαγράφει PRIMARY KEY ALTER TABLE Persons DROP PRIMARY KEY; Αλλάζει πεδίο σε FOREIGN KEY ALTER TABLE Orders ADD FOREIGN KEY (P_Id) REFERENCES Persons(P_Id); Διαγράφει FOREIGN KEY ALTER TABLE Orders DROP FOREIGN KEY (P_Id) REFERENCES Persons(P_Id);
  • 40. Αλλαγές επιλογών σε πίνακες Θέτει προκαθορισμένη τιμή σε πεδίο ALTER TABLE Persons ALTER City SET DEFAULT 'Athens'; Διαγράφει προκαθορισμένη τιμή σε πεδίο ALTER TABLE Persons ALTER City DROP DEFAULT; Μετονομάζει πίνακα ALTER TABLE mytb RENAME TO yourdb; Προσθέτει στήλη στον πίνακα ALTER TABLE mytb lastname VARCHAR(30); Αλλάζει χαρακτηριστικά στήλης στον πίνακα ALTER TABLE mytb MODIFY name VARCHAR(35); ή ALTER TABLE mytb ALTER COLUMN name VARCHAR(35); Διαγράφει στήλη από τον πίνακα ALTER TABLE mytb DROP COLUMN name id2;
  • 41. Διάφορες εντολές σχετικές με πίνακες Αδειάζει τον πίνακα TRUNCATE TABLE mytb; Εμφανίζει τη δομή (σχήμα) του πίνακα DESC mytb; Διαγράφει τον πίνακα DROP TABLE mytb;
  • 42. Επιλογή με κριτήρια Επιλέγει και εμφανίζει πεδία που ικανοποιούν το κριτήριο. SELECT LastName, FirstName FROM Persons WHERE FirstName='Πολυξένη';
  • 43. Η πρόταση DISTINCT Επιλέγει και εμφανίζει συγκεκριμένα πεδία και τις εγγραφές του πίνακα αλλά όχι διπλοεγγραφές. SELECT DISTINCT City FROM Persons; Επιστρέφει τον αριθμό εγγραφών συγκεκριμένου πεδίου αλλά μόνο για διακριτές τιμές. SELECT COUNT(DISTINCT column_name) FROM table_name;
  • 44. Η πρόταση AS Μετονομάζει ονόματα πεδίων και πινάκων. SELECT LastName AS Επώνυμο,FirstName AS Όνομα FROM Persons;
  • 45. Συναθροιστικές συναρτήσεις (Aggregate functions) Έστω ο παρακάτω πίνακας Orders Εκτός από τη συνάρτηση count() που είδαμε παραπάνω, άλλες συναρτήσεις που μπορείτε να χρησιμοποιήσετε είναι: Order_Id OrderDate OrderPrice CustomerName 1 2010/11/12 1000 Αγγέλου 2 2010/10/23 1600 Νικολάου 3 2010/09/02 700 Αγγέλου 4 2010/09/03 300 Αγγέλου 5 2010/08/30 2000 Ιωάννου 6 2010/10/04 100 Νικολάου
  • 46. Συναθροιστικές συναρτήσεις (Aggregate functions) Η συνάρτηση SUM() επιστρέφει το άθροισμα (αριθμητικό) από μια στήλη (πεδίο). SELECT SUM(OrderPrice) FROM Orders; Με το παρακάτω αποτέλεσμα Η συνάρτηση AVG() επιστρέφει τη μέση τιμή (αριθμητική). SELECT AVG(OrderPrice) FROM Orders; Με το παρακάτω αποτέλεσμα SUM(OrderPrice) 5700 AVG(OrderPrice) 950.0000
  • 47. Συναθροιστικές συναρτήσεις (Aggregate functions) Η συνάρτηση MIN() Η συνάρτηση MIN() επιστρέφει τη μικρότερη τιμή (αριθμητική). SELECT MIN(OrderPrice) FROM Orders; Η συνάρτηση MAX() Η συνάρτηση MAX() επιστρέφει τη μεγαλύτερη τιμή (αριθμητική). SELECT MAX(OrderPrice) FROM Orders;
  • 48. Η ΠρότασηWhere Η πρόταση where αντιστοιχεί στο κατηγόρημα επιλογής της σχεσιακής άλγεβρας. Αποτελείται από ένα κατηγόρημα που περιλαμβάνει γνωρίσματα των σχέσεων που εμφανίζονται στην πρότασηfrom. Παράδειγμα: Τον τίτλο όλων των ταινιών που γυρίστηκαν μετά το 1995 και είναι ασπρόμαυρες Select Τίτλος from Ταινία where Έτος >1995 and Είδος=''Ασπρόμαυρη'' συνθήκη του where Λογικοί τελεστές: NOT AND OR Τελεστές σύγκρισης: <, <=, >, >=, =, <>,between, not between ανάμεσα σε αριθμητικές εκφράσεις, συμβολοσειρές (strings), και ειδικούς τύπους.
  • 49. Η ΠρότασηWhere Η SQL περιλαμβάνει μια πράξη σύγκρισης between προκειμένου να απλοποιηθούν οι συνθήκες επιλογής στην πρόταση where που καθορίζουν ότι μια τιμή είναι μικρότερη ή ίση προς κάποια τιμή και μεγαλύτερη ή ίση από κάποια άλλη τιμή. Παράδειγμα χρήσης του between : Select Τίτλος From Ταινία where Έτος between1990 and1995 αντί του Select Τίτλος from Ταινία Where Έτος >=1990 and Έτος <=1995
  • 50. Η ΠρότασηWhere Χρήση συγκριτικών τελεστών (=, =>, <=, <, >, <>) Επιλογή με χρήση συγκριτικών τελεστών SELECT * FROM Persons WHERE City='Athens’; Χρήση λογικών τελεστών (AND, OR, NOT) Μπορεί να έχουμε λογικούς τελεστές σε συνδυασμό με συγκριτικούς τελεστές SELECT * FROM Persons WHERE LastName='Αγγέλου' AND (FirstName='Ελένη' OR FirstName='Μαρία');
  • 51. Η Πρόταση Where Επιλογή με τον τελεστή BETWEEN SELECT * FROM Persons WHERE FirstName BETWEEN 'Ελένη' AND 'Πέτρος'; Επιλογή με τον τελεστή IN ή NOT IN Ελέγχουμε αν μια τιμή ανήκει ή δεν ανήκει σε ένα σύνολο τιμών. SELECT * FROM Persons WHERE FirstName IN ('Ελένη','Πέτρος'); Επίσης SELECT * FROM Persons WHERE FirstName NOT IN ('Ελένη','Πέτρος');
  • 52. Η Πρόταση Where Επιλογή με τον τελεστή LIKE. Το παρακάτω ερώτημα επιλέγει ότι αρχίζει από Α. Άλλες επιλογές είναι '%a' ή '%ab% SELECT * FROM Persons WHERE City LIKE 'A%'; Το παρακάτω ερώτημα επιλέγει ότι τελειώνει σε 'ia' και με τον πρώτο χαρακτήρα να είναι οποιοσδήποτε. Άλλες επιλογές είναι 'a_' ή '_ab_is' SELECT * FROM Persons WHERE FirstName LIKE '_ia'; Το παρακάτω ερώτημα επιλέγει ότι αρχίζει από τον χαρακτήρα b, s ή p. Άλλες επιλογές είναι '%[bsp]' ή '%[bsp]%' SELECT * FROM Persons WHERE LastName LIKE '[bsp]%'; Το παρακάτω ερώτημα επιλέγει ό,τι δεν αρχίζει από τον χαρακτήρα b, s ή p. Άλλες επιλογές είναι '%[^bsp]' ή '%[^bsp]%' SELECT * FROM Persons WHERE LastName LIKE '[^bsp]%';