1. ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΤΗΣ MySQL

Σχετικά έγγραφα
ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ

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

ΕΝΗΜΕΡΩΣΗ ΔΕΔΟΜΕΝΩΝ. UPDATE products SET prod_fpa=19 WHERE prod_fpa=23; SELECT prod_descr,purchase,purchase_date FROM products WHERE prod_fpa=9;

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

DELETE, UPDATE, INSERT.

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

DELETE, UPDATE, INSERT

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

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

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

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

Βασικές Εντολές SQL. Θεωρία & Εντολές SQL. Γραμμή Εντολών MS-DOS (MySQL)

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #6

Διαδικασιακός Προγραμματισμός

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

Βάσεις Δεδομένων (Databases)

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

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

Εργαστήριο 6 ο 7 ο / Ερωτήματα Ι

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

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

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

Εργαστήριο «Τεχνολογία Πολιτισμικού Λογισμικού» Ενότητα. Επεξεργασία πινάκων

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

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

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #3

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

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΕΙΡΑΙΩΣ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ. Βάσεις Δεδομένων (4 ο εξάμηνο) Εργαστήριο MySQL #2

databases linux - terminal (linux / windows terminal)

PHPMyAdmin: Σύντομος οδηγός για αρχάριους

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

Εργαστήριο Βάσεων Δεδομένων. Δικαιώματα Χρηστών Προβολές

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

#1.1 Τι είναι η Βάση Δεδομένων

Παράδειγμα Insert Update Delete Alter.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (2)

Οδηγίες Χρήσης της MySQL

Το Μοντέλο των Οντοτήτων Συσχετίσεων Entity Relationship Model. Νικόλαος Ζ. Ζάχαρης

ΠΡΟΧΩΡΗΜΕΝΑ ΘΕΜΑΤΑ MYSQL

Οδηγίες Χρήσης της MySQL

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

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

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

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

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

2.1. Εντολές Σχόλια Τύποι Δεδομένων

Γνωρίστε το Excel 2007

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

Διάλεξη 16: SQL DML IV, SQL DCL, SQL TCL. Διδάσκων: Παναγιώτης Ανδρέου

Παράδειγμα Select Introduction Group By Join Aliases.. Εργαστήριο Βάσεων Δεδομένων. Εισαγωγή στη MySQL (3)

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

Διαχείριση Βάσης Δεδομένων (dbadmin)

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

ΗΥ-360 Αρχεία και Βάσεις Δεδομένων Διδάσκων: Δ. Πλεξουσάκης. Φροντιστήριο SQL Examples Ξένου Ρουμπίνη

Βάσεις Δεδομένων Ι SQL Μέρος 3 ο. (Constraints & Joins) Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

ΘΕΜΑΤΑ. Ερώτηση 1 Κατά τη Φυσική Αποθήκευση (Physical storage) μιας ΒΔ αποθηκεύονται στον δίσκο τα:

Ενεργές ΒΔ. Παύλος Εφραιμίδης pefraimi <at> ee.duth.gr. Βάσεις Δεδομένων Ενεργές ΒΔ 1

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

Βάσεις Δεδομένων Ι Ευρετήρια/Indexes. (...και επιδόσεις ΣΔΒΔ) Views (Όψεις) Φώτης Κόκκορας (MSc/PhD) Τμήμα Τεχνολογίας Πληροφορικής & Τηλεπ/νιών

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

Βάσεις Δεδομένων Ι SQL Μέρος 1 ο. Φώτης Κόκκορας (MSc/PhD) Τμήμα Μηχανικών Πληροφορικής ΤΕ

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

Σχεδιασμός Πληροφοριακών Συστημάτων. Σημειώσεις

Λίγα λόγια από το συγγραφέα Κεφάλαιο 1: Βάσεις δεδομένων και Microsoft Access Κεφάλαιο 2: Microsoft Access

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

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

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

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

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


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

Βάσεις Δεδομένων Η γλώσσα SQL (Structured Query Language) Εισαγωγή στην SQL (2) Ιστορικά Στοιχεία. SQL - Structured Query Language (1)

SQL Data Manipulation Language

Συστήματα Διαχείρισης Βάσεων Δεδομένων

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


Transcript:

1. ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΤΗΣ MySQL Τύποι στην MySQL Κείμενο Αριθμοί Ημερομηνίες και ώρες Επιλογή του τύπου Στήλες ονομάτων τύπος κειμένου Στήλες ποσών ή ποσοτήτων Αριθμητικός τύπος Στήλες ημερομηνιών τύπος ημερομηνίας (ή και ώρας). ΤΥΠΟΣ ΚΕΙΜΕΝΟΥ Συνήθως χρησιμοποιούμε τον τύπο CHAR ή VARCHAR. CHAR (μήκος) Είναι σταθερού μήκους με μέγεθος αυτό που έχει η παρένθεση. Εάν η λέξη είναι μικρότερη το υπόλοιπο γεμίζει με κενά διαστήματα. Καταλαμβάνει περισσότερο χώρο στην μνήμη. Έχει καλύτερες αποδόσεις. 1

Εάν έχουμε δηλώσει CHAR (2) και γράψουμε μία λέξη 5 χαρακτήρων οι τελευταίοι 3 χαρακτήρες της λέξης θα κοπούν. VARCHAR(μήκος) Είναι μεταβλητού μήκους, δηλαδή κάθε φορά δεσμεύει χώρο για τους χαρακτήρες που περιέχει η λέξη. Καταλαμβάνει μικρότερο χώρο στη μνήμη. Δεν έχει τόσο καλές αποδόσεις σε μεγάλες ΒΔ. Χρησιμοποιούμε πάντα VARCHAR εκτός εάν πρέπει να έχουμε στήλη σταθερού μήκους (π.χ στήλη που περιέχει αριθμούς τηλεφώνου). ΑΡΙΘΜΗΤΙΚΟΣ ΤΥΠΟΣ Τύπος ακεραίου INT (μήκος) Έχει συγκεκριμένο μήκος. Καταλαμβάνει 4bytes στη μνήμη άρα 4X8=32bits άρα μπορεί να αποθηκεύσει αριθμούς εύρους 2 32 δηλαδή τους αριθμούς από -2.147.483.648 έως 2.147.483.647 ή εάν δηλωθεί ως UNSIGNED ΙΝΤ 0 έως 4.294.967.295 μη προσημασμένους. 2

Τύπος πραγματικών αριθμών με δεκαδικό μέρος: FLOAT(μήκος, δεκαδικά) μικρός πραγματικός αριθμός κινητής υποδιαστολής. DOUBLE(μήκος, δεκαδικά) μεγάλος πραγματικός αριθμός κινητής. υποδιαστολής DECIMAL(μήκος, δεκαδικά) μεγάλος πραγματικός αριθμός σταθερής υποδιαστολής. ΠΡΟΣΔΙΟΡΙΣΜΟΙ ΣΤΗΛΩΝ Προσδιορισμός AUTO_INCREMENT Χρησιμοποιείται σε μία αριθμητική στήλη ορίζοντας σε νέα εγγραφή, την αμέσως επόμενη παραδεκτή τιμή. Π.χ. σε μία στήλη με τον αριθμό μίας επίσκεψης εάν 1 είναι η πρώτη εγγραφή τότε η επόμενη θα είναι η 2, η επόμενη η 3 κ.ο.κ Προσδιορισμός UNSIGNED Χρησιμοποιείται σε αριθμητικούς τύπους και σημαίνει ότι η στήλη θα δέχεται μόνο μη προσημασμένους αριθμούς (δηλαδή μόνο θετικούς). Προσδιορισμός ZEROFILL Γεμίζει τον υπόλοιπο χώρο σε μία αριθμητική στήλη με μηδενικά και χρησιμοποιείται σε στήλες για παράδειγμα που περιέχουν ΑΦΜ. Η στήλη ZEROFILL είναι υποχρεωτικά και UNSIGNED. 3

Προσδιορισμός NULL και NOT NULL NULL σημαίνει ότι σε κάποιο κελί μιας στήλης δεν υπάρχει ακόμα τιμή. Δεν είναι ούτε 0 ούτε κενή. NOT NULL σημαίνει ότι τα πεδία της στήλης πρέπει να έχουν τιμή ή αλλιώς δεν πρέπει να είναι NULL. Αυτό ισχύει οπωσδήποτε στις στήλες που είναι δηλωμένες ως κλειδιά σε έναν πίνακα. Παράδειγμα: δήλωσης στήλης: INT(5) ZEROFILL AUTO_INCREMENT ΕΥΡΕΤΗΡΙΑ Ευρετήρια είναι ένας μηχανισμός της MySQL για να βελτιώνεται η συνολική απόδοση της ΒΔ. Εφαρμόζονται επάνω σε στήλες πίνακα. Χρησιμοποιώντας ευρετήρια λέμε στην ΒΔ όταν εκτελείται ένα ερώτημα ποια θα είναι η σειρά προτεραιότητας ελέγχου στις στήλες ενός πίνακα. Ευρετήρια είναι τα PRIMARY KEY (είναι ένα ευρετήριο UNIQUE), INDEX (απλή προτεραιότητα στη στήλη), UNIQUE (απαιτεί κάθε γραμμή να έχει μία μοναδική τιμή). ΜΗΧΑΝΕΣ ΑΠΟΘΗΚΕΥΣΗΣ Μηχανές αποθήκευσης είναι ο τύπος των πινάκων μιας ΒΔ. MyISAM Χειρίζεται καλά ερωτήματα επιλογής SELECT και εισαγωγής INSERT. 4

Έχει μεγάλη ταχύτητα. Δεν μπορεί να διαχειριστεί συναλλαγές. InnoDB (είναι αυτή που χρησιμοποιούμε στη MySQL) Χειρίζεται καλά ερωτήματα ενημέρωσης UPDATE Είναι πιο αργή. Διαχειρίζεται συναλλαγές MEMORY Είναι πολύ γρήγορη γιατί η αποθήκευση γίνεται στην μνήμη του συστήματος. Υποστηρίζει στήλες σταθερού μήκους. Δεν υποστηρίζει AUTO_INCREMENT. Σε περίπτωση κατάρρευσης του συστήματος χάνονται όλα τα δεδομένα. ΟΛΟΚΛΗΡΩΣΗ ΤΗΣ ΒΔ Αυτά που πρέπει να προσέξουμε κατά την κατασκευή μιας Βάσης Δεδομένων είναι τα ακόλουθα. Το όνομα της βάσης πρέπει να είναι: Περιγραφικό Ευκολομνημόνευτο Μοναδικό (κάθε ΒΔ διαφορετικό). 5

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

2. ΔΟΥΛΕΥΟΝΤΑΣ ΜΕ ΤΗΝ MySQL ΚΑΝΟΝΕΣ ΓΙΑ ΤΗΝ ΣΩΣΤΗ ΣΧΕΔΙΑΣΗ ΤΩΝ ΠΙΝΑΚΩΝ Για την σωστή σχεδίαση των πινάκων στην ΒΔ ακολουθούμε κάποιους απλούς κανόνες που αναλύονται πιο κάτω. Χρησιμοποιούμε αλφαριθμητικούς χαρακτήρες. Δεν χρησιμοποιούμε κενά. Περιορίζουμε τα ονόματα σε λέξεις με λιγότερους από 64 χαρακτήρες. Τα ονόματα στηλών πρέπει να είναι περιγραφικά. μοναδικά για κάθε πίνακα, εκτός από τα κλειδιά. Τα ονόματα των πινάκων καλό να είναι να γράφονται στον πληθυντικό Τα ονόματα στηλών καλό να είναι να γράφονται στον ενικό. Δεν χρησιμοποιούμε τις δεσμευμένες λέξεις της MySQL. Διαχωρίζουμε τις λέξεις με το χαρακτήρα υπογράμμισης ( _ ). Χρησιμοποιούμε μόνο πεζά γράμματα. Για να υποδείξουμε ότι μία στήλη είναι κλειδί γράφουμε στο όνομά της την λέξη κωδ, ή code ή id. Tο πρωτεύον κλειδί μπαίνει πρώτο στον πίνακα, και μετά τα ξένα κλειδιά. 7

ΚΑΝΟΝΕΣ ΓΙΑ ΤΗΝ ΣΩΣΤΗ ΕΙΣΑΓΩΓΗ ΕΝΤΟΛΩΝ Η ΤΙΜΩΝ Για την σωστότερη εκτέλεση εντολών, πρέπει να χρησιμοποιούμε τους πιο κάτω κανόνες. Οι αριθμητικές τιμές δεν έχουν κόμματα και δεν μπαίνουν μέσα σε εισαγωγικά. Οι αλφαριθμητικές τιμές μπαίνουν πάντα σε εισαγωγικά (char, varchar και text). Οι ημερομηνίες και ώρες μπαίνουν πάντα σε εισαγωγικά. Στις συναρτήσεις δεν βάζουμε εισαγωγικά. Στο τέλος κάθε εντολής η ερωτήματος πάντα βάζουμε ελληνικό ερωτηματικό (τερματικό εντολής). Οι τιμές που εισάγονται σε ερωτήματα ή εντολές μπαίνουν μέσα σε παρένθεση και χωρίζονται μεταξύ τους με κόμμα. Δεν βάζουμε κόμμα ανάμεσα σε εντολές, ονόματα πινάκων, συναρτήσεις. Η τιμή NULL δεν μπαίνει σε εισαγωγικά. Για να δούμε τι εντολές ή ερωτήματα έχουμε πληκτρολογήσει χρησιμοποιούμε το πλήκτρο F1 και τα βέλη πάνω και κάτω. 8

ΕΝΤΟΛΕΣ ΤΗΣ MySQL Κάποιες από εντολές που χρησιμοποιούμε στη MySQL φαίνονται πιο κάτω. create δημιουργεί πίνακες η βάσεις δεδομένων. delete διαγράφει τιμές από πίνακες. drop διαγράφει ολόκληρο τον πίνακα ή την ΒΔ. update ενημερώνει τον πίνακα. insert εισάγει τιμές στον πίνακα. alter αλλάζει την δομής του πίνακα. show εμφανίζει στοιχεία της δομής του πίνακα ή της ΒΔ. select βασική εντολή για την επιλογή δεδομένων από τον πίνακα. 9

3. ΕΙΣΑΓΩΓΗ ΔΕΔΟΜΕΝΩΝ Για την εισαγωγή δεδομένων (εγγραφών) στους πίνακες χρησιμοποιούμε την εντολή INSERT με τους όρους INTO και VALUES. ΟΛΟΚΛΗΡΩΜΕΝΗ ΕΙΣΑΓΩΓΗ ΤΙΜΩΝ Πληκτρολογούμε κατά σειρά τις στήλες και αντίστοιχα τις τιμές. INSERT INTO όνομα_πίνακα (στήλη1, στήλη2, στήλη3,...) VALUES (01, MARIOS, TSOUKALAS,...); ΣΤΟΧΕΥΜΕΝΗ ΕΙΣΑΓΩΓΗ Πληκτρολογούμε συγκεκριμένες στήλες και αντίστοιχα τις τιμές. INSERT INTO όνομα_πίνακα (στήλη2, στήλη5) VALUES ( DHMHTRHS, 2106598656); Σημ. στις στήλες που δεν έχει δοθεί τιμή είναι σαν να υπάρχει η τιμή NULL. ΧΩΡΙΣ ΟΝΟΜΑΤΑ ΣΤΗΛΩΝ Εάν είμαστε σίγουροι ότι δεν θα κάνουμε λάθος στην πληκτρολόγηση στην σειρά των στηλών γράφουμε μόνο τις τιμές. INSERT INTO όνομα_πίνακα VALUES (01, MARIOS, TSOUKALAS, NULL,...); 10

ΕΙΣΑΓΩΓΗ ΠΟΛΛΩΝ ΕΓΓΡΑΦΩΝ ΤΑΥΤΟΧΡΟΝΑ Μπορούμε να κάνουμε εισαγωγή πάνω από μια πλειάδες (εγγραφές) αρκεί η κάθε πλειάδα να ξεχωρίζει από την προηγούμενη με κόμμα. Εννοείται ότι στο τέλος βάζουμε ερωτηματικό INSERT INTO όνομα_πίνακα (στήλη1, στήλη2, στήλη3,...) VALUES (01, MARIOS, TSOUKALAS,...), (NULL, DHMHTRHS, PANOU,...), (NULL, NIKOS, SARRHS,...); Σημ. Η λέξη NULL μπαίνει στις στήλες με προσδιορισμό AUTO INCREMENT (συνήθως στα κλειδιά). Έτσι σε κάθε νέα εγγραφή, όπου υπάρχει το NULL η MySQL θα βάζει την επόμενη παραδεκτή τιμή γι αυτή την στήλη. 11

4. ΕΝΗΜΕΡΩΣΗ ΔΕΔΟΜΕΝΩΝ Μπορούμε να αλλάξουμε τιμές σε στήλες πίνακα που έχουν καταχωρηθεί λανθασμένα ή να βάλουμε τιμή σε κάποιο πεδίο που είναι NULL ή ακόμα να αλλάξουμε κάποιες τιμές πεδίων. Αυτό γίνεται με την εντολή UPDATE και τον όρο SET. ΕΝΗΜΕΡΩΣΗ ΜΙΑΣ ΣΤΗΛΗΣ UPDATE όνομα_πίνακα SET στήλη1= τιμή1 ; ΕΝΗΜΕΡΩΣΗ ΠΕΡΙΣΣΟΤΕΡΩΝ ΣΤΗΛΩΝ UPDATE όνομα_πίνακα SET στήλη1= τιμή1, στήλη2= τιμή2 ; Σημ. στις δύο προηγούμενες ενημερώσεις οι νέες τιμές περνάνε σε όλες τις εγγραφές της κάθε στήλης. ΕΝΗΜΕΡΩΣΗ ΣΥΓΚΕΚΡΙΜΕΝΗΣ ΕΓΓΡΑΦΗΣ (ΚΕΛΙΟΥ) Για να αλλάξουμε τιμή συγκεκριμένου κελιού του πίνακα χρησιμοποιούμε την συνθήκη WHERE. UPDATE όνομα_πίνακα SET στήλη1= τιμή1 WHERE στήλη2= τιμή2 ; 12

Παράδειγμα (Εύρεση NULL τιμών): Βρες τους πελάτες στους οποίους δεν έχει καταχωρηθεί ακόμη τηλέφωνο, δηλαδή όπου η στήλη pel_phone έχει τιμές NULL και μετά βάλε τον αριθμό τηλεφώνου 2108987344 στον πελάτη με κωδικό 2. SELECT pel_id, pel_name FROM pelates WHERE pel_phone IS NULL; Σημ. Τα ερωτήματα επιλογής θα τα μελετήσουμε στο επόμενο κεφάλαιο. Ενημέρωση πίνακα: UPDATE pelates SET pel_phone ='210-8987344' WHERE pel_id = 2; ΟΜΑΔΟΠΟΙΗΜΕΝΗ ΕΜΦΑΝΙΣΗ ΕΓΓΡΑΦΩΝ Για ομαδοποιημένη εμφάνιση των στοιχείων του πελάτη (κάθετα) χρησιμοποιούμε τον τελεστή \G (δεν βάζουμε ελληνικό ερωτηματικό στο τέλος του ερωτήματος). Άρα για να δούμε τα στοιχεία του πελάτη με κωδικό 2 συντάσσουμε το παρακάτω ερώτημα: SELECT * FROM pelates WHERE pel_id =2 \G 13

ΕΝΗΜΕΡΩΣΗ ΜΕ ΠΕΡΙΟΡΙΣΜΟ Για να είμαστε σίγουροι ότι δεν θα ενημερώσουμε και κάποια άλλη τιμή κατά λάθος, χρησιμοποιούμε τον περιοριστικό όρο LIMIT. Έτσι το ερώτημα ενημέρωσης του τηλεφώνου του πελάτη με κωδικό 2 γίνεται: UPDATE pelates SET pel_phone ='210-8987344' WHERE pel_id = 2 LIMIT 1; Σημ. LIMIT 1 σημαίνει ότι θα γίνει αναγκαστικά μόνο μια αλλαγή. ΔΙΑΓΡΑΦΗ ΕΓΓΡΑΦΩΝ Κάποιες φορές θέλουμε να διαγράψουμε κάποιες εγγραφές από έναν πίνακα, αυτό γίνεται με την εντολή DELETE. Πρέπει να χρησιμοποιούμε πάντα την συνθήκη WHERE γιατί υπάρχει κίνδυνος να διαγράψουμε όλες τις εγγραφές του πίνακα. Διαγραφή συγκεκριμένης εγγραφής: DELETE FROM όνομα_πίνακα WHERE στήλη1= τιμή1 ; Διαγραφή όλων των εγγραφών του πίνακα: DELETE FROM όνομα_πίνακα; Σημ. όταν λέμε διαγραφή εγγραφής, εννοούμε όλη την πλειάδα (γραμμή) του πίνακα. 14

ΔΙΑΓΡΑΦΗ ΟΛΟΥ ΤΟΥ ΠΙΝΑΚΑ Μπορούμε να διαγράψουμε ολόκληρο τον πίνακα με την εντολή DROP: DROP όνομα_πίνακα; Σημ. Αυτή η εντολή διαγράφει όλο τον πίνακα δηλαδή και εγγραφές αλλά και δομή. Με λίγα λόγια τον εξαφανίζει από την ΒΔ. Μπορούμε όμως να διαγράψουμε τις εγγραφές και την δομή και να ξαναφτιάξουμε την δομή ενός πίνακα με την εντολή TRUNCATE. TRUNCATE όνομα_πίνακα; Σημ. σε κάθε περίπτωση πριν προχωρήσουμε σε οποιαδήποτε διαγραφή πρέπει να είμαστε σίγουροι ότι έχουμε πάρει αντίγραφα ασφαλείας (backup) την ΒΔ 15

ΠΑΡΑΔΕΙΓΜΑΤΑ ΕΝΤΟΛΩΝ ΤΗΣ ΓΛΩΣΣΑΣ ΟΡΙΣΜΟΥ ΤΗΣ MySQL CREATE DATABASE db_name; CREATE TABLE tbl_name; USE db_name; SHOW DATABASES; SHOW CREATE DATABASE db_name; SHOW TABLES; SHOW COLUMNS FROM tbl_name; DESCRIBE tbl_name; SHOW CREATE TABLE tbl_name; DROP DATABASE db_name; DROP TABLE tbl_name; ALTER TABLE tbl_name CHANGE COLUMN clmn_name clmn_name_new ΟΡΟΣ; ALTER TABLE tbl_name ADD COLUMN clmn_name_1 ΟΡΟΣ AFTER clmn_name; ALTER TABLE tbl_name δημιουργία βάσης (db_name = όνομα βάσης). δημιουργία πίνακα (tbl_name = όνομα πίνακα). χρήση της βάσης. εμφάνιση όλων των βάσεων. βλέπω τον τρόπο δημιουργίας της βάσης. εμφάνιση πινάκων. εμφάνιση των στηλών του πίνακα. ίδιο όπως πιο πάνω. εμφανίζει την δομή του πίνακα. διαγραφή βάσης και όλων των πινάκων της. διαγραφή πίνακα και όλων των στηλών του. τροποποίηση πίνακα: αλλαγή της στήλης clmn_name σε στήλη clmn_name_new με άλλους όρους. τροποποίηση πίνακα: προσθήκη στήλης clmn_name_1 με όρους μετά από την στήλη clmn_name. τροποποίηση πίνακα: αλλαγή ονόματος του 16

RENAME AS tbl_name_new; ALTER TABLE tbl_name ENGINE=MyISAM; ALTER TABLE tbl_name DROP COLUMN clmn_name_1; ALTER TABLE tbl_name ADD INDEX(column_name); ALTER TABLE tbl_name DROP INDEX index_name_1; ALTER TABLE tbl_name MODIFY COLUMN clmn_name_1 ΟΡΟΣ; ALTER TABLE tbl_name ADD CONSTRAINT fk_fkeyname FOREIGN KEY (fk_name) REFERENCES tbl_name_1 (table pk) ON UPDATE CASCADE; πίνακα. τροποποίηση πίνακα: αλλαγή της μηχανής αποθήκευσης. τροποποίηση πίνακα: διαγραφή στήλης clmn_name_1. τροποποίηση πίνακα: προσθήκη ευρετηρίου (όνομα_στήλης). τροποποίηση πίνακα: διαγραφή υπάρχοντος ευρετηρίου. τροποποίηση πίνακα: αλλαγή της ίδιας της στήλης clmn_name_1. τροποποίηση πίνακα: προσθήκη του κλειδιού του πίνακα tbl_name_1 ως ξένο κλειδί στον πίνακα tbl_name, με την προϋπόθεση ότι όποια αλλαγή υπάρξει θα γίνει και στους δύο πίνακες. 17

5. ΕΠΙΛΟΓΗ ΔΕΔΟΜΕΝΩΝ Από εδώ και πέρα για να θέτουμε ερωτήματα στην ΒΔ, που κατασκευάσαμε με στα προηγούμενα κεφάλαια με την γλώσσα ορισμού της MySQL, θα χρησιμοποιούμε την γλώσσα χειρισμού της MySQL. Τα ερωτήματα επιλογής ξεκινούν με την εντολή SELECT. Έτσι για να επιλέξουμε στοιχεία από έναν πίνακα γράφουμε: SELECT στήλες FROM όνομα_πίνακα; ΕΠΙΛΟΓΗ ΣΥΓΚΕΚΡΙΜΕΝΩΝ ΣΤΗΛΩΝ ΤΟΥ ΠΙΝΑΚΑ Παράδειγμα: Επιλογή του κωδικού, του ονόματος και της περιγραφής όλων των ειδών της αποθήκης. SELECT prod_id, prod_name, prod_descr FROM products; ΕΠΙΛΟΓΗ ΟΛΩΝ ΤΩΝ ΕΓΓΡΑΦΩΝ ΤΟΥ ΠΙΝΑΚΑ Για να δούμε όλα τα προϊόντα της αποθήκης γράφουμε: SELECT * FROM products; 18

ΕΠΙΛΟΓΗ ΜΕ ΤΗΝ ΧΡΗΣΗ ΣΥΝΘΗΚΩΝ Εάν θέλουμε να επιστρέφονται συγκεκριμένες τιμές από την ΒΔ και να κάνουμε πιο αποδοτικά τα ερωτήματα χρησιμοποιούμε συνθήκες μαζί με τον όρο WHERE. Οι συνθήκες είναι ένα σύνολο από στήλες, τιμές και τελεστές που μπαίνουν μετά τους πίνακες στα ερωτήματα επιλογής. Η σύνταξη είναι η εξής: SELECT όνομα_στήλης FROM όνομα_πίνακα WHERE συνθήκη; Πιο κάτω φαίνονται οι συνηθέστεροι τελεστές στην MySQL ΤΕΛΕΣΤΗΣ ΣΗΜΑΣΙΑ ΤΕΛΕΣΤΗΣ ΣΗΜΑΣΙΑ = Ίσο με IN Τιμή που βρίσκεται σε έναν κατάλογο < Μικρότερο από BETWEEN Μέσα σε ένα εύρος > Μεγαλύτερο από NOT BETWEEN Έξω από ένα εύρος <= Μικρότερο από ή ίσο με OR (also II) Όπου επαληθεύεται μία από τις δύο συνθήκες >= Μεγαλύτερο από ή ίσο με AND (also &&) Όπου επαληθεύονται και οι δύο συνθήκες!= (also <>) Διάφορο του NOT (also!) Όπου η συνθήκη δεν επαληθεύεται IS NOT NULL Έχει τιμή IS NULL Δεν έχει τιμή 19

Παράδειγμα: Να βρεθούν οι παραγγελίες του πελάτη 24: SELECT * FROM paragelies WHERE pel_id=24; Σημ. Μπορούμε επίσης να εκτελούμε κι απλές μαθηματικές πράξεις μέσα στην συνθήκη χρησιμοποιώντας τους αριθμητικούς τελεστές (+, -, *, /). ΕΥΡΕΣΗ ΕΓΓΡΑΦΩΝ ΜΕ ΤΟΝ ΤΕΛΕΣΤΗ ΙΣΟΤΗΤΑΣ Για να βρούμε μέσα σε ένα πεδίο κειμένου ή ημερομηνίας κάποια εγγραφή, χρησιμοποιούμε στην συνθήκη τον τελεστή ισότητας =. SELECT * FROM όνομα_πίνακα WHERE όνομα_στήλης = λέξη ; ΣΥΝΘΗΚΕΣ LIKE - NOT LIKE Για να βρούμε μέσα σε ένα πεδίο κειμένου κάποια εγγραφή την οποία δεν μπορούμε να την βρούμε με την χρήση τελεστή σύγκρισης, χρησιμοποιούμε τον τελεστή LIKE με χαρακτήρα μπαλαντέρ. SELECT * FROM όνομα_πίνακα WHERE όνομα_στήλης LIKE λέξη* ; Χαρακτήρες μπαλαντέρ: Το * (ή το %) υποκαθιστά πολλούς χαρακτήρες σε ένα κείμενο, Το? (ή το _) υποκαθιστά έναν χαρακτήρα. 20

Παράδειγμα1: Να βρεθούν οι πελάτες που το επώνυμό τους αρχίζει από Παπα SELECT * FROM pelates WHERE pel_surname LIKE Παπα* ; Παράδειγμα2: Να βρεθούν τα είδη που η περιγραφή τους τελειώνει σε nitor SELECT * FROM products WHERE prod_descr LIKE %nitor ; 21

6. ΤΑΞΙΝΟΜΗΣΗ ΑΠΟΤΕΛΕΣΜΑΤΩΝ ΕΡΩΤΗΜΑΤΟΣ Η συνθήκη WHERE βάζει περιορισμούς στις εγγραφές που επιστρέφονται. Ο όρος ORDER BY ταξινομεί τις εγγραφές που επιστρέφονται. Παράδειγμα: SELECT * FROM table_name ORDER BY column_name; By default η σειρά ταξινόμησης είναι αύξουσα. (ASC) Η βάση ταξινομεί ως προς το κλειδί. Σημ. Εάν θέλουμε η σειρά να είναι φθίνουσα τότε μετά το όνομα στήλης χρησιμοποιούμε τον όρο DESC. Παράδειγμα: SELECT * FROM table_name ORDER BY column_name DESC; 22

Σειρά εμφάνισης αποτελεσμάτων ΣΕΙΡΑ ΑΡΙΘΜΟΙ ΚΕΙΜΕΝΟ ΗΜΕΡΟΜΗΝΙΕΣ NULL Αύξουσα ASC Από το μικρότερο στο μεγαλύτερο Από το Α στο Ζ Από την παλαιότερη στην Εμφανίζονται πρώτες Φθίνουσ α DESC Από το μεγαλύτερο στο μικρότερο πιο πρόσφατη Από το Ζ στο Α Από την πιο πρόσφατη στην παλαιότερη Εμφανίζονται τελευταίες Σημ. Όταν έχουμε σύνθετα ερωτήματα με συνθήκες where, ενώσεις ή και άλλους όρους η ταξινόμηση χρησιμοποιείται στο τέλος του ερωτήματος. Περιορίζουμε τα πλήθος των επιστρεφόμενων αποτελεσμάτων με τον όρο LIMIT. Ο όρος LIMIT δηλώνει πόσες εγγραφές θα επιστραφούν. Χρησιμοποιείται με δύο τρόπους. 1 ος τρόπος SELECT στήλες FROM πίνακας LIMIT πλήθος_εγγραφών; 2 ος τρόπος SELECT στήλες FROM πίνακας LIMIT σημείο_εκκίνησης, πλήθος_εγγραφών; 23

Παράδειγμα 1: SELECT * FROM πίνακας LIMIT 5; Επιστρέφει τις 5 πρώτες πλειάδες του πίνακα. Παράδειγμα 2: SELECT * FROM πίνακας LIMIT 5, 12; Επιστρέφει 12 πλειάδες του πίνακα ξεκινώντας από την 6. Εν κατακλείδι: Ο όρος WHERE ORDER BY LIMIT Δηλώνει: ποιες εγγραφές θα επιστραφούν πως θα επιστραφούν πόσες εγγραφές θα επιστραφούν 24

7. ΣΥΖΕΥΞΗ (ΕΝΩΣΗ) ΠΙΝΑΚΩΝ Οι συζεύξεις πινάκων χρησιμοποιούνται για να εξαχθούν από τη ΒΔ πληροφορίες που βρίσκονται σε περισσότερους από έναν πίνακες. Υπάρχουν οι εσωτερικές και οι εξωτερικές συζεύξεις πινάκων. ΕΣΩΤΕΡΙΚΗ ΣΥΖΕΥΞΗ Έστω μια σχέση r με σχήμα {Χ,Υ} και μίας σχέση s με σχήμα {Y,Z}. Φυσική σύζευξη (ή εσωτερική σύζευξη) είναι μια σχέση με σχήμα {Χ,Υ,Ζ} και κορμό το σύνολο των συνδυασμών των πλειάδων των R και S για τις οποίες οι τιμές στο κοινό γνώρισμα Υ ταυτίζονται. Δηλαδή μια πλειάδα της r θα συνδυαστεί με μια πλειάδα της s αν και μόνο αν οι τιμές στο κοινό γνώρισμα Υ ταυτίζονται μεταξύ τους. Το ερώτημα εσωτερικής σύζευξης είναι το παρακάτω: SELECT * FROM table1 INNER JOIN table2 ON table1.column1 = table2.column1; Εικ.1 Διάγραμμα Venn εσωτερικής σύζευξης πινάκων. Σημ. Στην επιλογή πληροφοριών με σύζευξη πινάκων πρέπει στην σύνταξη να χρησιμοποιούμε τελείες αν υπάρχουν στήλες στους πίνακες με το ίδιο όνομα. 25

Στο σενάριο που δουλεύουμε το ερώτημα: SELECT * FROM paragelies INNER JOIN pelates ON paragelies.pel_id =pelates.pel_id ; θα επιστρέψει τις πλειάδες από τους δύο πίνακες όπου οι τιμές στις στήλες pelates.pel_id, paragelies.pel_id είναι κοινές. Με άλλα λόγια θα αντικαταστήσει το κλειδί pel_id στον πίνακα paragelies με όλες τις πληροφορίες από τον πίνακα πελάτες που αντιστοιχούν στο κλειδί. ΕΞΩΤΕΡΙΚΗ ΣΥΖΕΥΞΗ Οι εξωτερικές συζεύξεις επιστρέφουν εγγραφές που δεν ικανοποιούν κάποια συνθήκη. Η εξωτερική σύζευξη δίνει ως αποτέλεσμα ότι και η εσωτερική, αλλά και επιπλέον δίνει πλειάδες από την μία ή την άλλη σχέση που δεν έχουν ταιριαστές τιμές. Αν υπάρχουν τέτοιες πλειάδες θα εμφανιστούν στο αποτέλεσμα της εξωτερικής σύζευξης. Υπάρχουν δύο τέτοιες συζεύξεις, η αριστερή και η δεξιά. Αριστερή εξωτερική σύζευξη: SELECT * FROM pelates LEFT JOIN paragelies ON paragelies.pel_id =pelates.pel_id ; 26

Εικ.2 Διάγραμμα Venn αριστερής εξωτερικής σύζευξης πινάκων. Δεξιά εξωτερική σύζευξη: SELECT * FROM paragelies RIGHT JOIN pelates ON paragelies.pel_id =pelates.pel_id ; Αυτά τα ερωτήματα επιστρέφουν τις ίδιες εγγραφές, επιστρέφουν δηλαδή όλους τους πελάτες που έχουν παραγγελίες αλλά και αυτούς που δεν εμφανίζονται στον πίνακα παραγγελίες. Όταν δύο πίνακες έχουν το ίδιο όνομα κοινής στήλης μπορούμε πιο απλά να χρησιμοποιήσουμε τον όρο USING(όνομα κοινής στήλης). Δηλ: SELECT * FROM paragelies RIGHT JOIN pelates USING(pel_id); Στα ερωτήματα μπορούμε να επιστρέψουμε συγκεκριμένες τιμές από γνωρίσματα των δύο πινάκων δηλαδή: SELECT paragelies.par_id, paragelies.par_date, pelates.pel_name, pelates.pel_phone FROM paragelies RIGHT JOIN pelates ON paragelies.pel_id =pelates.pel_id ; 27

Ή να επιστρέψουμε όλες τις πλειάδες του ενός πίνακα χρησιμοποιώντας το όνομα του πίνακα και τον αστερίσκο * και τιμές συγκεκριμένων γνωρισμάτων από τον άλλο δηλαδή: SELECT paragelies.par_id, paragelies.par_date, pelates.* FROM paragelies RIGHT JOIN pelates ON paragelies.pel_id =pelates.pel_id ; 28

8. ΣΥΝΟΨΗ & ΣΥΝΑΡΤΗΣΕΙΣ ΤΗΣ MySQL Η σύνοψη (ή αλλιώς ομαδοποίηση) ομαδοποιεί πλειάδες μιας σχέσης με βάση κοινές τιμές σε ένα ή περισσότερα γνωρίσματα. Από την ομαδοποίηση προκύπτουν υποσύνολα πλειάδων υπό την μορφή δυναμικού πίνακα. Σε κάθε ένα από τα υποσύνολα των πλειάδων που προκύπτουν μπορεί να εφαρμοστεί μια συνάρτηση συνάθροισης (aggregating function), όπως η καταμέτρηση του πλήθους ή ο υπολογισμός του μέσου όρου ή η επιστροφή της μικρότερης τιμής κλπ. ΣΥΝΑΡΤΗΣΕΙΣ ΟΜΑΔΟΠΟΙΗΣΗΣ MIN(στήλη) επιστρέφει την μικρότερη τιμή από μια στήλη. MAX(στήλη) επιστρέφει την μεγαλύτερη τιμή από μια στήλη. COUNT(στήλη) υπολογίζει τον αριθμό των γραμμών. SUM(στήλη) επιστρέφει το άθροισμα όλων των τιμών μιας στήλης. AVG(στήλη) επιστρέφει το μέσο όρο των τιμών μιας στήλης. ΑΛΛΕΣ ΣΥΝΑΡΤΗΣΕΙΣ Εκτός από τις συναρτήσεις συνάθροισης χρησιμοποιούμε συναρτήσεις μορφοποίησης κειμένου, αριθμητικές συναρτήσεις, συναρτήσεις μορφοποίησης ημερομηνίας και ώρας. 29

ΣΥΝΑΡΤΗΣΕΙΣ ΚΕΙΜΕΝΟΥ. Για να χρησιμοποιήσουμε μια συνάρτηση πρέπει να καθορίσουμε σε ποιες στήλες θα την εφαρμόσουμε. SELECT FUNCTION(στήλη) FROM πίνακας; Για να καθορίσουμε πολλές στήλες γράφουμε: SELECT στήλη1, FUNCTION(στήλη2), στήλη3 FROM πίνακας; Μερικές συναρτήσεις κειμένου: SUBSTRING(στήλη ή string, αρχή, μήκος) επιστρέφει ένα τμήμα ενός αλφαριθμητικού ή μιας στήλης, με χαρακτήρα αρχής και το πλήθος των επιστρεφομένων χαρακτήρων. LENGTH(στήλη ή string) επιστρέφει το μήκος του αλφαριθμητικού που είναι αποθηκευμένο στην στήλη. UPPER(στήλη ή string) μετατρέπει τους χαρακτήρες του αλφαριθμητικού σε κεφαλαία. LOWER(στήλη ή string) μετατρέπει τους χαρακτήρες του αλφαριθμητικού σε πεζά. 30

ΣΥΝΕΝΩΣΗ ΚΑΙ ΨΕΥΔΩΝΥΜΑ Συνένωση τιμών κάνουμε με την συνάρτηση CONCAT() η οποία συνοδεύεται με το ψευδώνυμο (alias). Η CONCAT() συνενώνει τιμές στηλών άρα εφαρμόζεται σε πάνω από δύο στήλες με κόμματα ανάμεσα τους. Την συνάρτηση ακολουθεί ο όρος AS και το ψευδώνυμο. SELECT CONCAT(στήλη1,, στήλη2) AS ψευδώνυμο FROM πίνακας; Εναλλακτικά μπορούμε να δώσουμε ψευδώνυμο και στον πίνακα. SELECT CONCAT(στήλη1,, στήλη2) AS ψευδώνυμο FROM πίνακας AS ψευδώνυμο_πίνακα; ΑΡΙΘΜΗΤΙΚΕΣ ΣΥΝΑΡΤΗΣΕΙΣ FORMAT(αριθμός ή στήλη, x) επιστρέφει το ποσό ή το περιεχόμενο μιας στήλης αριθμών μορφοποιημένο με x δεκαδικές θέσεις και κόμματα ανά 3 ψηφία. ROUND(αριθμός ή στήλη,x) επιστρέφει το ποσό ή το περιεχόμενο μιας στήλης αριθμών στρογγυλοποιημένο σε x δεκαδικές θέσεις. MOD(x, y) επιστρέφει το υπόλοιπο της διαίρεσης του x με το y. Το x και το y μπορεί να είναι στήλες ή αριθμοί ή και τα δύο. POW(x, y) επιστρέφει την τιμή του x υψωμένη στην δύναμη του y. 31

ΣΥΝΑΡΤΗΣΕΙΣ ΗΜΕΡΟΜΗΝΙΑΣ ΚΑΙ ΩΡΑΣ. MONTH(στήλη) επιστρέφει μόνο τον αριθμό του μήνα. DATE(στήλη) επιστρέφει μόνο τον αριθμό της ημερομηνίας. DATE_ADD(στήλη, INTERVAL x type) προσθέτει στις ημερομηνίες της στήλης ένα διάστημα x μονάδες τύπου ημέρας ή μήνα ή έτους. DATE_SUB(στήλη, INTERVAL x type) αφαιρεί στις ημερομηνίες της στήλης ένα διάστημα x μονάδες τύπου ημέρας ή μήνα ή έτους. CURDATE() επιστρέφει την τρέχουσα ημερομηνία. CUETIME() επιστρέφει την τρέχουσα ώρα. Παράδειγμα 1 Πρόσθεσε στην ημερομηνία 2 ώρες. DATE_ADD(date, INTERVAL 2 HOUR) Παράδειγμα 2 Αφαίρεσε από την ημερομηνία 3 μέρες. DATE_SUB(date, INTERVAL 3 DAY) 32

ΜΟΡΦΟΠΟΙΗΣΗ ΗΜΕΡΟΜΗΝΙΑΣ ΚΑΙ ΩΡΑΣ DATE_FORMAT Μορφοποίηση ημερομηνίας και ώρας. DATE_FORMAT(στήλη, μορφοποίηση ) TIME_FORMAT Μορφοποίηση μόνο της ώρας γίνεται με την συνάρτηση TIME_FORMAT(στήλη, μορφοποίηση ) Μορφοποίηση με την χρήση του συμβόλου % και συγκεκριμένους τελεστές που φαίνονται πιο κάτω. Τελεστής Είδος μορφοποίησης %e ημέρα του μήνα 1-31 %a σύντμηση ονόματος ημέρας Κυρ-Σαβ %b σύντμηση ονόματος μήνα Ιαν-Δεκ %W όνομα ημέρας %d ημέρα του μήνα διψήφια 01-31 %D ημέρα με επίθεμα 1 st 31 st %m αριθμός μήνα διψήφιος 01-12 %M όνομα μήνα Ιανουάριος-Δεκέμβριος %Y έτος τετραψήφιο %y έτος διψήφιο 33

Άλλες χρήσιμες συναρτήσεις. DISTINCT(στήλη) χρησιμοποιείται με τον όρο GROUP BY για να επιστρέψει ο αριθμός των μοναδικών εγγραφών ανά κατηγορία. SELECT DATABASE() μας επιστρέφει το όνομα της βάσης που χρησιμοποιείται εκείνη την στιγμή. SELECT USER() επιστρέφει το όνομα του χρήστη. 34

9. ΠΡΟΒΟΛΕΣ (views) Μια προβολή είναι απλώς ένας ειδικός τύπος πίνακα, που συνήθως βασίζεται στη δομή και τα δεδομένα των τυπικών πινάκων. Για παράδειγμα, στη βάση δεδομένων timologisi, συχνά πρέπει να βλέπουμε το συνολικό ποσό με το οποίο έχει τιμολογηθεί κάθε πελάτης. Έχουμε τη δυνατότητα να δημιουργήσουμε μια προβολή που να απεικονίζει μόνο αυτές τις πληροφορίες. Αυτό μας κάνει να σκεφτείτε ότι η προβολή είναι μια στατική εμφάνιση μερικών δεδομένων, ένα στιγμιότυπο που λαμβάνεται κατά το χρόνο δημιουργίας της προβολής. Αυτό όμως δεν ισχύει. Αν ορίσουμε μια προβολή που βασίζεται στην επιλογή δεδομένων από άλλους πίνακες, όταν ενημερωθούν αυτοί οι πίνακες θα ενημερωθούν και τα δεδομένα της προβολής. ΔΗΜΙΟΥΡΓΙΑ ΠΡΟΒΟΛΗΣ Για να δημιουργήσουμε μια προβολή χρησιμοποιούμε τη εντολή CREATE VIEW. Η σύνταξη είναι η εξής: CREATE VIEW όνομα_προβολής AS ερώτημα_επιλογής; Η νέα προβολή δημιουργείται με ονόματα στηλών τα οποία αντιστοιχίζονται με αυτά που ανακτώνται από την εντολή SELECT. 35

Παράδειγμα: CREATE VIEW stoixeia_pelath AS SELECT first name, last_name, phone FROM pelates; Η προβολή stoixeia_pelath θα περιέχει τρεις στήλες, με ονόματα first_name, last_name, και phone του πίνακα pelates. Για να δούμε πως δημιουργήθηκε μια προβολή εφαρμόζουμε την εντολή: SHOW CREATE VIEW όνομα_προβολής; ΤΡΟΠΟΠΟΙΗΣΗ Η ΔΙΑΓΡΑΦΗ ΠΡΟΒΟΛΗΣ Όταν δημιουργήσουμε μια προβολή, υπάρχουν δύο τρόποι τροποποίησης του ορισμού της. Η πρώτη μέθοδος είναι ή χρήση της σύνταξης CREATE VIEW, με τον προστιθέμενο όρο OR REPLACE: CREATE OR REPLACE VIEW όνομα_προβολής AS ερώτημα_select; Για να εκτελέσουμε αυτή την εντολή πρέπει να έχουμε προνόμια διαγραφής προβολών DROP VIEW (επειδή διαγράφεται η προβολή και μετά δημιουργείται μια νέα με το ίδιο όνομα). 36

Η δεύτερη μέθοδος είναι η χρήση μιας εντολής ΑLTER VIEW. Αυτή μοιάζει αρκετά με την εντολή CREATE VIEW: ALTER VIEW όνομα_προβολής AS ερώτημα_select; Αν δεν χρειαζόμαστε πλέον μια προβολή, μπορούμε να τη διαγράψουμε χρησιμοποιώντας την εντολή DROP VIEW όνομα,προβολής; Για να πάρουμε πρόσθετα μέτρα ασφαλείας, έχουμε τη δυνατότητα προσθήκης του όρου IF EXISTS: DROP VIEW IF EXISTS όνομα_προβολής; Σημ. Επειδή τα δεδομένα στις περισσότερες προβολές βασίζονται σε δεδομένα που αποθηκεύονται σε πραγματικούς πίνακες, όταν χρειάζεται θα πρέπει να αλλάζουμε τα δεδομένα στους υποκείμενους πίνακες και όχι στην προβολή. 37

ΒΙΒΛΙΟΓΡΑΦΙΑ Εισαγωγή στη MySQL δεύτερη Αμερικάνικη έκδοση Larry Ullman - Εκδόσεις Κλειδάριθμος 2007. Θεμελιώδεις Αρχές Συστημάτων Βάσεων Δεδομένων Τόμος 1&2 - Elmasri Ramez - Navathe Shamkant B. - Δίαυλος ΑΕ Εκδόσεις Βιβλίων 2007. Βάσεις Δεδομένων και SQL μια πρακτική προσέγγιση - Α. Σταυρακούδης - Εκδόσεις Κλειδάριθμος 2010. Μαθήματα Βάσεων Δεδομένων - Βασίλειος Βερύκιος - Εκδόσεις Τζιόλα & Υιοί Α.Ε. 2014. 38