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

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

Βάσεις Δεδομένων. Ενότητα 1: Εισαγωγή στις Βάσεις δεδομένων. Πασχαλίδης Δημοσθένης Τμήμα Ιερατικών σπουδών

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Λογιστική Κόστους Ενότητα 12: Λογισμός Κόστους (2)

Εισαγωγή στους Αλγορίθμους

Βάσεις Περιβαλλοντικών Δεδομένων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

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

Εισαγωγή στους Αλγορίθμους

Λογιστική Κόστους Ενότητα 8: Κοστολογική διάρθρωση Κύρια / Βοηθητικά Κέντρα Κόστους.

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Προγραμματισμός H/Y Ενότητα 3: Πίνακες αριθμών και χαρακτήρων. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών Ενότητα 2: ΣΥΓΚΕΝΤΡΩΣΗ ΠΛΗΡΟΦΟΡΙΩΝ ΜΑΡΚΕΤΙΝΓΚ Λοίζου Ευστράτιος Τμήμα Τεχνολόγων Γεωπόνων-Kατεύθυνση

Ενότητα. Εισαγωγή στις βάσεις δεδομένων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στην Διοίκηση Επιχειρήσεων

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

ΣΥΣΤΗΜΑΤΑ ΗΛΕΚΤΡΙΚΗΣ ΕΝΕΡΓΕΙΑΣ ΙIΙ

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

Διοικητική Λογιστική

Προγραμματισμός H/Y Ενότητα 4: Δείκτες. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εισαγωγή στους Αλγορίθμους Ενότητα 10η Άσκηση Αλγόριθμος Dijkstra

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Θερμοδυναμική. Ανοικτά Ακαδημαϊκά Μαθήματα. Πίνακες Νερού σε κατάσταση Κορεσμού. Γεώργιος Κ. Χατζηκωνσταντής Επίκουρος Καθηγητής

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

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Εισαγωγή στους Αλγορίθμους

Βάσεις Περιβαλλοντικών Δεδομένων

ΗΛΕΚΤΡΟΤΕΧΝΙΑ-ΗΛΕΚΤΡΟΝΙΚΗ ΕΡΓΑΣΤΗΡΙΟ

Βάσεις Περιβαλλοντικών Δεδομένων

ΑΝΑΛΥΣΗ ΧΡΗΜΑΤΟΟΙΚΟΝΟΜΙΚΩΝ ΚΑΤΑΣΤΑΣΕΩΝ

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους (1)

Διδακτική της Πληροφορικής

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

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ. Ενότητα: ΔΟΜΕΣ ΕΠΑΝΑΛΗΨΗΣ ΚΥΡΟΠΟΥΛΟΣ ΚΩΝΣΤΑΝΤΙΝΟΣ. Τμήμα Διοίκηση Επιχειρήσεων (Κοζάνη)

Μηχανολογικό Σχέδιο Ι

Προγραμματισμός H/Y Ενότητα 6: Δομές (structures) Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Kruskal

Εισαγωγή στην Διοίκηση Επιχειρήσεων

Τίτλος Μαθήματος: Μαθηματική Ανάλυση Ενότητα Γ. Ολοκληρωτικός Λογισμός

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

Ιστορία της μετάφρασης

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 2: Κλάσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΗΛΕΚΤΡΟΤΕΧΝΙΑ-ΗΛΕΚΤΡΟΝΙΚΗ ΕΡΓΑΣΤΗΡΙΟ

Διοίκηση Εξωτερικής Εμπορικής Δραστηριότητας

Εισαγωγή στους Αλγορίθμους Ενότητα 9η Άσκηση - Αλγόριθμος Prim

ΗΛΕΚΤΡΟΤΕΧΝΙΑ-ΗΛΕΚΤΡΟΝΙΚΗ ΕΡΓΑΣΤΗΡΙΟ

Βάσεις Περιβαλλοντικών Δεδομένων

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο

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

Λογιστική Κόστους Ενότητα 10: Ασκήσεις Προτύπου Κόστους Αποκλίσεων.

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

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

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 7: Υπερφόρτωση τελεστών. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός H/Y Ενότητα 5: Συναρτήσεις. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Οργάνωση και Διοίκηση Πωλήσεων

Λογιστική Κόστους Ενότητα 11: Λογισμός Κόστους

Διεθνείς Οικονομικές Σχέσεις και Ανάπτυξη

ΑΝΤΙΡΡΥΠΑΝΤΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΑΙΩΡΟΥΜΕΝΩΝ ΣΩΜΑΤΙΔΙΩΝ Ενότητα 2: Αιωρούμενα σωματίδια & Απόδοση συλλογής Αν. Καθ. Δρ Μαρία Α. Γούλα Τμήμα Μηχανικών

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

ΟΙΚΟΝΟΜΕΤΡΙΑ. Ενότητα 1: Εκτιμητές και Ιδιότητες. Αναπλ. Καθηγητής Νικόλαος Σαριαννίδης Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Στατιστική Ι. Ενότητα 3: Στατιστική Ι (3/4) Αναπλ. Καθηγητής Νικόλαος Σαριαννίδης Τμήμα Διοίκησης Επιχειρήσεων (Κοζάνη)

ΗΛΕΚΤΡΟΤΕΧΝΙΑ-ΗΛΕΚΤΡΟΝΙΚΗ ΕΡΓΑΣΤΗΡΙΟ

Οργάνωση και Διοίκηση Πωλήσεων Ενότητα 1: Ο ΡΟΛΟΣ ΤΩΝ ΠΩΛΗΣΕΩΝ ΣΤΟ ΠΛΑΙΣΙΟ ΤΗΣ ΣΤΡΑΤΗΓΙΚΗΣ ΜΑΡΚΕΤΙΝΓΚ

Εκκλησιαστικό Δίκαιο. Ενότητα 10η: Ιερά Σύνοδος της Ιεραρχίας και Διαρκής Ιερά Σύνοδος Κυριάκος Κυριαζόπουλος Τμήμα Νομικής Α.Π.Θ.

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 5: Κληρονομικότητα. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Λογιστική Κόστους. Ενότητα 4: ΣΥΜΠΕΡΙΦΟΡΑ - ΦΥΣΗ ΚΟΣΤΟΥΣ. Μαυρίδης Δημήτριος Τμήμα Λογιστικής και Χρηματοοικονομικής

Μηχανολογικό Σχέδιο Ι

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 3: Έλεγχοι στατιστικών υποθέσεων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 1: Καταχώρηση δεδομένων

Μεθοδολογία Έρευνας Κοινωνικών Επιστημών

Προγραμματισμός H/Y Ενότητα 7: Αρχεία. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

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

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Προγραμματισμός Η/Υ. 7 η ενότητα: Αρχεία. Τμήμα. Τεχνολόγων Περιβάλλοντος. ΤΕΙ Ιονίων Νήσων. Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Ιονίων Νήσων

Ανοικτά Ακαδημαϊκά Μαθήματα στο ΤΕΙ Αθήνας. Βιοστατιστική (Ε) Ενότητα 2: Περιγραφική στατιστική

Εισαγωγή στους Αλγορίθμους Φροντιστήριο 1

Προγραμματισμός Ηλεκτρονικών Υπολογιστών 2 - Εργαστήριο

Έλεγχος και Διασφάλιση Ποιότητας Ενότητα 4: Μελέτη ISO Κουππάρης Μιχαήλ Τμήμα Χημείας Εργαστήριο Αναλυτικής Χημείας

ΗΛΕΚΤΡΟΝΙΚΗ ΙIΙ Ενότητα 6

Τεχνολογία Πολυμέσων. Ενότητα 8: Pool Table. Νικολάου Σπύρος Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΑΝΤΙΡΡΥΠΑΝΤΙΚΗ ΤΕΧΝΟΛΟΓΙΑ ΑΙΩΡΟΥΜΕΝΩΝ ΣΩΜΑΤΙΔΙΩΝ Ενότητα 6: Ηλεκτροστατικά Φίλτρα

Αντικειμενοστρεφής Προγραμματισμός Ενότητα 3: Constructors και destructors

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

Νέες Τεχνολογίες και Καλλιτεχνική Δημιουργία

Εκκλησιαστικό Δίκαιο

Λογιστική Κόστους Ενότητα 5: Προορισμός Κόστους

Δομημένος Προγραμματισμός

Μυελού των Οστών Ενότητα #1: Ερωτήσεις κατανόησης και αυτόαξιολόγησης

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

Κβαντική Επεξεργασία Πληροφορίας

Διοικητική Λογιστική

ΟΙΚΟΝΟΜΕΤΡΙΑ. Ενότητα 3: Πολλαπλή Παλινδρόμηση. Αναπλ. Καθηγητής Νικόλαος Σαριαννίδης Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

Βάσεις Περιβαλλοντικών Δεδομένων

Οργάνωση και Διοίκηση Πωλήσεων

Τεχνικό Σχέδιο - CAD

Transcript:

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons. Για εκπαιδευτικό υλικό, όπως εικόνες, που υπόκειται σε άλλου τύπου άδειας χρήσης, η άδεια χρήσης αναφέρεται ρητώς. 2

Χρηματοδότηση Το παρόν εκπαιδευτικό υλικό έχει αναπτυχθεί στα πλαίσια του εκπαιδευτικού έργου του διδάσκοντα. Το έργο «Ανοικτά Ακαδημαϊκά Μαθήματα στο TEI Δυτικής Μακεδονίας και στην Ανώτατη Εκκλησιαστική Ακαδημία Θεσσαλονίκης» έχει χρηματοδοτήσει μόνο τη αναδιαμόρφωση του εκπαιδευτικού υλικού. Το έργο υλοποιείται στο πλαίσιο του Επιχειρησιακού Προγράμματος «Εκπαίδευση και Δια Βίου Μάθηση» και συγχρηματοδοτείται από την Ευρωπαϊκή Ένωση (Ευρωπαϊκό Κοινωνικό Ταμείο) και από εθνικούς πόρους. 3

Σκοποί ενότητας Ο σκοπός αυτής της ενότητας είναι η γνωριμία του φοιτητή με τις βασικές αρχές και λειτουργίες της γλώσσας SQL ώστε να μπορεί να κατανοήσει τον τρόπο χειρισμού και τις δυνατότητες της γλώσσας. Πιο Συγκεκριμένα: να γνωρίζουμε τα μέρη και τις βασικές εντολές της γλώσσας SQL, να μπορούμε να δημιουργήσουμε και να μεταβάλουμε με τις εντολές της SQL το σχήμα μιας ΒΔ, να μπορούμε να συντάσσουμε εντολές της SQL που αντιστοιχούν σε ερωτήσεις διατυπωμένες σε φυσική γλώσσα και αφορούν τα δεδομένα της ΒΔ. να μπορούμε, μέσω των εντολών της SQL, να μεταβάλλουμε τα δεδομένα της ΒΔ. 4

Περιεχόμενα ενότητας Ιστορική εξέλιξη της γλώσσας. Τύποι δεδομένων. Δημιουργία πίνακα. Τροποποίηση διαγραφή πίνακα. Ακεραιότητα αναφορών. Δημιουργία και χρήση όψεων. 5

Εισαγωγή 1/2 Η ανάπτυξη και διαχείριση μιας βάσης δεδομένων επιτυγχάνεται (και) με τη βοήθεια ειδικών γλωσσών προγραμματισμού, οι οποίες ονομάζονται γλώσσες ερωταπαντήσεων (query languages). Είναι γλώσσες μη διαδικαστικές, τέταρτης γενιάς, στις οποίες δεν απαιτείται να οριστεί η διαδικασία πρόσβασης στη βάση δεδομένων. Ο χρήστης απλώς διατυπώνει τις απαιτήσεις με απλές εντολές και το ΣΔΒΔ αναλαμβάνει να τις ικανοποιήσει. Η SQL (Structured Query Language) είναι η περισσότερο διαδεδομένη γλώσσα ανάπτυξης και διαχείρισης σχεσιακών βάσεων δεδομένων. 6

Εισαγωγή 2/2 Βασίζεται στο πρότυπο ANSI/ISO SQL-92 και χρησιμοποιείται από την πλειονότητα των εμπορικών συστημάτων διαχείρισης βάσεων δεδομένων. Αρκετά όμως από αυτά τα συστήματα δεν υλοποιούν στο ακέραιο το πρότυπο της SQL-92 και σε ορισμένα σημεία δημιουργούν τις δικές τους επεκτάσεις. Το νέο βιομηχανικό πρότυπο της SQL, η έκδοση SQL-3 που ονομάζεται και SQL-99, περιέχει νέες εντολές, και μπορεί να χρησιμοποιηθεί και σε αντικειμενοστραφή (object oriented) συστήματα. 7

Εξέλιξη της SQL Πίνακας 1. Εξέλιξη της SQL, πηγή: Διδάσκων (2015). 8

Γενικά για την SQL 1/2 Όπως κάθε γλώσσα προγραμματισμού, έτσι και η SQL αποτελείται από τις εντολές με τα ορίσματά τους τις οποίες χρησιμοποιεί ο χρήστης (προγραμματιστής) με καθορισμένους κανόνες σύνταξης, για να δημιουργήσει το πρόγραμμα του. Η SQL χρησιμοποιείται για να εξυπηρετήσει κάποιον από τους εξής σκοπούς: τον ορισμό της δομής της βάσης δεδομένων, τη μεταβολή του περιεχομένου της βάσης δεδομένων, τον καθορισμό περιορισμών ακεραιότητας και την αναζήτηση δεδομένων στη βάση. 9

Γενικά για την SQL 2/2 Για την υλοποίηση των χρήσεων, η SQL διαθέτει τα εξής: Τη Γλώσσα Ορισμού Δεδομένων (Data Definition Language, DDL) που περιέχει τις εντολές για τον ορισμό και τη μεταβολή του σχεσιακού σχήματος, για τη δημιουργία και τη διαγραφή πινάκων. Επίσης, στη DDL της SQL ανήκουν και οι εντολές δημιουργίας όψεων (views) και ορισμού περιορισμών ακεραιότητας. Τη Γλώσσα Χειρισμού Δεδομένων (Data Manipulation Language, DML) που περιέχει τις εντολές ανάκλησης των δεδομένων και τις εντολές ενημέρωσης της ΒΔ οι οποίες αφορούν την εισαγωγή, διαγραφή και ενημέρωση των πλειάδων στους πίνακες. Τέλος, περιέχει εντολές για τον ορισμό και την επεξεργασία συναλλαγών (transactions). 10

Τύποι δεδομένων της SQL για τα πεδία ενός πίνακα 1/2 char(n): δηλώνει ένα αλφαριθμητικό (string) με σταθερό μήκος από n χαρακτήρες. varchar(n): δηλώνει ένα αλφαριθμητικό με μεταβλητό μήκος, με μέγιστο αριθμό χαρακτήρων η. int: δηλώνει ακέραιο αριθμό με ακρίβεια καθορισμένη από το σύστημα (machine-dependent). smallint: δηλώνει ένα μικρό ακέραιο αριθμό με ακρίβεια καθορισμένη από το σύστημα. Numeric(p,d): δηλώνει αριθμό με p συνολικά ψηφία, από τα οποία d είναι δεκαδικά. Για παράδειγμα, η δήλωση numeric(4,2) είναι έγκυρη για τον αριθμό 24.18 αλλά όχι για τον 365.11888. 11

Τύποι δεδομένων της SQL για τα πεδία ενός πίνακα 2/2 real, double precision: δηλώνουν έναν αριθμό κινητής υποδιαστολής, απλής και διπλής ακρίβειας αντίστοιχα. Η ακρίβεια είναι καθορισμένη από το σύστημα. float(n): δηλώνει έναν αριθμό κινητής υποδιαστολής με ακρίβεια n ψηφίων. date: δηλώνει την ημερομηνία που περιέχει το έτος (4 ψηφία), το μήνα και την ημέρα. time: δηλώνει το χρόνο και περιέχει την ώρα, τα λεπτά και τα δευτερόλεπτα. 12

Τύποι δεδομένων της SQL 1/2 Η ακρίβεια ορισμένων τύπων είναι καθορισμένη από το σύστημα, διότι αυτή εξαρτάται από το αν το σύστημα είναι των32 ή των 64 bit, κάτι που μεταβάλει τη μέγιστη δυνατή τιμή των τύπων. Σύγκριση και πράξη μεταξύ τιμών επιτρέπεται, μόνο αν αυτές ανήκουν σε συμβατούς τύπους. Ειδικότερα, για τους αριθμητικούς τύπους γίνεται αυτόματα μετατροπή (casting). Για παράδειγμα, κατά την πρόσθεση ενός ακέραιου και ενός πραγματικού αριθμού κινητής υποδιαστολής ο ακέραιος μετατρέπεται σε πραγματικό και το αποτέλεσμα είναι πραγματικός αριθμός. Η διαδικασία της μετατροπής χρησιμοποιείται και από τις γλώσσες προγραμματισμού. 13

Τύποι δεδομένων της SQL 2/2 Η τιμή null ανήκει σε όλα τα προηγούμενα πεδία τιμών. Όμως, σε ορισμένες περιπτώσεις δεν έχει νόημα μία τιμή null για ένα πεδίο. Για παράδειγμα, έστω ότι κατά την εισαγωγή των στοιχείων ενός σχολείου δίνεται η τιμή null στο πεδίο ΌνομαΣχολείου'. Αυτό στις περισσότερες περιπτώσεις δεν είναι επιθυμητό. Για το λόγο αυτό, η SQL περιέχει τον όρο not null για τη ρητή δήλωση ότι σε ένα πεδίο δεν επιτρέπεται η εισαγωγή της null τιμής. 14

Γλώσσα Ορισμού Δεδομένων (Data Definition Language, DDL) Η γλώσσα ορισμού δεδομένων περιέχει τις εντολές που αφορούν τη δημιουργία της βάσης και την τροποποίησή της. Βέβαια, η αρχική δημιουργία της βάσης γίνεται συνήθως με εντολή εκτός SQL και έχει ιδιαίτερα χαρακτηριστικά για κάθε Σύστημα διαχείρησης βάσης δεδομένων (ΣΔΒΔ). Μετά την αρχική δημιουργία της ΒΔ πρέπει να συνεχίζουμε, όπως είναι φυσικό, με τη δημιουργία των πινάκων και των συνδέσεών τους που συνιστούν το σχήμα της βάσης στο φυσικό επίπεδο. Όλα πλέον τα ΣΔΒΔ προσφέρουν ισχυρά εργαλεία στο γραφικό τους περιβάλλον για αυτή την εργασία. Όμως, είναι πολύ σημαντικό και πολύ χρήσιμο στον προγραμματιστή να γνωρίζει πώς μπορεί να δημιουργήσει το σχήμα μιας βάσης με τη SQL. 15

Δημιουργία πίνακα 1/5 Το σχήμα της σχεσιακής βάσης ορίζεται από τους πίνακες που περιέχει. Η δημιουργία ενός πίνακα γίνεται με την εντολή create table. Για παράδειγμα: Η εντολή της SQL για τη δημιουργία του πίνακα ΣΧΟΛΕΙΟ είναι: 16

Δημιουργία πίνακα 2/5 Μέσα σε παρενθέσεις δίνεται η λίστα με τα πεδία του πίνακα και τα πεδία τιμών τους, χωρισμένα με κόμμα. Όπου είναι απαραίτητο, υπάρχει η δήλωση not null. Ο πίνακας ΣΧΟΛΕΙΟ έχει για κύριο κλειδί (primary key) το πεδίο ΚωδΣχολείου. Αν το κύριο κλειδί είναι σύνθετο, τότε αυτά δηλώνονται μέσα στην παρένθεση, χωρισμένα με κόμμα. Οι τιμές του κύριου κλειδιού σε κάθε πλειάδα δεν πρέπει να είναι null και πρέπει να είναι μοναδικές. 17

Δημιουργία πίνακα 3/5 Όταν εισάγεται μία νέα τιμή σε μία πλειάδα στο πεδίο (ή σε συνδυασμό πεδίων) που είναι κύριο κλειδί, αν υπάρχει άλλη πλειάδα με την ίδια τιμή σ' αυτό το πεδίο ή αν η τιμή που θα εισαχθεί είναι η null, τότε το σύστημα προειδοποιεί με μήνυμα λάθους. Αν και η δήλωση ενός πεδίου (ή συνδυασμού πεδίων) ως κύριου κλειδιού με τον όρο primary key υποδηλώνει αυτόματα ότι στο πεδίο αυτό δεν επιτρέπεται η εισαγωγή της τιμής null, ο όρος not null χρησιμοποιείται για να δηλώσει ρητά αυτή την ιδιότητα του πεδίου. 18

Δημιουργία πίνακα 4/5 Ο όρος check χρησιμοποιείται για να δηλώσει μία συνθήκη για τις τιμές ενός πεδίου. Στο προηγούμενο παράδειγμα χρησιμοποιήθηκε για να ελεγχθεί ότι οι τιμές του πεδίου 'ΚωδΣχολείου' είναι μεγαλύτερες από μία προκαθορισμένη τιμή. Ο έλεγχος γίνεται κάθε φορά που εισάγεται ή μεταβάλλεται η τιμή του αντίστοιχου πεδίου σε μία πλειάδα. 19

Δημιουργία πίνακα 5/5 Ένα άλλο παράδειγμα χρήσης του όρου check, που συναντάται συχνά στην πράξη, είναι κατά τον έλεγχο μίας τιμής για το αν ανήκει σε μία προεπιλεγμένη λίστα τιμών. Έστω ότι τα σχολεία που θα περιέχονται στον πίνακα ΣΧΟΛΕΙΟ θα ανήκουν σε μία από τις δύο Δ/νσεις Β/θμιας Εκπαίδευσης της Θεσ/νίκης. Σ' αυτή την περίπτωση, το πεδίο 'ΔνσηΒθμιας' θα πρέπει να είναι αλφαριθμητικό που να μπορεί να πάρει τις τιμές Ά'Θεσ/νίκης', ή 'Β'Θεσ/νίκης'. Αυτός ο έλεγχος γίνεται ως εξής: check (ΟνομΒθμιας in ('Α'Θεσ/νίκης', 'Β'Θεσ/νίκης')). 20

Τροποποίηση πίνακα Για την προσθήκη ή διαγραφή πεδίων από έναν πίνακα υπάρχει η εντολή alter table. Για την προσθήκη ενός πεδίου 'Νομός' στον πίνακα ΣΧΟΛΕΙΟ η εντολή SQL είναι: Alter table ΣΧΟΛΕΙΟ add (Νομός char(50)); Οι τιμές του πεδίου 'Νομός' είναι αρχικά null για όλες τις πλειάδες. Η αντίστοιχη εντολή για τη διαγραφή του πεδίου Νομός είναι: Alter table ΣΧΟΛΕΙΟ drop Νομός; 21

Διαγραφή πίνακα 1/2 Για τη διαγραφή ενός πίνακα από τη βάση δεδομένων υπάρχει η εντολή drop table. Η διαγραφή του πίνακα ΣΧΟΛΕΙΟ γίνεται ως εξής: Drop table ΣΧΟΛΕΙΟ; 22

Διαγραφή πίνακα 2/2 Είναι σημαντικό να σημειωθεί ότι η εντολή αυτή διαγράφει όλες τις πλειάδες του πίνακα αλλά και τον ίδιο τον πίνακα. Έτσι, στη συνέχεια δεν είναι δυνατή η αναφορά στο συγκεκριμένο πίνακα, για παράδειγμα, στην εισαγωγή πλειάδων. Αντιθέτως, η εντολή delete from ΣΧΟΛΕΙΟ, που θα αναφερθεί αργότερα, θα διαγράψει όλες τις πλειάδες αλλά όχι τον πίνακα. 23

Ακεραιότητα αναφορών Ακεραιότητα αναφορών είναι η ιδιότητα βάσει της οποίας οι τιμές που εμφανίζονται για ορισμένα πεδία σε έναν πίνακα, εμφανίζονται και σε αντίστοιχα πεδία σε άλλο πίνακα. 24

Ακεραιότητα αναφορών 1/14 Για παράδειγμα, δίνονται οι πίνακες ΤΑΞΗ και ΜΟΥΣΕΙΟ και η μεταξύ τους συσχέτιση η οποία υλοποιείται με τον πίνακα ΕΠΙΣΚΕΨΗ. Το κύριο κλειδί του πίνακα ΤΑΞΗ είναι ο συνδυασμός των πεδίων 'ΚωδΣχολείου, ΟνομΤάξης, ΣχολΕτος', ενώ το κύριο κλειδί του πίνακα ΜΟΥΣΕΙΟ είναι το πεδίο ΌνομΜουσείου'. Ο πίνακας ΕΠΙΣΚΕΨΗ έχει και αυτός τα πεδία 'ΚωδΣχολείου, ΟνομΤάξης, ΣχολΈτος, ΟνομΜουσείου' τα οποία υλοποιούν τη συσχέτιση μεταξύ των δύο πινάκων ΤΑΞΗ και ΜΟΥΣΕΙΟ. Ο πίνακας ΕΠΙΣΚΕΨΗ έχει και ένα επιπλέον πεδίο: ΗμερομΕπίσκεψης. 25

Ακεραιότητα αναφορών 2/14 Σχήμα 2. Ακεραιότητα αναφορών 2/14, πηγή: Διδάσκων (2015). 26

Ακεραιότητα αναφορών 3/14 Κατά τη διαγραφή μιας πλειάδας από τον πίνακα ΜΟΥΣΕΙΟ διαγράφεται και η τιμή του πεδίου ΟνομΜουσείου από την αντίστοιχη πλειάδα. Όμως, ο πίνακας ΕΠΙΣΚΕΨΗ θα συνεχίσει να περιέχει τη συγκεκριμένη τιμή για το όνομα μουσείου που διαγράφηκε από τον πίνακα ΜΟΥΣΕΙΟ (δηλαδή συνεχίζει να υπάρχει μόνο στον πίνακα ΕΠΙΣΚΕΨΗ). 27

Ακεραιότητα αναφορών 4/14 Επομένως, για τις αντίστοιχες επισκέψεις δε θα αντιστοιχεί κανένα μουσείο. Η ίδια κατάσταση προκύπτει και μετά από μεταβολή της τιμής του πεδίου ΌνομΜουσείου' σε κάποια πλειάδα του πίνακα ΜΟΥΣΕΙΟ. Η νέα τιμή δε θα υπάρχει στο αντίστοιχο πεδίο του πίνακα ΕΠΙΣΚΕΨΗ. Αυτή η κατάσταση στην οποία περιέρχεται η βάση δεδομένων δεν είναι επιθυμητή, επειδή αφήνει εκκρεμή και μη έγκυρα δεδομένα σε ορισμένους πίνακες μετά από διαγραφή πλειάδων από άλλες. 28

Ακεραιότητα αναφορών 5/14 Για να αποφεύγουμε την προηγούμενη κατάσταση, χρησιμοποιούμε την έννοια του ξένου κλειδιού. Έτσι, στον πίνακα ΕΠΙΣΚΕΨΗ το πεδίο ΌνομΜουσείου' είναι ξένο κλειδί και αναφέρεται στο αντίστοιχο πεδίο στον πίνακα ΜΟΥΣΕΙΟ, που είναι κύριο κλειδί. Επίσης, ο συνδυασμός πεδίων 'ΚωδΣχολείου, ΟνομΤάξης ΣχολΕτος' του πίνακα ΕΠΙΣΚΕΨΗ είναι ξένο κλειδί που αναφέρεται στο αντίστοιχο κύριο κλειδί του πίνακα ΤΑΞΗ. Προβλήματα ακεραιότητας μετά από διαγραφή και ενημέρωση πλειάδων παρατηρούνται μόνο μετά από διαγραφή ή ενημέρωση πεδίων στα οποία αναφέρονται τα ξένα κλειδιά. Επομένως, με τη δήλωση της αναφοράς, το σύστημα διαχείρισης της βάσης δεδομένων μπορεί να αντιμετωπίσει το πρόβλημα αποτρέποντας με αυτό τον τρόπο την παραβίαση της ακεραιότητας. 29

Ακεραιότητα αναφορών 6/14 Η δήλωση ενός ξένου κλειδιού και της αναφοράς του γίνεται κατά τη δημιουργία του πίνακα με τους όρους: foreign key και references 30

Ακεραιότητα αναφορών 7/14 Για τον πίνακα ΕΠΙΣΚΕΨΗ του προηγούμενου παραδείγματος είναι: 31

Ακεραιότητα αναφορών 8/14 Όπως φαίνεται στο παράδειγμα, ο όρος foreign key περιέχει το πεδίο που αποτελεί το ξένο κλειδί και ο όρος references τον πίνακα στον οποίο αυτό αναφέρεται. Κατά την παραβίαση της ακεραιότητας αναφοράς μεταξύ δύο πινάκων, το σύστημα εξ ορισμού αποτρέπει την ενέργεια. Επομένως, μία διαγραφή πλειάδας από τον πίνακα ΜΟΥΣΕΙΟ δεν γίνεται δυνατή, διότι παραβιάζει την ακεραιότητα αναφοράς του πίνακα ΕΠΙΣΚΕΨΗ. 32

Ακεραιότητα αναφορών 9/14 Σε αρκετές περιπτώσεις δημιουργείται πρακτικά η ανάγκη να μας δίνεται η δυνατότητα διαγραφής μίας πλειάδας από τον πίνακα ΜΟΥΣΕΙΟ, ή να είναι δυνατή η αλλαγή στην ονομασία ενός μουσείου. Αυτό μπορεί να γίνει, αν μετά από μία ενέργεια διαγραφής ή ενημέρωσης σε κάποιο αρχικό πίνακα γίνει το αντίστοιχο σε όλους τους πίνακες που έχουν ξένα κλειδιά τα οποία αναφέρονται στον αρχικό αυτόν πίνακα. Αυτός ο τρόπος χειρισμού δηλώνεται με τους όρους on delete cascade και on update cascade, όπως φαίνεται στο παρακάτω παράδειγμα. 33

Ακεραιότητα αναφορών 10/14 34

Ακεραιότητα αναφορών 11/14 Η διαγραφή μίας πλειάδας από τον πίνακα ΜΟΥΣΕΙΟ θα έχει ως αποτέλεσμα τη διαγραφή και από τον πίνακα ΕΠΙΣΚΕΨΗ των πλειάδων με την αντίστοιχη τιμή στο πεδίο Ονομ_Μουσείου, δηλαδή τη διαγραφή των αντίστοιχων επισκέψεων για τις οποίες δεν υπάρχει μουσείο. 35

Ακεραιότητα αναφορών 12/14 Σχήμα 3. Ακεραιότητα αναφορών 12/14, πηγή: Διδάσκων (2015). 36

Ακεραιότητα αναφορών 13/14 Εκτός από το γεγονός ότι η ενέργεια που γίνεται σε έναν πίνακα μεταβιβάζεται και σε όλους τους πίνακες που αναφέρονται σ' αυτόν, ο χειρισμός μίας παραβίασης ακεραιότητας μπορεί να γίνει και με άλλους τρόπους, όπως με το να τεθεί η τιμή του πεδίου του οποίου παραβιάζεται η ακεραιότητα ίση με null ή ίση με μία εξ ορισμού τιμή. 37

Ακεραιότητα αναφορών 14/14 Στο προηγούμενο παράδειγμα η διαγραφή ενός μουσείου θα μπορούσε να έχει ως αποτέλεσμα να παραμείνουν αποθηκευμένες, στον πίνακα ΕΠΙΣΚΕΨΗ οι επισκέψεις σ' αυτό το μουσείο, αλλά το αντίστοιχο πεδίο ΌνομΜουσείου' να πάρει την τιμή null, δείχνοντας ότι δεν υπάρχει μουσείο. Ο τρόπος χειρισμού της παραβίασης της ακεραιότητας αναφοράς εξαρτάται από τη συγκεκριμένη εφαρμογή και λαμβάνεται υπόψη κατά τη δημιουργία του σχήματος της βάσης δεδομένων. 38

Όψεις 1/2 Για όλα τα προηγούμενα παραδείγματα ίσχυε η υπόθεση ότι όλοι οι πίνακες ανήκουν στο λογικό μοντέλο της βάσης δεδομένων και ότι βρίσκονται αποθηκευμένες σ' αυτή. Δηλαδή, χρησιμοποιήθηκαν πίνακες οι οποίοι δημιουργήθηκαν με την εντολή create table. Αυτοί οι πίνακες ονομάζονται βασικοί πίνακες. Για λόγους ασφάλειας των δεδομένων είναι χρήσιμη η απόκρυψη ορισμένων πεδίων από τους χρήστες. Επίσης, για λόγους διευκόλυνσης και καλύτερης κατανόησης των περιεχομένων της βάσης δεδομένων είναι επιθυμητό οι χρήστες να μπορούν να δουν τους πίνακες με βάση τα δικά τους κριτήρια. 39

Όψεις 2/2 Για την ένταξη τέτοιου είδους πινάκων στη βάση δεδομένων χρησιμοποιούνται οι όψεις. Όψη (view) είναι κάθε πίνακας της βάσης δεδομένων που δεν ανήκει στο λογικό μοντέλο (δεν δημιουργήθηκε με μία εντολή create table). Επομένως, οι όψεις προσφέρουν εναλλακτικούς τρόπους, για να βλέπουν οι χρήστες τους πίνακες μίας βάσης δεδομένων. Για το σχηματισμό μίας όψης χρησιμοποιείται η εντολή. create view as 40

Όψεις 1/3 Είναι επιθυμητό το πεδίο 'ΜαθητέςΤάξης' στον πίνακα ΤΑΞΗ να είναι ορατό μόνο από τον υπεύθυνο καθηγητή της τάξης. Ένας πίνακας που δεν περιέχει το πεδίο 'ΜαθητέςΤάξης' μπορεί να προκύψει με την πράξη της προβολής (projection) στον πίνακα ΤΑΞΗ. Επίσης, στο διευθυντή του σχολείου θα είναι χρήσιμο να βλέπει έναν πίνακα που να περιέχει το μέσο όρο μαθητών ανά τάξη. Όπως θα αναφερθεί στη συνέχεια, αυτός ο πίνακας μπορεί να προκύψει ως αποτέλεσμα ενός ερωτήματος ομαδοποίησης. Για το διευθυντή του σχολείου όμως θα ήταν επιθυμητό να εμφανίζεται αυτός ο πίνακας ως βασικό μέρος της βάσης δεδομένων. 41

Όψεις 2/3 Έστω ότι θέλουμε το σχηματισμό μίας όψης με όνομα ΤΑΞΗ_V1 για την απόκρυψη του πεδίου 'Μαθητές_Τάξης' από τον πίνακα ΤΑΞΗ. Η αντίστοιχη εντολή είναι: Μετά τον όρο as δίνεται μέσα σε παρενθέσεις η εντολή SQL της οποίας ο πίνακας - αποτέλεσμα θα αποτελέσει την όψη. 42

Όψεις 3/3 Έστω ότι θέλουμε τη δημιουργία όψης με το όνομα TAΞH_V2 η οποία θα περιέχει το μέσο όρο μαθητών ανά τάξη για κάθε σχολείο. Αυτό γίνεται με την εξής εντολή (χρησιμοποιώντας την αντίστοιχη εντολή ομαδοποίησης): Create view TAΞH_V2 as ( Select ΚωδΣχολείου, avg (ΜαθητέςΤάξης) From ΤΑΞΗ;) 43

Όψεις (διαγραφή) Τέλος, μια όψη διαγράφεται με την εντολή drop view. Η διαγραφή της όψης TAΞH_V2 γίνεται με την εντολή: Drop view TAΞH_V2; Με τις όψεις παριστάνεται το εξωτερικό επίπεδο της βάσης δεδομένων. 44

Βιβλιογραφία Ταμπακάς, Β.Τ. (2009) Εισαγωγή στις Βάσεις Δεδομένων, Εκδότης ΒΑΣΙΛΕΙΟΣ ΤΑΜΠΑΚΑΣ, ISBN: 978-960-931217-2. Βάσεις δεδομένων. Ζαχαρής Κωνσταντίνος, Κουνιάκης Χριστόφορος, Οικονόμου Θεόδωρος, Κασιμάτης Νικόλαος, Μανωλόπουλος, Ιωάννης. Αθήνα: ΙΤΥΕ Διόφαντος, Τομέας Πληροφορικής - Δικτύων Η/Υ. Διαθέσιμο διαδικτυακά: http://ebooks.edu.gr/new/bookspdf.php?course=dsepal-b140. 45

Τέλος Ενότητας

Σημείωμα Αναφοράς Copyright Ανώτατη Εκκλησιαστική Ακαδημία Θεσσαλονίκης, Δημοσθένης Πασχαλίδης. «Βάσεις Δεδομένων». Έκδοση: 1.0. Θεσσαλονίκη 2015. 47

Σημείωμα Αδειοδότησης Το παρόν υλικό διατίθεται με τους όρους της άδειας χρήσης Creative Commons Αναφορά, Μη Εμπορική Χρήση Παρόμοια Διανομή 4.0 [1] ή μεταγενέστερη, Διεθνής Έκδοση. Εξαιρούνται τα αυτοτελή έργα τρίτων π.χ. φωτογραφίες, διαγράμματα κ.λ.π., τα οποία εμπεριέχονται σε αυτό και τα οποία αναφέρονται μαζί με τους όρους χρήσης τους στο «Σημείωμα Χρήσης Έργων Τρίτων». [1] http://creativecommons.org/licenses/by-nc-sa/4.0/ Ως Μη Εμπορική ορίζεται η χρήση: που δεν περιλαμβάνει άμεσο ή έμμεσο οικονομικό όφελος από την χρήση του έργου, για το διανομέα του έργου και αδειοδόχο. που δεν περιλαμβάνει οικονομική συναλλαγή ως προϋπόθεση για τη χρήση ή πρόσβαση στο έργο. που δεν προσπορίζει στο διανομέα του έργου και αδειοδόχο έμμεσο οικονομικό όφελος (π.χ. διαφημίσεις) από την προβολή του έργου σε διαδικτυακό τόπο. Ο δικαιούχος μπορεί να παρέχει στον αδειοδόχο ξεχωριστή άδεια να χρησιμοποιεί το έργο για εμπορική χρήση, εφόσον αυτό του ζητηθεί. 48

Διατήρηση Σημειωμάτων Οποιαδήποτε αναπαραγωγή ή διασκευή του υλικού θα πρέπει να συμπεριλαμβάνει: το Σημείωμα Αναφοράς. το Σημείωμα Αδειοδότησης. τη δήλωση Διατήρησης Σημειωμάτων. το Σημείωμα Χρήσης Έργων Τρίτων (εφόσον υπάρχει). μαζί με τους συνοδευόμενους υπερσυνδέσμους. 49