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

Σχετικά έγγραφα
ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - ΣΧΕΣΙΑΚΗ ΑΛΓΕΒΡΑ

ΣΧΕΣΙΑΚΕΣ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ - Από το ΔΟΣ στη Σχεσιακή Β.Δ.

ΔΙΑΓΡΑΜΜΑ ΟΝΤΟΤΗΤΩΝ - ΣΥΣΧΕΤΙΣΕΩΝ

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

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

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

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

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

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

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

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

Εισαγωγή στις Βάσεις Δεδομζνων II

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

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

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

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

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

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΕΙΣΑΓΩΓΗ

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

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

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

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

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

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

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

Βάσεις Δεδομένων Ι 8. Ερωτήματα (B) Τμήμα Διοίκησης Επιχειρήσεων (Μεσολόγγι) ΤΕΙ Δυτικής Ελλάδας

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

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


ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΡΗΤΗΣ. 1 ο ΣΧΟΛΕΙΟ ΚΩΔΙΚΑ «Βασικά Θέματα Προγραμματισμού στην Ανάπτυξη Δυναμικών Διαδικτυακών Εφαρμογών» (Part 3) Ουρανία Σμυρνάκη

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

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

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

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

1 / 97

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

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

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

SQL Data Manipulation Language

DELETE, UPDATE, INSERT.

1 / 87

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

DELETE, UPDATE, INSERT

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

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

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

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

Βάσεις Δεδομένων. Σχεσιακό Μοντέλο Δεδομένων. Βασίλειος Βεσκούκης Ορισμός Βάσης Δεδομένων Δομή Περιορισμοί

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

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

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

Το σχεσιακό μοντέλο βάσεων δεδομένων


Ακεραιότητα και Ασφάλεια Μέρος 1 Σχεδιασμός Βάσεων Δεδομένων

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

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

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

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

DISTINCT, LIKE, NULL, AND, OR, BETWEEN

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

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

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

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

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

ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ

Σύβακας Σταύρος ΠΕ19,MSc. IT ΣΥΒΑΚΑΣ ΣΤΑΥΡΟΣ ΕΡΩΤΗΜΑΤΑ

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

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

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

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

Βασικοί τύποι δεδομένων (Pascal) ΕΠΑ.Λ Αλίμου Γ Πληροφορική Δομημένος Προγραμματισμός (Ε) Σχολ. Ετος Κων/νος Φλώρος

ΣΠΟΥΔΑΣΤΕΣ ΑριθμόςΜητρώου Ονομα Επίθετο Ηλικία

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

Σχεδίαση και Χρήση Βάσεων Δεδομένων. Χρήση του DBDesigner. Γιώργος Πυρουνάκης - forky@di.uoa.gr

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

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

Postgress ΣΤΟΧΟΣ ΣΧΕΤΙΚΟ ΕΚΠΑΙ ΕΥΤΙΚΟ ΥΛΙΚΟ. ΠΕΡΙΒΑΛΛΟΝ ΓΙΑ ΕΞΑΣΚΗΣΗ pgadmin ΥΠΟΒΑΘΡΟ. Συναρτήσεις στην PostgreSQL. 1. Γενικά

Εργαστήριο 10o. Συγκεντρωτικά Ερωτήματα Ερωτήματα Διασταύρωσης Ερωτήματα Ενεργειών. Ευάγγελος Γ. Καραπιδάκης

ΣΧΕΣΙΑΚΟ ΜΟΝΤΕΛΟ Relational Model. SQL Μαθ. #11

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

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

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

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

Πατώντας το πλήκτρο Enter ή το κουμπί Enter από την γραμμή τύπων εκτελείται η μαθηματική πράξη και παρουσιάζει το αποτέλεσμα του κελιού.

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

Βάσεις Δεδομένων. Τ.Ε.Ι. Ιονίων Νήσων Σχολή Διοίκησης και Οικονομίας - Λευκάδα

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

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

Query-by-Example (QBE)

Εργαστήριο Βάσεων Δεδομένων

TEC610 Δυναμικές Εφαρμογές Διαδικτύου (ΣΤ εξάμηνο)

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

Βάσεις Δεδομένων ΗγλώσσαSQL (Structured Query Language)

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

Κεφάλαιο 9 Συναθροίσεις

ΟΝΟΜΑΤΕΠΩΝΥΜΟ : Αντικείμενα: Βάσεις δεδομένων, σχέσεις μεταξύ πινάκων, ερωτήματα, φόρμες και αναφορές.

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

Transcript:

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

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

Προτεινόμενα Βιβλία 3 Σχεσιακές βάσεις δεδομένων, 2η Έκδοση, Κεχρής Ευάγγελος, Εκδόσεις Κριτική Συστήματα Βάσεων Δεδομένων 6η Έκδοση, Abraham Silberschatz,Henry F. Korth,S. Sudarshan Συστήματα Διαχείρισης Βάσεων Δεδομένων, 3η Έκδοση, Ramakrishnan Raghu, Gehrke Joahannes Θεμελιώδεις αρχές συστημάτων βάσεων δεδομένων, Elmasri Ramez,Navathe Shamkant B. ΕΙΣΑΓΩΓΗ ΣΤΙΣ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ, ΤΑΜΠΑΚΑΣ ΒΑΣΙΛΕΙΟΣ ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ ΚΑΙ SQL: ΜΙΑ ΠΡΑΚΤΙΚΗ ΠΡΟΣΕΓΓΙΣΗ, ΑΘΑΝΑΣΙΟΣ ΣΤΑΥΡΑΚΟΥΔΗΣ ΣΥΣΤΗΜΑΤΑ ΒΑΣΕΩΝ ΔΕΔΟΜΕΝΩΝ (ΣΕ ΕΝΑΝ ΤΟΜΟ), GARCIA- MOLINA, ULLMAN, WIDOM Βάσεις Δεδομένων: Σύγχρονη Διαχείριση, 11 Έκδοση, Hoffer J., Ramesh V., Topi H., Μιχαήλ Βαΐτης - Ευαγγελία Καβακλή (επιμέλεια)

Περιεχόμενο Μαθήματος 4 Τι είναι η SQL Ιστορικό της SQL Εντολές της SQL Δημιουργία πίνακα Παραβίαση της ακεραιότητας αναφοράς Καταστροφή πίνακα Εισαγωγή δεδομένων με την SQL Διαγραφή δεδομένων με την SQL

Η γλώσσα SQL 5 Υπάρχει μία κοινή γλώσσα για όλα τα σχεσιακά ΣΔΒΔ: η γλώσσα SQL Κάθε σχεσιακό ΣΔΒΔ έχει τη δυνατότητα να δεχθεί και να εκτελέσει εντολές της γλώσσας SQL H SQL χρησιμοποιείται σε οποιοδήποτε σχεσιακό σύστημα διαχείρισης βάσεων δεδομένων

Σύντομο ιστορικό της SQL 6 Η γλώσσα SQL (Structured Query Language Γλώσσα Δομημένων Ερωτημάτων) αναπτύχθηκε από το 1974 από τον D. Chamberlin, ο οποίος εργαζόταν στην IBM και αρχικά χρησιμοποιήθηκε σε ΣΔΒΔ της IBM. Στα τέλη της δεκαετίας του 70, η γνωστή εταιρεία ORACLE δημιούργησε το δικό της σχεσιακό ΣΔΒΔ, υιοθέτησε την SQL. Σύντομα ακολούθησαν και άλλες εταιρείες λογισμικού που ανέπτυξαν τα δικά τους συστήματα τα οποία υιοθέτησαν την SQL.

Σύντομο ιστορικό της SQL 7 Η ευρεία διάδοση της SQL οφείλεται στο γεγονός ότι τόσο το Αμερικανικό Ινστιτούτο Τυποποίησης (American National Standards Institute ANSI) όσο και ο Παγκόσμιος Οργανισμός Τυποποίησης (International Organisation for Standardisation ISO) όρισαν την SQL ως την κοινή γλώσσα των σχεσιακών ΣΔΒΔ.

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

Εντολές SQL από χρήστη και ενσωματωμένες σε πρόγραμμα 9 Οι εντολές της γλώσσας SQL μπορεί να πληκτρολογηθούν από το χρήστη και να υποβληθούν προς άμεση εκτέλεση στο σχεσιακό ΣΔΒΔ. Στην περίπτωση αυτή, τα αποτελέσματα των εντολών SQL εμφανίζονται στην οθόνη του χρήστη. Η SQL είναι μία γλώσσα για τη διαχείριση δεδομένων δεν είναι μία πλήρης γλώσσα προγραμματισμού όπως η C++ ή η Java Πολλές φορές είναι απαραίτητο η SQL να ενσωματωθεί μέσα στον κώδικα μίας άλλης γλώσσας προγραμματισμού. Τότε, η SQL αναφέρεται ως ενσωματωμένη SQL (embedded SQL). Στην περίπτωση αυτή, τα αποτελέσματα των SQL εντολών γνωστοποιούνται στο πρόγραμμα που είναι γραμμένο στη γενική γλώσσα προγραμματισμού, το οποίο και τα χειρίζεται.

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

Δημιουργία πίνακα στην πιο απλή μορφή 11 Με την πιο απλή μορφή της εντολής CREATE TABLE: δημιουργείται ένας πίνακας δίνεται όνομα στον πίνακα αυτόν δηλώνονται τα ονόματα και οι τύποι δεδομένων των στηλών που περιέχει ο πίνακας

Παράδειγμα δημιουργίας πίνακα στην απλή μορφή 12 ΟΔΗΓΟΣ ΑρΔιπλώματος Επώνυμο Όνομα ΗμερΠρόσληψης Για τη δημιουργία του πίνακα ΟΔΗΓΟΣ πληκτρολογούμε την εντολή: CREATE TABLE ΟΔΗΓΟΣ ( ΑρΔιπλώματος INTEGER NOT NULL, Επώνυμο CHAR (50), Όνομα CHAR (50), ΗμερΠρόσληψης DATE );

Επεξήγηση εντολής δημιουργίας πίνακα στην απλή μορφή 13 Γραμμή SQL εντολής Ερμηνεία της γραμμής SQL CREATE TABLE ΟΔΗΓΟΣ Δημιούργησε έναν πίνακα και ονόμασέ τον ΟΔΗΓΟΣ ( Στο σημείο αυτό ξεκινάει η περιγραφή του πίνακα ΑρΔιπλώματος INTEGER NOT Τη στήλη ΑρΔιπλώματος που NULL, παίρνει ακέραιες τιμές και η οποία δεν μπορεί να πάρει την τιμή NULL Επώνυμο CHAR (50), Τη στήλη Επώνυμο που παίρνει ως τιμές 50 χαρακτήρες Όνομα CHAR (50), Τη στήλη Όνομα που παίρνει ως τιμές 50 χαρακτήρες ΗμερΠρόσληψης DATE Τη στήλη ΗμερΠρόσληψης που παίρνει ως τιμή μία ημερομηνία. ) Στο σημείο αυτό ολοκληρώνεται η περιγραφή του πίνακα

Δημιουργία πίνακα με ταυτόχρονη δήλωση του πρωτεύοντος κλειδιού 14 Μία στήλη ενός πίνακα που αποτελεί το (απλό) πρωτεύον κλειδί του πίνακα δηλώνεται μέσα στην παρένθεση που ακολουθεί τις λέξεις PRIMARY KEY.

Παράδειγμα δημιουργίας πίνακα στην απλή μορφή 15 ΟΔΗΓΟΣ ΑρΔιπλώματος Επώνυμο Όνομα ΗμερΠρόσληψης Για τη δημιουργία του πίνακα ΟΔΗΓΟΣ με ταυτόχρονη δήλωση του πρωτεύοντος κλειδιού: CREATE TABLE ΟΔΗΓΟΣ ( ) ΑρΔιπλώματος INTEGER NOT NULL, Επώνυμο CHAR (50), Όνομα CHAR (50), ΗμερΠρόσληψης DATE, PRIMARY KEY (ΑρΔιπλώματος)

Παράδειγμα δημιουργίας πίνακα στην απλή μορφή 16 ΑΥΤΟΚΙΝΗΤΟ ΑρΚυκλοφορίας ΩφέλιμοΦορτίο ΗμερομηνίαΑγοράς Για τη δημιουργία του πίνακα ΑΥΤΟΚΙΝΗΤΟ με ταυτόχρονη δήλωση του πρωτεύοντος κλειδιού : CREATE TABLE ΑΥΤΟΚΙΝΗΤΟ ( ) ΑρΚυκλοφορίας CHAR (7) NOT NULL, ΩφέλιμοΦορτίο DECIMAL (3,1), ΗμερομηνίαΑγοράς DATE, PRIMARY KEY (ΑρΚυκλοφορίας)

Δήλωση σύνθετου πρωτεύοντος κλειδιού 17 OΔΗΓOI_ΑΥΤOΚΙΝΗΤΩΝ ΑρΔιπλώματος ΑρΚυκλοφορίας Ημερομηνία Για να δημιουργηθεί αυτός ο πίνακας με ταυτόχρονη δήλωση του σύνθετου πρωτεύοντος κλειδιού του, το οποίο αποτελείται από τις στήλες ΑρΔιπλώματος και ΑρΚυκλοφορίας, πρέπει να δοθεί η εντολή: CREATE TABLE OΔΗΓOI_ΑΥΤOΚΙΝΗΤΩΝ ( ) ΑρΔιπλώματος INTEGER NOT NULL, ΑρΚυκλοφορίας CHAR (7) NOT NULL, Ημερομηνία DATE, PRIMARY KEY (ΑρΔιπλώματος,ΑρΚυκλοφορίας)

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

Παράδειγμα δημιουργίας πίνακα με δήλωση των ξένων κλειδιών ΟΔΗΓΟΣ ΑρΔιπλώματος Επώνυμο Όνομα ΗμερΠρόσληψης 19 ΟΔΗΓΟΙ_ΑΥΤΟΚΙΝΗΤΩΝ ΑρΔιπλώμ ΑρΚυκλοφ Ημερομηνία ΑΥΤΟΚΙΝΗΤΟ ΑρΚυκλοφορίας ΩφέλιμοΦορτίο ΗμερομηνίαΑγοράς Θα δημιουργηθεί ο πίνακας ΟΔΗΓΟΙ_ΑΥΤΟΚΙΝΗΤΩΝ με το πρωτεύον κλειδί του και ταυτόχρονα θα δηλωθεί: Ο ΑριθμόςΔιπλώμ του πίνακα ΟΔΗΓΟΙ_ΑΥΤΟΚΙΝΗΤΩΝ ως ξένο κλειδί που αναφέρεται στη στήλη ΑρΔιπλώματος του πίνακα ΟΔΗΓΟΣ Ο ΑρΚυκλοφ του πίνακα ΟΔΗΓΟΙ_ ΑΥΤΟΚΙΝΗΤΩΝ ως ξένο κλειδί που αναφέρεται στη στήλη ΑρΚυκλοφορίας του πίνακα ΑΥΤΟΚΙΝΗΤΟ

Παράδειγμα δημιουργίας πίνακα με δήλωση των ξένων κλειδιών του 20 ΟΔΗΓΟΣ ΑρΔιπλώματος Επώνυμο Όνομα ΗμερΠρόσληψης ΑΥΤΟΚΙΝΗΤΟ ΑρΚυκλοφορίας ΩφέλιμοΦορτίο ΗμερομηνίαΑγοράς CREATE TABLE ΟΔΗΓΟΙ_ΑΥΤΟΚΙΝΗΤΩΝ ( ΑρΔιπλώμ INTEGER NOT NULL, ΑρΚυκλοφ CHAR (7) NOT NULL, Ημερομηνία DATE, PRIMARY KEY (ΑρΔιπλώμ, ΑρΚυκλοφ), FOREIGN KEY (ΑρΔιπλώμ) REFERENCES ΟΔΗΓΟΣ (ΑρΔιπλώματος), FOREIGN KEY (ΑρΚυκλοφ) REFERENCES ΑΥΤΟΚΙΝΗΤΟ (ΑρΚυκλοφορίας) ) ΟΔΗΓΟΙ_ΑΥΤΟΚΙΝΗΤΩΝ ΑρΔιπλώμ ΑρΚυκλοφ Ημερομηνία

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

Μετακύλιση της ενέργειας 22 Σύμφωνα με την προσέγγιση αυτή: Το ΣΔΒΔ εκτελεί την πράξη που παραβιάζει την ακεραιότητα αναφοράς Και αυτόματα εκτελεί αντίστοιχες πράξεις σε άλλους πίνακες της βάσης δεδομένων ώστε να διατηρηθεί η ακεραιότητα αναφοράς.

Παράδειγμα μετακύλισης της ενέργειας σε περίπτωση διαγραφής ΟΔΗΓΟΣ ΑρΔιπλώματος Επώνυμο Όνομα Ημερ Πρόσληψης 10001 Αρίστου Ανέστης 7/10/2010 20002 Βασίλης Βασιλείου 10/9/2010 ΑΥΤΟΚΙΝΗΤΟ ΑρΚυκλοφορίας ΩφέλιμοΦορτίο ΗμερομηνίαΑγοράς ΑΑΑ 1234 1,5 3/6/2009 ΒΒΒ 1234 3,2 5/7/2010 ΟΔΗΓΟΙ_ΑΥΤΟΚΙΝΗΤΩΝ ΑρΔιπλώμ ΑρΚυκλο φ Ημερομηνία 10001 ΑΑΑ 1234 5/5/2014 10001 ΒΒΒ 1234 6/5/2014 20002 ΑΑΑ 1234 5/5/2014 Ο χρήστης υποβάλλει εντολή διαγραφής της εγγραφής από τον πίνακα ΟΔΗΓΟΣ. Σύμφωνα με τη μετακύλιση της ενέργειας: αφού διαγραφεί η εγγραφή, αυτόματα, διαγράφεται και η αντίστοιχη εγγραφή του πίνακα ΟΔΗΓΟΙ_ΑΥΤΟΚΙΝΗΤΩΝ ώστε να διατηρηθεί η ακεραιότητα αναφοράς. 23

Παράδειγμα μετακύλισης της ενέργειας σε περίπτωση τροποποίησης 24 ΟΔΗΓΟΣ ΑρΔιπλώματος Επώνυμο Όνομα ΟΔΗΓΟΙ_ΑΥΤΟΚΙΝΗΤΩΝ Ημερ ΑρΔιπλώμ ΑρΚυκλο Πρόσληψης φ Ημερομηνία 10001 Αρίστου Ανέστης 7/10/2010 10001 ΑΑΑ 1234 5/5/2014 20002 Βασίλης Βασιλείου 10/9/2010 10001 ΒΒΒ 1234 6/5/2014 ΑΥΤΟΚΙΝΗΤΟ 20002 ΑΑΑ 1234 5/5/2014 ΑρΚυκλοφορίας ΩφέλιμοΦορτίο ΗμερομηνίαΑγοράς ΑΑΑ 1234 1,5 3/6/2009 ΒΒΒ 1234 3,2 5/7/2010 Ο χρήστης υποβάλλει εντολή τροποποίησης της εγγραφής και αλλάζει τον ΑρΚυκλοφορίας από ΑΑΑ 1234 στην τιμή ΑΑΑ 4444. Σύμφωνα με τη μετακύλιση ενέργειας: μετά την αλλαγή της εγγραφής, αυτόματα τροποποιούνται και οι αντίστοιχες εγγραφές και στη νέα τιμή ΑΑΑ 4444, έτσι ώστε να διατηρηθεί η ακεραιότητα αναφοράς.

2n εναλλακτική ενέργεια: καμία ενέργεια 25 Σύμφωνα με την προσέγγιση αυτή, το ΣΔΒΔ απορρίπτει την πράξη που προκάλεσε την παραβίαση της ακεραιότητας αναφοράς. Στην περίπτωση αυτή, η βάση δεδομένων δεν αλλάζει καθόλου, αφού η αιτούμενη διαγραφή ή τροποποίηση δεν εκτελείται καθόλου.

3η εναλλακτική ενέργεια: ενέργεια κενού 26 Σύμφωνα με την προσέγγιση αυτή: το ΣΔΒΔ εκτελεί την πράξη που προκάλεσε την παραβίαση της ακεραιότητας αναφοράς αυτόματα αλλάζει τις τιμές που παραβιάζουν την ακεραιότητα αναφοράς στην τιμή NULL

Δήλωση της ενέργειας σε περίπτωση παραβίασης της ακεραιότητας της αναφοράς 27 Κατά τη δημιουργία του πίνακα ΟΔΗΓΟΙ ΑΥΤΟΚΙΝΗΤΩΝ, μπορούμε να δηλώσουμε την απόρριψη της διαγραφής και τη μετακύληση της τροποποίησης ως ενέργειες που αυτόματα θα εκτελεί το ΣΔΒΔ σε περίπτωση παραβίασης της ακεραιότητας αναφοράς: CREATE TABLE ΟΔΗΓΟΙ_ΑΥΤΟΚΙΝΗΤΩΝ ( ΑρΔιπλώμ INTEGER NOT NULL, ΑρΚυκλοφ CHAR (7) NOT NULL, Ημερομηνία DATE, PRIMARY KEY (ΑρΔιπλώμ, ΑρΚυκλοφ), FOREIGN KEY (ΑρΔιπλώμ) REFERENCES ΟΔΗΓΟΣ (ΑρΔιπλώματος) ON DELETE NO ACTION ON UPDATE CASCADE, FOREIGN KEY (ΑρΚυκλοφ) REFERENCES ΑΥΤΟΚΙΝΗΤΟ (ΑρΚυκλοφορίας) ON DELETE NO ACTION ON UPDATE CASCADE )

Καταστροφή πίνακα 28 Ένας πίνακας που δημιουργήθηκε με την εντολή CREATE TABLE μπορεί να καταστραφεί (δηλαδή να διαγραφεί από τον κατάλογο του ΣΔΒΔ) με την εντολή DROP TABLE. Η εντολή DROP TABLE ΟΔΗΓΟΙ_ΑΥΤΟΚΙΝΗΤΩΝ καταστρέφει τον πίνακα ΟΔΗΓΟΙ_ΑΥΤΟΚΙΝΗΤΩΝ.

Εισαγωγή δεδομένων με την SQL 29 Η εισαγωγή δεδομένων στην SQL γίνεται με την εντολή INSERT, η οποία εισάγει σε έναν πίνακα μία ολόκληρη εγγραφή. Συντακτικό της εντολής: INSERT INTO όνομα_πίνακα VALUES (λίστα_τιμών)

30 ΟΔΗΓΟΣ ΑρΔιπλώματος Επώνυμο Όνομα Ημερ Πρόσληψης Για να εισαχθούν στον πίνακα ΟΔΗΓΟΣ οι τιμές για τον οδηγό Ανέστη Αρίστου με αριθμό διπλώματος 10001 και ημερομηνία πρόσληψης τις 7/10/2010 δίνεται η εντολή: INSERT INTO ΟΔΗΓΟΣ VALUES (100001, 'Αρίστου', 'Ανέστης', 7/10/2010 ) Μετά την εκτέλεση της εντολής αυτής ο πίνακας έχει μία γραμμή: ΟΔΗΓΟΣ ΑρΔιπλώματος Επώνυμο Όνομα Ημερ Πρόσληψης 10001 Αρίστου Ανέστης 7/10/2010

Παρατηρήσεις για την εντολή insert 31 Τα δεδομένα που θα εισαχθούν στον πίνακα να χωρίζονται μεταξύ τους με κόμμα (,). Ο αριθμός των δεδομένων που υπάρχουν μέσα στην παρένθεση της εντολής INSERT πρέπει να είναι ίδιος με τον αριθμό των στηλών του πίνακα στον οποίο θα εισαχθούν οι τιμές. Η σειρά με την οποία δίνονται τα δεδομένα θα πρέπει να αντιστοιχεί στη σειρά με την οποία ορίσθηκαν οι στήλες του πίνακα κατά στη δημιουργία του πίνακα με την εντολή CREATE TABLE. Οι τύποι των δεδομένων που εισάγονται πρέπει να συμφωνούν με τους τύπους των δεδομένων όπως ορίστηκαν κατά τη δημιουργία του πίνακα. Τα δεδομένα με τύπο δεδομένων συμβολοσειράς (δηλ. τα αυτά που δηλώθηκαν ως τύπου CHAR ή VARCHAR στην εντολή δημιουργίας πίνακα CREATE TABLE) πρέπει να περικλείονται μέσα σε απλά εισαγωγικά.

Insert και η τιμή null 32 Στην περίπτωση που η τιμή μίας στήλης δεν είναι γνωστή, μπορεί να δοθεί σε αυτήν η τιμή NULL εφόσον: η στήλη δεν είναι πρωτεύον κλειδί του πίνακα και δεν έχει οριστεί με την επιλογή NOT NULL στην εντολή CREATE TABLE. Για παράδειγμα, για να εισαχθούν στον πίνακα ΟΔΗΓΟΙ οι τιμές για τον οδηγό Δημητριάδη Δημήτριο με αριθμό διπλώματος 400004, για τον οποίο δεν γνωρίζουμε την ημερομηνία πρόσληψης, δίνεται η εντολή: INSERT INTO ΟΔΗΓΟΣ VALUES (400004, 'Δημητριάδης', 'Δημήτριος', NULL)

Διαγραφή δεδομένων με την SQL 33 Η διαγραφή των δεδομένων από έναν πίνακα γίνεται με την εντολή DELETE, η οποία έχει το παρακάτω συντακτικό: DELETE όνομα πινακα [WHERE συνθήκη] Στην απλή μορφή της η εντολή DELETE δεν περιλαμβάνει την δεύτερη γραμμή WHERE συνθήκη η οποία είναι προαιρετική. Στην μορφή αυτή η εντολή DELETE διαγράφει όλες τις εγγραφές του πίνακα. Στην σύνθετη μορφή της η εντολή περιέχει και γραμμή WHERE συνθήκη. Στην μορφή αυτή η εντολή διαγράφει μόνο τις εγγραφές του πίνακα που ικανοποιούν την συνθήκη.

Παραδείγματα διαγραφής εγγραφών 34 ΦΟΙΤΗΤΕΣ Κωδικός Όνομα Επώνυμο Οδός Αριθμός Πόλη 123 Ανέστης Αρίστου Ανθέων 53 Σέρρες 124 Βασίλης Βελισαρίου Ηρώων 20 Σέρρες 125 Γιάννης Γεωργίου Κήπων 4 Βόλος 126 Κωνσταντίνα Δημητρίου Εγνατία 123 Βόλος DELETE ΦΟΙΤΗΤΕΣ DELETE ΦΟΙΤΗΤΕΣ WHERE Κωδικός = 123 DELETE ΦΟΙΤΗΤΕΣ WHERE Πόλη = Βόλος ΦΟΙΤΗΤΕΣ Κωδικός Όνομα Επώνυμο Οδός Αριθμός Πόλη ΦΟΙΤΗΤΕΣ Κωδικός Όνομα Επώνυμο Οδός Αριθμός Πόλη 124 Βασίλης Βελισαρίου Ηρώων 20 Σέρρες 125 Γιάννης Γεωργίου Κήπων 4 Βόλος 126 Κωνσταντίνα Δημητρίου Εγνατία 123 Βόλος ΦΟΙΤΗΤΕΣ Κωδικός Όνομα Επώνυμο Οδός Αριθμός Πόλη 123 Ανέστης Αρίστου Ανθέων 53 Σέρρες 124 Βασίλης Βελισαρίου Ηρώων 20 Σέρρες

Συνθήκες με αριθμητικές στήλες στην SQL 35 Στην προηγούμενη εντολή DELETE, η παράσταση που ακολουθεί τη δεσμευμένη λέξη WHERE καθορίζει τις γραμμές του πίνακα που διαγράφονται. Όσες γραμμές έχουν τιμές που ικανοποιούν την παράσταση που περιγράφει η συνθήκη, διαγράφονται με την εκτέλεση της εντολής.

Τελεστές σύγκρισης 36 Η συνθήκη που ακολουθεί τη δεσμευμένη λέξη WHERE δημιουργείται με τη βοήθεια των τελεστών σύγκρισης: = ίσο > μεγαλύτερο < μικρότερο >= μεγαλύτερο ή ίσο <= μικρότερο ή ίσο <> διάφορο

Παραδείγματα διαγραφής εγγραφών με απλή συνθήκη σε αριθμητικό πεδίο 37 ΠΡΟΪΟΝΤΑ Εγγραφή Κωδικός Περιγραφή ΤιμήΑγοράς Απόθεμα Κατηγορία 1 1001 Στυλό 0.75 200 1 2 1002 Μολύβι 1 250 1 3 1003 Μαρκαδόρ 1.3 130 1 ος 4 1004 Δισκέτα 0.8 120 2 3,5 5 1005 CD ROM 1 315 2 6 1006 CD Audio 1.2 84 2 Ενέργεια Εντολή SQL Διαγράφονται οι εγγραφές Διαγραφή των προϊόντων με απόθεμα μεγαλύτερο του 150 DELETE ΠΡΟΪΟΝΤΑ WHERE Απόθεμα > 150 1, 2, 5 Διαγραφή των προϊόντων με απόθεμα μικρότερο ή ίσο του 125 DELETE ΠΡΟΪΟΝΤΑ WHERE Απόθεμα <= 125 4, 6 Διαγραφή των προϊόντων με τιμή αγοράς μικρότερη του 1 DELETE ΠΡΟΪΟΝΤΑ WHERE ΤιμήΑγοράς < 1 1, 4 Διαγραφή όλων των προϊόντων που ανήκουν στην κατηγορία 2 DELETE ΠΡΟΪΟΝΤΑ WHERE Κατηγορία= 2 4, 5, 6

Λογικοί τελεστές 38 Περισσότερο σύνθετες συνθήκες μπορούν να διαμορφωθούν με την χρήση των λογικών τελεστών: AND (λογικό και) OR (λογικό ή) και NOT (λογική άρνηση). Οι λογικοί τελεστές χρησιμοποιούνται για να συνδυαστούν λογικά δύο απλές συνθήκες. Για παράδειγμα, τα προϊόντα που είναι στην κατηγορία 2 και έχουν τιμή αγοράς μικρότερη του 1 περιγράφονται από τη συνθήκη: κατηγορία = 2 AND Τιμή Αγοράς < 1.

Παραδείγματα με σύνθετη συνθήκη σε αριθμητικά πεδία 39 ΠΡΟΪΟΝΤΑ Εγγραφή Κωδικός Περιγραφή ΤιμήΑγοράς Απόθεμα Κατηγορία 1 1001 Στυλό 0.75 200 1 2 1002 Μολύβι 1 250 1 3 1003 Μαρκαδόρο 1.3 130 1 ς 4 1004 Δισκέτα 3,5 0.8 120 2 5 1005 CD ROM 1 315 2 6 1006 CD Audio 1.2 84 2 Ενέργεια Διαγραφή των προϊόντων με απόθεμα μεγαλύτερο του 150 και ανήκουν στην κατηγορία 2 Διαγραφή των προϊόντων της κατηγορίας 2 με απόθεμα μικρότερο ή ίσο του 125 Διαγραφή των προϊόντων της κατηγορίας 1 με απόθεμα μικρότερο ή ίσο του 125 Εντολή SQL DELETE ΠΡΟΪΟΝΤΑ WHERE Κωδικός >150 AND Κατηγορία = 2 DELETE ΠΡΟΪΟΝΤΑ WHERE Απόθεμα <=125 AND Κατηγορία = 2 DELETE ΠΡΟΪΟΝΤΑ WHERE Απόθεμα <=125 AND Κατηγορία = 1 Διαγράφονται οι εγγραφές 5 4,6 καμία

Παραδείγματα με σύνθετη συνθήκη σε αριθμητικά πεδία 40 ΠΡΟΪΟΝΤΑ Εγγραφή Κωδικός Περιγραφή ΤιμήΑγοράς Απόθεμα Κατηγορία 1 1001 Στυλό 0.75 200 1 2 1002 Μολύβι 1 250 1 3 1003 Μαρκαδόρο 1.3 130 1 ς 4 1004 Δισκέτα 3,5 0.8 120 2 5 1005 CD ROM 1 315 2 6 1006 CD Audio 1.2 84 2 Ενέργεια Διαγραφή των προϊόντων που είτε έχουν τιμή αγοράς κάτω του 1, είτε ανήκουν στην κατηγορία 2 Διαγραφή των προϊόντων που έχουν τιμή αγοράς μεγαλύτερη του 0.5 και μικρότερη του 1.2 Εντολή SQL DELETE ΠΡΟΪΟΝΤΑ WHERE ΤιμήΑγοράς < 1 OR Κατηγορία = 2 DELETE ΠΡΟΪΟΝΤΑ WHERE ΤιμήΑγοράς >0.5 AND ΤιμήΑγοράς <1.2 Διαγράφονται οι εγγραφές 1, 4, 5,6 1,2, 4,5

Συνθήκες με στήλες τύπου συμβολοσειράς 41 Στην περίπτωση που στη συνθήκη συμμετέχει μία στήλη τύπου συμβολοσειράς (δηλ. μία στήλη που έχει δηλωθεί στην εντολή CREATE TABLE ως CHAR ή VARCHAR), η συνθήκη σχηματίζεται με χρήση ενός εκ των δύο τελεστών του τελεστή της ισότητας (=) και του τελεστή LIKE Ο τελεστής της ισότητας (=) χρησιμοποιείται όταν η στήλη πρέπει έχει μία απολύτως συγκεκριμένη τιμή. Για παράδειγμα, η έκφραση πόλη = Καβάλα' σημαίνει ότι η πόλη πρέπει να έχει ακριβώς την τιμή Καβάλα.

Ο τελεστής LIKE 42 Ο τελεστής LIKE χρησιμοποιείται όταν οι τιμές της στήλης πρέπει να ακολουθούν ένα σύνολο τιμών που ακολουθούν ένα συγκεκριμένο πρότυπο. Το πρότυπο περιγράφεται εισάγοντάς το σε απλά εισαγωγικά ('). Συνήθως, ο τελεστής LIKE χρησιμοποιείται σε συνδυασμό με το σύμβολο επί τοις εκατό (%), το οποίο αντιπροσωπεύει ένα οποιοδήποτε σύνολο χαρακτήρων. Παράδειγμα: η έκφραση Επώνυμο like 'Παπα%' σημαίνει ότι το επώνυμο πρέπει να αρχίζει με τα γράμματα Παπα και να ακολουθείται από οποιοδήποτε σύνολο χαρακτήρων. Άρα, η έκφραση αυτή περιγράφει όλα τα ονόματα που αρχίζουν από Παπα, όπως Παπαθασιλείου, Παπαγεωργίου, Παπαντωνίου, κ.λπ.

Παραδείγματα συνθηκών που περιέχουν συμβολοσειρά 43 ΠΡΟΜΗΘΕΥΤΕΣ Εγγραφή Κωδικός Όνομα Επώνυμο Οδός Αριθμός Πόλη 1 123 Αρίστος Παπαβασιλείου Ανθέων 53 Σέρρες 2 124 Βελισαρίων Παπαντωνίου Ηρώων 20 Σέρρες 3 125 Γεώργιος Γεωργίου Κήπων 4 Βόλος 4 126 Γεωργία Δημητρίου Ανθέων 123 Βόλος Ενέργεια Εντολή SQL Διαγράφονται οι εγγραφές Διαγραφή των προμηθευτών που έχουν ως πόλη τις Σέρρες Διαγραφή των προμηθευτών που μένουν σε οδό Ανθέων (ανεξαρτήτως πόλεως) Διαγραφή των προμηθευτών με Επώνυμο που αρχίζει από Παπα Διαγραφή των προμηθευτών με όνομα που τελειώνει σε ος Διαγραφή όλων των προμηθευτών που το όνομά τους περιέχει τον συνδυασμό γραμμάτων ρί DELETE ΠΡΟΜΗΘΕΥΤΕΣ WHERE Πόλη ='Σέρρες DELETE ΠΡΟΜΗΘΕΥΤΕΣ WHERE Οδός = 'Ανθέων' DELETE ΠΡΟΜΗΘΕΥΤΕΣ WHERE Επώνυμο LIKE 'Παπα%' DELETE ΠΡΟΜΗΘΕΥΤΕΣ WHERE Όνομα LIKE '%ος' DELETE ΠΡΟΜΗΘΕΥΤΕΣ WHERE Όνομα LIKE '%ρί%' 1, 2 1, 4 1 (Παπαβασιλείου) 2 (Παπαντωνίου) 1 (Αρίστος) 3 (Γεώργιος) 1 (Αρίστος), 2 (Βελισαρίων)

Παραδείγματα σύνθετων συνθηκών με συμβολοσειρές 44 ΠΡΟΜΗΘΕΥΤΕΣ Εγγραφή Κωδικός Όνομα Επώνυμο Οδός Αριθμός Πόλη 1 123 Αρίστος Παπαβασιλείου Ανθέων 53 Σέρρες 2 124 Βελισαρίων Παπαντωνίου Ηρώων 20 Σέρρες 3 125 Γεώργιος Γεωργίου Κήπων 4 Βόλος 4 126 Γεωργία Δημητρίου Ανθέων 123 Βόλος Ενέργεια Εντολή SQL Διαγράφονται οι εγγραφές Διαγραφή των προμηθευτών που έχουν ως πόλη τις Σέρρες και το όνομά τους περιέχει τον συνδυασμό γραμμάτων ρί Διαγραφή των προμηθευτών που μένουν στην οδό Ανθέων στον Βόλο Διαγραφή των προμηθευτών με Επώνυμο που αρχίζει από Παπα και έχουν κωδικό μεγαλύτερο ή ίσο του 124 DELETE ΠΡΟΜΗΘΕΥΤΕΣ WHERE Πόλη = Σέρρες AND Όνομα LIKE %ρί% DELETE ΠΡΟΜΗΘΕΥΤΕΣ WHERE Οδός = Ανθέων AND Πόλη = Βόλος DELETE ΠΡΟΜΗΘΕΥΤΕΣ WHERE Επώνυμο LIKE Παπα% AND Κωδικός >= 124 1, 2 4 2

Τροποποίηση δεδομένων με την SQL 45 Η τροποποίηση (ή αλλιώς ενημέρωση) των δεδομένων που έχουν αποθηκευτεί σε έναν πίνακα γίνεται με χρήση της εντολής UPDATE, η οποία έχει το παρακάτω συντακτικό: UPDATE όνομα_πίνακα SET όνομα_στήλης = τ ιμή [,... ] [WHERE συνθήκη] Η εντολή UPDATE εμφανίζεται σε δύο μορφές: Στην απλούστερη μορφή της δεν περιλαμβάνει τη γραμμή WHERE οπότε η εντολή τροποποιεί όλες τις εγγραφές του πίνακα. Στη σύνθετη μορφή της όταν περιέχει και τη γραμμή WHERE η εντολή τροποποιεί μόνο τις εγγραφές του πίνακα που ικανοποιούν τη συνθήκη.

Παραδείγματα τροποποίησης πίνακα 46 Για να ενταχθούν όλα τα προϊόντα (ανεξάρτητα της κατηγορίας που ανήκουν) στην κατηγορία 3, χρησιμοποιούμε την εντολή: ΠΡΟΪΟΝΤΑ ΠΡΟΪΟΝΤΑ Κωδικός Περιγραφή Τιμή Αγοράς Κωδικός Περιγραφή Τιμή Αγοράς Απόθεμα Κατηγορία Απόθεμα Κατηγορία 1001 Στυλό 0.75 200 1 1002 Μολύβι 1 250 1 1003 Μαρκαδόρος 1.3 130 1 1004 Δισκέτα 3,5 0.8 120 2 1005 CD ROM 1 315 2 1006 CD Audio 1.2 84 2 1001 Στυλό 0.75 200 3 1002 Μολύβι 1 250 3 1003 Μαρκαδόρος 1.3 130 3 1004 Δισκέτα 3,5 0.8 120 3 1005 CD ROM 1 315 3 1006 CD Audio 1.2 84 3 UPDATE ΠΡΟΪΟΝΤΑ SET Κατηγορία = 3

Παραδείγματα τροποποίησης πίνακα 47 Για να αυξηθεί κατά 50 το απόθεμα όλων των προϊόντων, δίνεται η εντολή: ΠΡΟΪΟΝΤΑ ΠΡΟΪΟΝΤΑ Κωδικός Περιγραφή Τιμή Αγοράς Κωδικός Περιγραφή Τιμή Αγοράς Απόθεμα Κατηγορία Απόθεμα Κατηγορία 1001 Στυλό 0.75 200 1 1002 Μολύβι 1 250 1 1003 Μαρκαδόρος 1.3 130 1 1004 Δισκέτα 3,5 0.8 120 2 1005 CD ROM 1 315 2 1006 CD Audio 1.2 84 2 1001 Στυλό 0.75 300 1 1002 Μολύβι 1 300 1 1003 Μαρκαδόρος 1.3 180 1 1004 Δισκέτα 3,5 0.8 170 2 1005 CD ROM 1 365 2 1006 CD Audio 1.2 134 2 UPDATE ΠΡΟΪΟΝΤΑ SET Απόθεμα = Απόθεμα +50

Παραδείγματα τροποποίησης πίνακα 48 Αύξηση της τιμής αγοράς όλων των προϊόντων κατά 2% επιτυγχάνεται με την εντολή: ΠΡΟΪΟΝΤΑ ΠΡΟΪΟΝΤΑ Κωδικός Περιγραφή Τιμή Αγοράς Κωδικός Περιγραφή Τιμή Αγοράς Απόθεμα Κατηγορία Απόθεμα Κατηγορία 1001 Στυλό 0.75 200 1 1002 Μολύβι 1 250 1 1003 Μαρκαδόρος 1.3 130 1 1004 Δισκέτα 3,5 0.8 120 2 1005 CD ROM 1 315 2 1006 CD Audio 1.2 84 2 1001 Στυλό 0.765 250 1 1002 Μολύβι 1.02 250 1 1003 Μαρκαδόρος 1.326 130 1 1004 Δισκέτα 3,5 0.816 120 2 1005 CD ROM 1.02 315 2 1006 CD Audio 1.224 84 2 UPDATE ΠΡΟΪΟΝΤΑ SET ΤιμήΑγοράς = 1.02 * ΤιμήΑγοράς

Παραδείγματα τροποποίησης πίνακα 49 Για να αυξηθεί κατά 4% η τιμή αγοράς των προϊόντων της κατηγορίας 2 δίνεται η εντολή: ΠΡΟΪΟΝΤΑ ΠΡΟΪΟΝΤΑ Κωδικός Περιγραφή Τιμή Αγοράς Κωδικός Περιγραφή Τιμή Αγοράς Απόθεμα Κατηγορία Απόθεμα Κατηγορία 1001 Στυλό 0.75 200 1 1002 Μολύβι 1 250 1 1003 Μαρκαδόρος 1.3 130 1 1004 Δισκέτα 3,5 0.8 120 2 1005 CD ROM 1 315 2 1006 CD Audio 1.2 84 2 1001 Στυλό 0.75 250 1 1002 Μολύβι 1 250 1 1003 Μαρκαδόρος 1.3 130 1 1004 Δισκέτα 3,5 0.832 120 2 1005 CD ROM 1.04 315 2 1006 CD Audio 1.248 84 2 UPDATE ΠΡΟΪΟΝΤΑ SET ΤιμήΑγοράς =1.04* ΤιμήΑγοράς WHERE Κατηγορία = 2

Παραδείγματα τροποποίησης πίνακα 50 Για να αυξηθεί κατά 30 το απόθεμα του προϊόντος με κωδικό 1003 και κατά 4% η τιμή αγοράς του (Εικόνα 6.10.ε) δίνεται η εντολή: ΠΡΟΪΟΝΤΑ ΠΡΟΪΟΝΤΑ Κωδικός Περιγραφή Τιμή Αγοράς Κωδικός Περιγραφή Τιμή Αγοράς Απόθεμα Κατηγορία Απόθεμα Κατηγορία 1001 Στυλό 0.75 200 1 1002 Μολύβι 1 250 1 1003 Μαρκαδόρος 1.3 130 1 1004 Δισκέτα 3,5 0.8 120 2 1005 CD ROM 1 315 2 1006 CD Audio 1.2 84 2 1001 Στυλό 0.75 250 1 1002 Μολύβι 1 250 1 1003 Μαρκαδόρος 1.352 160 1 1004 Δισκέτα 3,5 0.8 120 2 1005 CD ROM 1 315 2 1006 CD Audio 1.2 84 2 UPDATE ΠΡΟΪΟΝΤΑ SET Απόθεμα = Απόθεμα + 30, ΤιμήΑγοράς = 1.04 * ΤιμήΑγοράς WHERE Κωδικός = 1003

Αναζήτηση δεδομένων με SQL 51 Η αναζήτηση των δεδομένων που έχουν αποθηκευτεί σε μία βάση δεδομένων και η ταυτόχρονη εμφάνισή τους σε μορφή πίνακα γίνεται με χρήση της εντολής SELECT. Η εντολή αυτή έχει μία ιδιαίτερα ισχυρή εκφραστική ικανότητα, αφού συνδυάζει πολλές πράξεις της σχεσιακής άλγεβρας. Η εντολή SELECT έχει το παρακάτω συντακτικό: SELECT [DINSTICT ALL] {* [έκφραση_στήλης] [,...]} FROM όνομα_πίνακα [συνώνυμο] [,...] [WHERE συνθήκη] [GROUP BY στήλες] [ORDER BY στήλες]

Εμφάνιση όλων των γραμμών και όλων των στηλών ενός πίνακα 52 Στην πιο απλή της μορφή, η εντολή SELECT χρησιμοποιείται για την εμφάνιση όλων των γραμμών και όλων των στηλών ενός πίνακα και έχει τη μορφή: SELECT * FROM όνομα_πίνακα Ο αστερίσκος (*) μετά τη δεσμευμένη λέξη SELECT αναπαριστάνει όλες τις στήλες ενός πίνακα. Παράδειγμα: SELECT * FROM ΠΡΟΪΟΝΤΑ

Εμφάνιση συγκεκριμένων στηλών ενός πίνακα 53 Ορισμένες φορές είναι επιθυμητή η εμφάνιση ορισμένων μόνο στηλών ενός πίνακα και όχι όλων. Στην περίπτωση αυτή, μετά τη δεσμευμένη λέξη SELECT δεν χρησιμοποιείται ο αστερίσκος, αλλά δηλώνονται με το όνομά τους οι στήλες που ζητείται να εμφανιστούν, χωρισμένες με κόμμα (,). Στην περίπτωση αυτή, το συντακτικό της SELECT είναι: SELECT [έκφραση_στήλης][,...] FROM όνομα_πίνακα

Για να εμφανιστεί ο κωδικός, η περιγραφή και το απόθεμα όλων των προϊόντων πρέπει να δοθεί η εντολή: ΠΡΟΪΟΝΤΑ Κωδικός Περιγραφή ΤιμήΑγοράς Απόθεμα Κατηγορία 1001 Στυλό 0.75 200 1 1002 Μολύβι 1 250 1 1003 Μαρκαδόρος 1.3 130 1 1004 Δισκέτα 3,5 0.8 120 2 1005 CD ROM 1 315 2 1006 CD Audio 1.2 84 2 54 SELECT Κωδικός, Περιγραφή, Απόθεμα FROM ΠΡΟΪΟΝΤΑ ΠΡΟΪΟΝΤΑ Κωδικός Περιγραφή Απόθεμα 1001 Στυλό 200 1002 Μολύβι 250 1003 Μαρκαδόρος 130 1004 Δισκέτα 3,5 120 1005 CD ROM 315 1006 CD Audio 84

55 Για να εμφανιστεί ο κωδικός όλων των προϊόντων πρέπει να δοθεί η εντολή: ΠΡΟΪΟΝΤΑ Κωδικός Περιγραφή ΤιμήΑγοράς Απόθεμα Κατηγορία 1001 Στυλό 0.75 200 1 1002 Μολύβι 1 250 1 1003 Μαρκαδόρος 1.3 130 1 1004 Δισκέτα 3,5 0.8 120 2 1005 CD ROM 1 315 2 1006 CD Audio 1.2 84 2 SELECT Κωδικός FROM ΠΡΟΪΟΝΤΑ ΠΡΟΪΟΝΤΑ Κωδικός Περιγραφή Απόθεμα 1001 Στυλό 200 1002 Μολύβι 250 1003 Μαρκαδόρος 130 1004 Δισκέτα 3,5 120 1005 CD ROM 315 1006 CD Audio 84

Εμφάνιση συγκεκριμένων στηλών και συγκεκριμένων γραμμών ενός πίνακα 56 Η επιλογή και εμφάνιση συγκεκριμένων γραμμών ενός πίνακα γίνεται με χρήση της δεσμευμένης λέξης where, η οποία ακολουθείται από μία συνθήκη: SELECT [έκφραση_στήλης][,...] FROM όνομα_πίνακα WHERE συνθήκη Η μορφή αυτή της SELECT, εμφανίζει όσες στήλες δηλώνονται μετά τη δεσμευμένη λέξη SELECT και όσες γραμμές του πίνακα ικανοποιούν τη συνθήκη.

ΠΡΟΪΟΝΤΑ Κωδικός Περιγραφή ΤιμήΑγοράς Απόθεμα Κατηγορία 1001 Στυλό 0.75 200 1 1002 Μολύβι 1 250 1 1003 Μαρκαδόρος 1.3 130 1 1004 Δισκέτα 3,5 0.8 120 2 1005 CD ROM 1 315 2 1006 CD Audio 1.2 84 2 57 Για να εμφανιστεί ο κωδικός, η περιγραφή και το απόθεμα των προϊόντων που είναι της κατηγορίας 2, χρησιμοποιείται η εντολή: SELECT Κωδικός, Περιγραφή, Απόθεμα FROM ΠΡΟΪΟΝΤΑ WHERE Κατηγορία = 2 ΠΡΟΪΟΝΤΑ Κωδικός Περιγραφή Απόθεμα 1004 Δισκέτα 3,5 120 1005 CD ROM 315 1006 CD Audio 84

Για να εμφανιστεί ο κωδικός, η περιγραφή, η τιμή αγοράς και η κατηγορία των προϊόντων που έχουν απόθεμα μικρότερο των 160, χρησιμοποιείται η εντολή: ΠΡΟΪΟΝΤΑ Κωδικός Περιγραφή ΤιμήΑγοράς Απόθεμα Κατηγορία 1001 Στυλό 0.75 200 1 1002 Μολύβι 1 250 1 1003 Μαρκαδόρος 1.3 130 1 1004 Δισκέτα 3,5 0.8 120 2 1005 CD ROM 1 315 2 1006 CD Audio 1.2 84 2 58 SELECT Κωδικός, Περιγραφή, ΤιμήΑγοράς, Κατηγορία FROM ΠΡΟΪΟΝΤΑ WHERE Απόθεμα < 160 ΠΡΟΪΟΝΤΑ Κωδικός Περιγραφή Απόθεμα Κατηγορία 1003 Μαρκαδόρος 130 1 1004 Δισκέτα 3,5 120 2 1006 CD Audio 84 2

Για να εμφανιστούν όλες οι στήλες του πίνακα ΠΡΟΪΟΝΤΑ που έχουν κωδικό μεγαλύτερο ή ίσο του 1003 και μικρότερο ή ίσο του 1005, χρησιμοποιείται η εντολή: ΠΡΟΪΟΝΤΑ Κωδικός Περιγραφή ΤιμήΑγοράς Απόθεμα Κατηγορία 1001 Στυλό 0.75 200 1 1002 Μολύβι 1 250 1 1003 Μαρκαδόρος 1.3 130 1 1004 Δισκέτα 3,5 0.8 120 2 1005 CD ROM 1 315 2 1006 CD Audio 1.2 84 2 59 SELECT * FROM ΠΡΟΪΟΝΤΑ WHERE Κωδικός >=1003 AND Κωδικός <= 1005 ΠΡΟΪΟΝΤΑ Κωδικός Περιγραφή ΤιμήΑγοράς Απόθεμα Κατηγορία 1003 Μαρκαδόρος 1.3 130 1 1004 Δισκέτα 3,5 0.8 120 2 1005 CD ROM 1 315 2

Συνθήκη που περιέχει ένα εύρος τιμών 60 Στην περίπτωση που μία συνθήκη εκφράζει ένα εύρος τιμών, η συνθήκη μπορεί να περιγράφει και με χρήση των δεσμευμένων λέξεων BETWEEN... AND. Το προηγούμενο παράδειγμα μπορεί να γραφεί ως: SELECT * FROM ΠΡΟΪΟΝΤΑ WHERE Κωδικός BETWEEN 1003 AND 1005

Συνθήκη που περιέχει ένα σύνολο διακεκριμένων τιμών 61 Όταν η συνθήκη περιέχει ένα συγκεκριμένο σύνολο τιμών, τότε η συνθήκη μπορεί να εκφραστεί με τη βοήθεια του λογικού OR. Ωστόσο, είναι πιο βολικό να χρησιμοποιήσουμε τη δυνατότητα ορισμού ενός συνόλου που δίνει η SQL με τη δεσμευμένη λέξη IN. Τα στοιχεία του συνόλου εμφανίζονται μετά τη λέξη IN μέσα σε παρενθέσεις και χωρίζονται μεταξύ τους με ένα κόμμα (,),

Παράδειγμα συνθήκης που περιέχει σύνολο διακεκριμένων τιμών Για να εμφανιστούν όλες οι στήλες του πίνακα που αφορούν τους φοιτητές με κωδικούς 123, 125 και 126, μπορούμε να χρησιμοποιήσουμε την εντολή: 62 ΦΟΙΤΗΤΕΣ Κωδικός Όνομα Επώνυμο Οδός Αριθμός Πόλη 123 Αρίστου Παπαβασιλείου Ανθέων 53 Σέρρες 124 Βελισαρίου Παπαντωνίου Ηρώων 20 Λαμία 125 Γεωργίου Γεωργίου Κήπων 4 Βόλος 126 Γεωργία Δημητρίου Ανθέων 123 Κιλκίς SELECT * FROM ΦΟΙΤΗΤΕΣ WHERE Κωδικός IN (123, 125, 126) ΦΟΙΤΗΤΕΣ Κωδικός Όνομα Επώνυμο Οδός Αριθμός Πόλη 123 Αρίστου Παπαβασιλείου Ανθέων 53 Σέρρες 125 Γεωργίου Γεωργίου Κήπων 4 Βόλος 126 Γεωργία Δημητρίου Ανθέων 123 Κιλκίς

Παράδειγμα συνθήκης που περιέχει σύνολο διακεκριμένων τιμών 63 Η ισοδύναμη εντολή με χρήση του λογικού OR είναι: ΦΟΙΤΗΤΕΣ Κωδικός Όνομα Επώνυμο Οδός Αριθμός Πόλη 123 Αρίστου Παπαβασιλείου Ανθέων 53 Σέρρες 124 Βελισαρίου Παπαντωνίου Ηρώων 20 Λαμία 125 Γεωργίου Γεωργίου Κήπων 4 Βόλος 126 Γεωργία Δημητρίου Ανθέων 123 Κιλκίς SELECT * FROM ΦΟΙΤΗΤΕΣ WHERE Κωδικός = 123 OR Κωδικός = 125 OR Κωδικός = 126 ΦΟΙΤΗΤΕΣ Κωδικός Όνομα Επώνυμο Οδός Αριθμός Πόλη 123 Αρίστου Παπαβασιλείου Ανθέων 53 Σέρρες 125 Γεωργίου Γεωργίου Κήπων 4 Βόλος 126 Γεωργία Δημητρίου Ανθέων 123 Κιλκίς

Παράδειγμα συνθήκης που περιέχει σύνολο διακεκριμένων τιμών 64 Για να εμφανιστούν όλες οι στήλες του πίνακα ΦΟΙΤΗΤΕΣ που αφορούν τους φοιτητές οι οποίοι είναι από τις Σέρρες ή το Κιλκίς, χρησιμοποιείται η εντολή: ΦΟΙΤΗΤΕΣ Κωδικός Όνομα Επώνυμο Οδός Αριθμός Πόλη 123 Αρίστου Παπαβασιλείου Ανθέων 53 Σέρρες 124 Βελισαρίου Παπαντωνίου Ηρώων 20 Λαμία 125 Γεωργίου Γεωργίου Κήπων 4 Βόλος 126 Γεωργία Δημητρίου Ανθέων 123 Κιλκίς SELECT * FROM ΦΟΙΤΗΤΕΣ WHERE Πόλη IN ('Σέρρες', 'Κιλκίς') ΦΟΙΤΗΤΕΣ Κωδικός Όνομα Επώνυμο Οδός Αριθμός Πόλη 123 Αρίστου Παπαβασιλείου Ανθέων 53 Σέρρες 126 Γεωργία Δημητρίου Ανθέων 123 Κιλκίς

Εμφάνιση εγγραφών με συγκεκριμένη σειρά 65 Ορισμένες φορές είναι επιθυμητό τα αποτελέσματα μίας εντολής SELECT να εμφανιστούν με μία συγκεκριμένη σειρά. Η σειρά εμφάνισης καθορίζεται με χρήση των δεσμευμένων λέξεων ORDER BY, οι οποίες ακολουθούνται από τη στήλη σύμφωνα με την οποία θα γίνει η ταξινόμηση και τον τρόπο ταξινόμησης. Η αύξουσα σειρά δηλώνεται με τη δεσμευμένη λέξη ASC, ενώ η φθίνουσα σειρά δηλώνεται με τη δεσμευμένη λέξη DESC.

Για να εμφανιστούν όλα τα δεδομένα του πίνακα ΠΡΟΪΟΝΤΑ κατά αύξουσα σειρά αποθεμάτων, χρησιμοποιούμε την εντολή: ΠΡΟΪΟΝΤΑ Κωδικός Περιγραφή ΤιμήΑγοράς Απόθεμα Κατηγορία 1001 Στυλό 0.75 200 1 1002 Μολύβι 1 250 1 1003 Μαρκαδόρος 1.3 130 1 1004 Δισκέτα 3,5 0.8 120 2 1005 CD ROM 1 315 2 1006 CD Audio 1.2 84 2 66 SELECT * FROM ΠΡΟΪΟΝΤΑ ORDER BY Απόθεμα ASC ΠΡΟΪΟΝΤΑ Κωδικός Περιγραφή ΤιμήΑγοράς Απόθεμα Κατηγορία 1006 CD Audio 1.2 84 2 1004 Δισκέτα 3,5 0.8 120 2 1003 Μαρκαδόρος 1.3 130 1 1001 Στυλό 0.75 200 1 1002 Μολύβι 1 250 1 1005 CD ROM 1 315 2

Για να εμφανιστούν όλα τα δεδομένα του πίνακα ΠΡΟΪΟΝΤΑ κατά φθίνουσα σειρά τιμής αγοράς, χρησιμοποιούμε την εντολή: ΠΡΟΪΟΝΤΑ Κωδικός Περιγραφή ΤιμήΑγοράς Απόθεμα Κατηγορία 1001 Στυλό 0.75 200 1 1002 Μολύβι 1 250 1 1003 Μαρκαδόρος 1.3 130 1 1004 Δισκέτα 3,5 0.8 120 2 1005 CD ROM 1 315 2 1006 CD Audio 1.2 84 2 67 SELECT * FROM ΠΡΟΪΟΝΤΑ ORDER BY ΤιμήΑγοράς DESC ΠΡΟΪΟΝΤΑ Κωδικός Περιγραφή ΤιμήΑγοράς Απόθεμα Κατηγορία 1003 Μαρκαδόρος 1.3 130 1 1006 CD Audio 1.2 84 2 1002 Μολύβι 1 250 1 1005 CD ROM 1 315 2 1004 Δισκέτα 3,5 0.8 120 2 1001 Στυλό 0.75 200 1

Για να εμφανίσουμε τον κωδικό, την περιγραφή και το απόθεμα των προϊόντων που είναι της κατηγορίας 2, κατά φθίνουσα σειρά του αποθέματος, χρησιμοποιούμε την παρακάτω εντολή: ΠΡΟΪΟΝΤΑ Κωδικός Περιγραφή ΤιμήΑγοράς Απόθεμα Κατηγορία 1001 Στυλό 0.75 200 1 1002 Μολύβι 1 250 1 1003 Μαρκαδόρος 1.3 130 1 1004 Δισκέτα 3,5 0.8 120 2 1005 CD ROM 1 315 2 1006 CD Audio 1.2 84 2 68 SELECT Κωδικός, Περιγραφή, Απόθεμα FROM ΠΡΟΪΟΝΤΑ WHERE Κατηγορία = 2 ORDER BY Απόθεμα DESC ΠΡΟΪΟΝΤΑ Κωδικός Περιγραφή Απόθεμα 1005 CD ROM 315 1004 Δισκέτα 3,5 120 1006 CD Audio 84

Εμφάνιση στήλης με άλλο όνομα 69 Τα αποτελέσματα μίας εντολής SELECT εμφανίζονται πάντοτε σε μορφή πίνακα. Τα ονόματα των στηλών του πίνακα αποτελεσμάτων είναι ίδια με τα ονόματα των στηλών του πίνακα από τον οποίο προέρχονται τα δεδομένα. Μπορούμε να αλλάξουμε τα ονόματα των στηλών του πίνακα αποτελεσμάτων, χρησιμοποιώντας τη δεσμευμένη λέξη AS όπως φαίνεται στην παρακάτω εντολή: SELECT Κωδικός AS ΚωδΠροϊόντος, Απόθεμα AS ΑπόθΠροιόντος FROM ΠΡΟΪΟΝΤΑ

Υπολογισμοί απλών παραστάσεων 70 Η SQL επιτρέπει τον υπολογισμό μαθηματικών παραστάσεων που δηλώνονται μετά τη δεσμευμένη λέξη SELECT. Οι απλές μαθηματικές παραστάσεις περιέχουν τις συνηθισμένες αριθμητικές πράξεις και χρησιμοποιούν τα γνωστά αριθμητικά σύμβολα: + για την πρόσθεση - για την αφαίρεση * για τον πολλαπλασιασμό / για την διαίρεση

Παραδείγματα υπολογισμού απλής αριθμητικής παράστασης 71 Ας υποθέσουμε ότι θέλουμε να εμφανίσουμε για το προϊόν που έχει κωδικό 1003, την τωρινή τιμή αγοράς του καθώς και την τιμή αγοράς του αυξημένης κατά 5%. Για την εμφάνιση αυτών των δεδομένων χρησιμοποιείται η εντολή: SELECT ΤιμήΑγοράς, ΤιμήΑγοράς * 1.05 AS ΝέαΤιμή FROM ΠΡΟΪΟΝΤΑ WHERE Κωδικός = 1003

Παραδείγματα υπολογισμού απλής αριθμητικής παράστασης 72 Για τον υπολογισμό του συνολικού ποσού που διατέθηκε για την αγορά του αποθέματος του προϊόντος με κωδικό 1001 χρησιμοποιείται η παρακάτω εντολή SQL: SELECT Κωδικός, ΤιμήΑγοράς * Απόθεμα AS ΣυνολικόΚόστος FROM ΠΡΟΪΟΝΤΑ WHERE Κωδικός = 1001

Παράδειγμα αριθμητικού υπολογισμού για πολλές εγγραφές ταυτόχρονα 73 Η SQL παρέχει τη δυνατότητα αριθμητικών υπολογισμών για πολλές εγγραφές ταυτόχρονα. Έτσι, ο υπολογισμός του συνολικού ποσού που διατέθηκε για την αγορά των αποθεμάτων για καθένα από τα προϊόντα που ανήκουν στην κατηγορία 2 γίνεται με την παρακάτω εντολή SQL: SELECT Κωδικός, ΤιμήΑγοράς * Απόθεμα AS ΣυνολικόΚόστος FROM ΠΡΟΪΟΝΤΑ WHERE Κατηγορία = 2

Υπολογισμοί με συγκεντρωτικές συναρτήσεις 74 Περισσότερο σύνθετες αριθμητικές παραστάσεις μπορούν να δημιουργηθούν με χρήση ορισμένων ειδικών συναρτήσεων που παρέχει η SQL και οι οποίες είναι γνωστές με τον όρο συγκεντρωτικές συναρτήσεις (aggregate functions). Οι συγκεντρωτικές συναρτήσεις είναι οι εξής: COUNT: απαριθμεί το πλήθος των εγγραφών SUM: υπολογίζει το άθροισμα μίας στήλης ή μίας αριθμητικής παράστασης ΜΙΝ: υπολογίζει το ελάχιστο μίας αριθμητικής στήλης MAX: υπολογίζει το μέγιστο μίας αριθμητικής στήλης AVG: υπολογίζει τη μέση τιμή μίας αριθμητικής στήλης

ΣΥΝΤΗΡΗΣΗ Παραδείγματα χρήσης συγκεντρωτικών συναρτήσεων 75 Ο παρακάτω πίνακας δείχνει τα χρήματα που ξοδεύτηκαν για συντήρηση των αυτοκινήτων για όλη την προηγούμενη χρονιά ΑριθμόςΚυκλοφορίας ΕτήσιοΚόστος ΕΡΗ 1234 4500 ΥΑΑ 2345 1200 ΕΡΗ 3455 900 ΚΖΑ 4567 3510 ΡΗΖ 6789 2700 SELECT AVG(ΕτήσιοΚόστος) FROM ΣΥΝΤΗΡΗΣΗ AVG(ΕτήσιοΚόστος) 2562 Ο μέσος όρος το κόστους της συντήρησης SELECT ΜΙΝ (ΕτήσιοΚόστος) FROM ΣΥΝΤΗΡΗΣΗ SELECT SUM(ΕτήσιοΚόστος) FROM ΣΥΝΤΗΡΗΣΗ MIN(ΕτήσιοΚόστος) 900 SUM(ΕτήσιοΚόστος) 12810 Το ελάχιστο κόστους της συντήρησης Το συνολικό κόστος συντήρησης SELECT COUNT (ΑριθμόςΚυκλοφορίας) FROM ΣΥΝΤΗΡΗΣΗ WHERE ΕτήσιοΚόστος > 3000 COUNT(ΑριθμόςΚυκλοφορίας) 2 Το πλήθος των αυτοκινήτων με κόστος συντήρησης πάνω από 3000

Υπολογισμοί σε ομάδες 76 εγγραφών Πολλές φορές είναι απαραίτητο να θεωρήσουμε έναν πίνακα ως αποτελούμενο από ομάδες εγγραφών (γραμμών).

Παράδειγμα ομαδοποίησης 77 ΕΠΙΔΟΣΕΙΣΠΩΛΗΤΩΝ Κωδικός Πωλητή Κωδικός Προϊόντος Πωλήσεις 1 1001 55 1 1002 60 1 1003 25 2 1001 70 2 1002 15 Ο πίνακας ΕΠΙΔΟΣΕΙΣΠΩΛΗΤΩΝ δείχνει τις πωλήσεις σε κάθε προϊόν που έκανε ο καθένας από τους πωλητές μίας εταιρείας στη διάρκεια του προηγούμενου μήνα. Θεωρούμε ότι ο πίνακας αυτός αποτελείται από δύο ομάδες εγγραφών: η α ομάδα περιλαμβάνει τις πωλήσεις του πωλητή με κωδικό 1 (ομάδα Α), ενώ η β άλλη ομάδα περιλαμβάνει τις πωλήσεις του πωλητή με κωδικό 2 (ομάδα Β). Στην περίπτωση αυτή ο χωρισμός σε ομάδες γίνεται ανάλογα με την τιμή που έχει η στήλη ΚωδικόςΠωλητή.

Ομαδοποίηση με το Group by 78 ΕΠΙΔΟΣΕΙΣΠΩΛΗΤΩΝ Κωδικός Πωλητή Κωδικός Προϊόντος Πωλήσεις 1 1001 55 1 1002 60 1 1003 25 2 1001 70 2 1002 15 Κωδικός Πωλητή Επίδοση 1 130 2 85 SELECT ΚωδικόςΠωλητή, SUM (Πωλήσεις) AS Επίδοση FROM ΕΠΙΔΟΣΕΙΣΠΩΛΗΤΩΝ GROUP BY ΚωδικόςΠωλητή Στην SQL είναι δυνατό οι συγκεντρωτικές συναρτήσεις να υπολογιστούν για κάθε ομάδα χωριστά. Αυτό γίνεται με χρήση των δεσμευμένων λέξεων GROUP BY με τη βοήθεια των οποίων δηλώνονται οι διάφορες ομάδες του πίνακα. Έτσι, το σύνολο των πωλήσεων για κάθε πωλητή χωριστά υπολογίζεται από την παραπάνω εντολή

Παράδειγμα ομαδοποίησης 79 ΕΠΙΔΟΣΕΙΣΠΩΛΗΤΩΝ Κωδικός Πωλητή 1 1003 25 2 1001 70 2 1002 15 Οι εγγραφές ενός πίνακα μπορούν να ομαδοποιηθούν με διάφορους τρόπους, ανάλογα με τον υπολογισμό που απαιτείται. Έτσι, πίνακας ΕΠΙΔΟΣΕΙΣΠΩΛΗΤΩΝ μπορεί να θεωρηθεί ότι αποτελείται από τρεις ομάδες εγγραφών: η α ομάδα αφορά τις πωλήσεις του προϊόντος 1001 (ομάδα 1), Κωδικός Προϊόντος Πωλήσεις 1 1001 55 1 1002 60 η β ομάδα αφορά τις πωλήσεις του προϊόντος 1002 (ομάδα 2) και η γ ομάδα αφορά τις πωλήσεις του προϊόντος 1003 (ομάδα 3).

Παράδειγμα ομαδοποίησης 80 ΕΠΙΔΟΣΕΙΣΠΩΛΗΤΩΝ Κωδικός Πωλητή Κωδικός Προϊόντος Πωλήσεις 1 1001 55 1 1002 60 1 1003 25 2 1001 70 2 1002 15 Κωδικός Προϊόντος ΠωλήσειςΠΡ 1001 125 1002 75 1003 25 SELECT ΚωδικόςΠροΐόντος, SUM (Πωλήσεις) AS ΠωλήσειςΠΡ FROM ΕΠΙΔΟΣΕΙΣΠΩΛΗΤΩΝ GROUP BY ΚωδικόςΠροιόντος Τώρα, η ομαδοποίηση γίνεται ανάλογα με την τιμή που έχει η στήλη ΚωδικόςΠροΐόντος. Αυτή η ομαδοποίηση είναι απαραίτητη όταν θέλουμε να υπολογίσουμε το σύνολο των πωλήσεων για κάθε προϊόν. Η εντολή SQL που δίνει τον υπολογισμό αυτόν φαίνεται παραπάνω

ΤΕΛΟΣ ΕΝΟΤΗΤΑΣ