Η γλώσσα SQL H SQL είναι η γλώσσα για όλα τα εμπορικά σχεσιακά συστήματα διαχείρισης βάσεων δεδομένων H SQL έχει διάφορα τμήματα: Γλώσσα Ορισμού Δεδομένων (ΓΟΔ) Γλώσσα Χειρισμού Δεδομένων (ΓΧΔ) Ενσωματωμένη Γλώσσα Χειρισμού Δεδομένων Ορισμό Όψεων Εξουσιοδότηση (authentication) Ακεραιότητα Έλεγχο Συναλλαγών 1
Βήματα Δημιουργίας και Χρήσης μιας (Σχεσιακής) Βάσης Δεδομένων 1. Υλοποίηση Διαγράμματος Οντοτήτων Συσχετίσεων 2. Σχεδιασμός Σχήματος 3. Δημιουργία Σχήματος χρησιμοποιώντας τη ΓΟΔ (DDL = Data Definition Language) 4. Μαζική Φόρτωση των αρχικών δεδομένων Η βάση δεδομένων έχει δεδομένα 5. Eκτέλεση ερωτήσεων (select-from-where) και τροποποιήσεων (insert-delete-update) στη BΔ 2
Γλώσσα Ορισμού Δεδομένων Γλώσσα Ορισμού Δεδομένων (ΓΟΔ) Σχετικά με το λογικό σχήμα, η ΓΟΔ SQL υποστηρίζει τους ορισμούς: του σχήματος κάθε σχέσης του πεδίου τιμών κάθε γνωρίσματος των περιορισμών ακεραιότητας 3
Δημιουργία πίνακα: create table R(A 1 D 1, A 2 D 2,..., A n D n, <περιορισμός-ακεραιότητας 1 >,, <περιορισμός-ακεραιότητας k > Γλώσσα Ορισμού Δεδομένων όπου R είναι το όνομα της σχέσης, A i τα ονόματα των γνωρισμάτων, και D i οι τύποι των αντίστοιχων πεδίων τιμών. Βασικότεροι τύποι: integer, bigint, real ή float, char(<πλήθος χαρακτήρων>), varchar(<πλήθος χαρακτήρων>), 4 decimal ή numeric(<συνολικά ψηφία>,<δεκαδικά ψηφία>), date, time.
Επιτρεπτοί περιορισμοί ακεραιότητας είναι της μορφής: Ορισμός Σχήματος primary key A j1, A j2,..., A jn, (δεν επιτρέπονται επαναλαμβανόμενες τιμές και NULL τιμές) για τον ορισμό του πρωτεύοντος κλειδιού unique A j1, A,..., A j 2 jn, (δεν επιτρέπονται επαναλαμβανόμενες τιμές; NULL τιμές επιτρέπονται (μόνο μία)) για τον ορισμό υποψηφίων κλειδιών check P για τον ορισμό σημασιολογικών περιορισμών foreign key (A i ) references A j για τον ορισμό ξένου κλειδιού 5
Παράδειγμα Τράπεζα: Ορισμός Σχήματος Τα επόμενα παραδείγματα αναφέρονται σε μια βάση δεδομένων για τράπεζες: Παραδείγματα (1) create table Πελάτης (ΌνομαΠελάτη char(20), Οδός varchar(30), Πόλη char(30), primary key (ΌνομαΠελάτη)) 6
Παράδειγμα Τράπεζα: Ορισμός Σχήματος (2) create table Λογαριασμός (ΑριθμόςΛογαριασμού char(10), ΌνομαΥποκαταστήματος char(15), Ποσό int default 0, primary key (ΑριθμόςΛογαριασμού) check (Ποσό >= 0, check (ΌνομαΥποκαταστήματος in select ΌνομαΥποκαταστήματος from Υποκατάστημα) ) 7
Παράδειγμα Τράπεζα: Ορισμός Σχήματος Ενώ στην check (ΌνομαΥποκαταστήματος in select ΌνομαΥποκαταστήματος from Υποκατάστημα) η select ΌνομαΥποκαταστήματος from Υποκατάστημα επιστρέφει ένα σύνολο από ονόματα (βλ. την εντολή Select) και ο περιορισμός έγκειται στο ότι το ΌνομαΥποκαταστήματος του πίνακα Λογαριασμός θα πρέπει να ανήκει (in) σε αυτό το σύνολο. Αλλιώς δεν γίνεται δεκτή η καταχώριση. 8
Περιορισμοί Ακεραιότητας Περισσότερα για τους Περιορισμούς Αναφοράς Σύνταξη: foreign key (A i ) references πίνακας (A j ) Όταν μια πράξη παραβιάζει έναν περιορισμό αναφοράς απορρίπτεται εκτός αν έχει οριστεί: cascade, set null, set default on delete on update 9
Παράδειγμα Τράπεζα: Ορισμός Σχήματος Παράδειγμα: create table Λογαριασμός.. foreign key (ΌνομαΥποκαταστήματος) references Υποκατάστημα (ΌνομαΥποκαταστήματος) on delete cascade on update cascade Λόγω του όρου on delete cascade, αν η διαγραφή μιας πλειάδας της σχέσης Υποκατάστημα οδηγήσει σε παραβίαση του περιορισμού αναφορικής ακεραιότητας, τότε η διαγραφή αυτή θα μεταφερθεί διαδοχικά και στη σχέση Λογαριασμός, διαγράφοντας τις πλειάδες που αναφέρονται στο υποκατάστημα που διαγράφηκε από τη σχέση Λογαριασμός. Παρομοίως εκτελούνται οι αλυσιδωτές ενημερώσεις (on update cascade). Αν αντί για cascade υπήρχε «set null» ή «set default», θα έπαιρνε αντίστοιχα το ξένο κλειδί τιμή Null ή την προκαθορισμένη (default) τιμή. 10
Διαγραφή Σχήματος Διαγραφή Σχήματος Μια καινούργια σχέση είναι αρχικά άδεια. Για να διαγραφεί ένας ολόκληρος πίνακας: drop table R Προσοχή: Διαφορά από delete from R where P (Η οποία διαγράφει τις εγγραφές του R οι οποίες ικανοποιούν τη συνθήκη P) 11
Τροποποίηση Σχήματος Τροποποίηση Σχήματος ALTER TABLE όνομα πίνακα ADD - προσθέτει καινούργια στήλη Ή περιορισμό: add constraint primary key add constraint foreign key DROP - διαγράφει μια στήλη Ή περιορισμό: drop primary key MODIFY - τροποποιεί μια στήλη 12
Τροποποίηση Σχήματος Προσθήκη νέου γνωρίσματος: alter table R add A D Γίνεται προσθήκη σε ένα πίνακα R που ήδη υπάρχει του γνωρίσματος A με τύπο D (π.χ. integer). Η τιμή των πλειάδων της R στο καινούργιο γνώρισμα είναι null. Διαγραφή του γνωρίσματος Α από τον πίνακα R: alter table R drop A 13
Τροποποίηση Σχήματος alter table R modify (όνομα_στήλης new_datatype) modify μπορεί να τροποποιήσει μόνο τον τύπο δεδομένων, όχι το όνομα της στήλης 14