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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Περιεχόμενα. Κεφάλαιο 1 Εισαγωγή στην Access Κεφάλαιο 2 Χειρισμός πινάκων... 27

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

Ενότητα. Επεξεργασία πινάκων

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

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

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο)

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

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

Σχεδιασμός των Πινάκων μίας Βάσης Δεδομένων

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

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

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

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

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

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

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

Περιεχόμενα. Μέρος 1: Βασικές έννοιες Πληροφορικής και επικοινωνιών Μέρος 2: Χρήση υπολογιστή και διαχείριση αρχείων Πρόλογος...

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

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

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

Ακαδημαϊκό Έτος , Χειμερινό Εξάμηνο Μάθημα: Εργαστήριο «Πληροφορική Υγείας» ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS

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

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

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

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

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

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

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

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

MYSQL 2. Διδάσκοντες: Π. Αγγελάτος, Δ. Ζήνδρος Επιμέλεια διαφανειών: Δ. Ζήνδρος Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών

ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Η/Υ Ακαδημαϊκό έτος ΤΕΤΡΑΔΙΟ ΕΡΓΑΣΤΗΡΙΟΥ #4

Λίγα λόγια από το συγγραφέα...7

Περιεχόμενα. 1 Tο βιβλίο "με μια ματιά" Εισαγωγή στη Microsoft Access Γνωριμία με τις βάσεις δεδομένων της Access...

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 5: SQL (Απλή SELECT) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι

DELETE, UPDATE, INSERT.

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

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

DELETE, UPDATE, INSERT

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

databases linux - terminal (linux / windows terminal)

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

1 / 97

TEC410 Ανάπτυξη Δικτυακών Τόπων (Δ εξάμηνο)

1 / 87

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ACCESS

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

ΠΕΡΙΕΧΟΜΕΝΑ. Εισαγωγή Κεφάλαιο 1: Εγκατάσταση της MySQL Κεφάλαιο 2: Εκτέλεση της MySQL... 39


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

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

Προγραμματισμός Διαδικτύου Ασκήσεις Εργαστηρίου

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

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

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

Access 2. Φτιάχνοντας μια DB, πίνακες και εισαγωγή εξωτερικών δεδομένων

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

Διαγραφή Επιλέγετε Διαγραφή για να διαγράψετε μία ήδη υπάρχουσα διαδικασία εισαγωγής ASCII

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

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9α: Περιορισμοί (Constraints) Εναύσματα (Triggers) Ευαγγελίδης Γεώργιος Τμήμα Εφαρμοσμένης Πληροφορικής

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

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

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

Δομές Δεδομένων. Ενότητα 11: Τεχνικές Κατακερματισμού. Καθηγήτρια Μαρία Σατρατζέμη. Τμήμα Εφαρμοσμένης Πληροφορικής.

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

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

ΒΑΣΕΙΣ ΔΕΔΟΜΕΝΩΝ Ι. Ενότητα 9β: SQL (Διαχείριση εγγραφών, Όψεις, Περιορισμοί, Εναύσματα) Ευαγγελίδης Γεώργιος. Τμήμα Εφαρμοσμένης Πληροφορικής

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

Ανοικτό Ψηφιακό Μάθημα για την κατάρτιση του προσωπικού υποστήριξης ανάπτυξης ψηφιακών μαθημάτων

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

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

a. Επιλέγουμε τις γραμμές προς διαγραφή a. Επιλέγουμε τις στήλες προς διαγραφή a. Γράφουμε σε μια στήλη μια σειρά από αριθμούς ή αλφαριθμητικά

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

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

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

Εργαστήριο 9. Προγραμματιστικές Εφαρμογές στο Διαδίκτυο. Στόχος. Προετοιμασία περιβάλλοντος εργασίας

ΕΡΓΑΣΤΗΡΙΟ ΠΛΗΡΟΦΟΡΙΚΗ I. 3o ΕΡΓΑΣΤΗΡΙΟ ΕΠΕΞΕΡΓΑΣΙΑ ΜΕ ΤΟ WORD

Εφαρμογές Πληροφορικής στην Τοπογραφία 8η Ενότητα - Scripting στο AutoCAD Παραδείγματα

Προγραμματισμός Υπολογιστών & Υπολογιστική Φυσική

Υπολογιστικά Συστήματα

Transcript:

TEC610 (ΣΤ εξάμηνο) Διδάσκων: Ανδρέας Γιαννακουλόπουλος Εαρινό εξάμηνο

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

Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons 2

MySQL - SQL 2

1. MYSQL Η MySQL είναι η πιο δημοφιλής εφαρμογή ανοιχτού κώδικα για τη διαχείριση βάσεων δεδομένων. Το λογισμικό της MySQL περιλαμβάνει το διακομιστή βάσης δεδομένων (όπου αποθηκεύονται τα δεδομένα), διάφορες εφαρμογές πελάτη (για τη αλληλεπίδραση με τη βάση δεδομένων) και αρκετά βοηθητικά προγράμματα. 3

1.1 Ονομασία Στοιχείων Βάσης Τη σχεδίαση της βάσης δεδομένων καθορίζει ο σκοπός της εφαρμογής. Κατά τη δημιουργία βάσεων δεδομένων και πινάκων θα πρέπει να χρησιμοποιείτε ονόματα (αναγνωριστικά identifiers) που να είναι περιγραφικά και σαφή. Θα πρέπει να περιέχουν μόνο γράμματα, αριθμούς και τον χαρακτήρα της υπογράμμισης (ΟΧΙ κενά διαστήματα). Δεν πρέπει να είναι ίδια με υπάρχουσες λέξεις κλειδιά. Πρέπει να τα χειρίζεστε με διάκριση μεταξύ πεζών και κεφαλαίων γραμμάτων. Δεν επιτρέπεται να είναι μεγαλύτερα από 64 χαρακτήρες. Πρέπει να είναι μοναδικά μέσα στην εμβέλειά τους. 4

συνέχεια Από τον τελευταίο κανόνα προκύπτει ότι ένας πίνακας δεν μπορεί να έχει δυο στήλες (πεδία) με το ίδιο όνομα και μια βάση δεδομένων δεν μπορεί να έχει δυο πίνακες με το ίδιο όνομα. Μπορείτε βέβαια να δώσετε το ίδιο όνομα στήλης σε δυο διαφορετικούς πίνακες της ίδιας βάσης δεδομένων. Το όριο μήκους για τα ονόματα των βάσεων δεδομένων, των πινάκων και των στηλών είναι 64 byte. 5

1.1.1 Ονομάστε ένα στοιχείο Βάσης Δεδομένων Καθορίστε το όνομα της βάσης δεδομένων αφού πρώτα βεβαιωθείτε ότι το όνομα της βάσης είναι μοναδικό στο διακομιστή MySQL. Καθορίστε τα ονόματα των πινάκων τα οποία πρέπει να είναι μοναδικά στη βάση δεδομένων. Καθορίστε τα ονόματα των στηλών (πεδίων) κάθε πίνακα. 6

1.2 Επιλογή Τύπων Στηλών Αφού καθορίσετε όλους τους πίνακες και τις στήλες που θα χρειαστεί η βάση δεδομένων σας, πρέπει να προσδιορίσετε τον τύπο δεδομένων της κάθε στήλης. Υπάρχουν τρεις κύριοι τύποι δεδομένων 1. Κείμενο (δηλαδή, συμβολοσειρές) 2. Αριθμοί 3. Ημερομηνίες και ώρες Κάθε τύπος έχει έναν αριθμό παραλλαγών που μπορείτε να χρησιμοποιήσετε. Η σωστή επιλογή τύπων για τις στήλες όχι μόνο καθορίζει τι πληροφορίες θα αποθηκεύονται σε αυτές και πώς αλλά επηρεάζει και τη συνολική απόδοση της βάσης δεδομένων. 7

συνέχεια Πολλοί από τους τύπους δέχονται μια προαιρετική παράμετρο «μήκος» που περιορίζει το μέγεθός τους. Οι διάφοροι τύποι δεδομένων παρουσιάζουν διαφορετικές συμπεριφορές. Τα πεδία ημερομηνίας DATE και ώρας TIME συνήθως τα χρησιμοποιείτε χωρίς τροποποίηση. Οι τύποι ENUM και SET σας επιτρέπουν να ορίσετε μια σειρά αποδεκτών τιμών για τη στήλη. Σε πεδίο τύπου ENUM μπορεί να αποθηκευτεί μια μόνο τιμή από πολλές χιλιάδες πιθανές και σε ένα πεδίο τύπου SET μπορούν να αποθηκευτούν από μια έως όλες οι 64 πιθανές τιμές. 8

συνέχεια 9

1.2.1 Διαλέξτε Τύπους Στηλών Αρχικά πρέπει να καθορίσετε αν η στήλη θα περιέχει κείμενο, αριθμό ημερομηνία ή ώρα. Στη συνέχεια πρέπει να επιλέξετε τον πιο κατάλληλο δευτερεύοντα τύπο για κάθε στήλη. Τέλος πρέπει να ορίσετε το μέγιστο μήκος για τις στήλες κειμένου. Το μέγεθος κάθε πεδίου πρέπει να περιορίζεται στο μικρότερο δυνατό, με βάση τη μέγιστη πιθανή τιμή εισόδου. 10

1.2.2 CHAR και VARCHAR Σε αυτούς τους δυο τύπους δεδομένων αποθηκεύονται συμβολοσειρές και μπορείτε να ορίσετε μέγιστο μήκος. Βασική διαφορά τους είναι ότι τα δεδομένα τύπου CHAR αποθηκεύονται ως συμβολοσειρές με το πλήρες μήκος στήλης ενώ τα δεδομένα τύπου VARCHAR καταλαμβάνουν χώρο ίσο με το μήκος της ίδιας της συμβολοσειράς. Αν ένα πεδίο συμβολοσειράς θα έχει πάντα σταθερό μήκος χρησιμοποιείστε τον τύπο CHAR αλλιώς χρησιμοποιήστε τον τύπο VARCHAR. 11

1.3 Άλλες Ιδιότητες Στηλών Κάθε στήλη ανεξάρτητα από τον τύπο της μπορεί να οριστεί ως NOT NULL. Η τιμή NULL στις βάσεις δεδομένων και στον προγραμματισμό σημαίνει ότι το πεδίο δεν έχει τιμή. Στην ιδανική περίπτωση σε μια σωστά σχεδιασμένη βάση δεδομένων, κάθε στήλη κάθε γραμμής σε κάθε πίνακα πρέπει να έχει τιμή. Όταν δημιουργείτε έναν πίνακα μπορείτε επίσης να ορίσετε μια προεπιλεγμένη τιμή για οποιαδήποτε στήλη ανεξάρτητα από τον τύπο της. Αν μια στήλη δεν έχει προεπιλεγμένη τιμή και κατά την προσθήκη μιας νέας εγγραφής δεν καθοριστεί κάποια στο αντίστοιχο πεδίο θα δοθεί η τιμή NULL. 12

συνέχεια Οι αριθμητικοί τύποι μπορούν να δηλωθούν ως UNSIGNED (απρόσημοι), πράγμα που περιορίζει τα αποθηκευμένα δεδομένα μόνο σε θετικούς αριθμούς και μηδέν. Οι αριθμητικοί τύποι μπορούν να οριστούν και ως ZEROFILL όπου ο επιπλέον χώρος θα γεμίζει με μηδενικά. Τέλος κατά τη σχεδίαση μιας βάσης θα πρέπει να σκεφτείτε αν θα δημιουργήσετε ευρετήρια, αν θα προσθέσετε κλειδιά και αν θα χρησιμοποιήσετε την ιδιότητα AUTO_INCREMENT. 13

1.3.1 Ολοκληρώστε τον Ορισμό των Στηλών Καθορίστε το πρωτεύον κλειδί (primary key). Είναι σχεδόν πάντα αριθμός και χαρακτηρίζει μοναδικά μια εγγραφή. Στο παράδειγμα που ακολουθεί το πρωτεύον κλειδί είναι το πεδίο user_id: ένας αυθαίρετος αριθμός που χρησιμοποιείται για την αναφορά σε μια γραμμή δεδομένων (εγγραφή). Καθορίστε ποια στήλη δε θα μπορεί να έχει τιμή NULL. Αν δεν πρόκειται να αποθηκεύσετε αρνητικούς αριθμούς, δηλώστε όλους τους αριθμητικούς τύπους ως UNSIGNED. Αν θέλετε καθορίστε προεπιλεγμένη τιμή για κάποιες από τις στήλες. Επιβεβαιώστε τον τελικό ορισμό των στηλών. 14

συνέχεια 15

1.4 Προσπέλαση της MySQL Για να δημιουργήσετε πίνακες, να προσθέσετε εγγραφές και να αναζητήσετε πληροφορίες σε μια βάση δεδομένων κάποια εφαρμογή πελάτη (client) πρέπει να επικοινωνήσει με το διακομιστή MySQL. Οι από αυτές τις εφαρμογές που θα εστιάσουμε είναι η mysql client και η phpmyamdin. 16

1.4.1 Χρήση του πελάτη mysql Ο mysql client εγκαθίσταται με το υπόλοιπο λογισμικό της MySQL. Στον mysql client κάθε εντολή (διαταγή SQL) πρέπει να τερματίζεται με ελληνικό ερωτηματικό. Αυτό ενημερώνει τον client ότι το ερώτημα έχει ολοκληρωθεί και πρέπει να εκτελεστεί. Η χρήση του ελληνικού ερωτηματικού σας επιτρέπει να επεκτείνετε την εντολή SQL σε πολλές γραμμές. Το ελληνικό ερωτηματικό δεν αποτελεί μέρος της ίδιας της SQL. Στο παράδειγμα που ακολουθεί θα μάθετε να ξεκινάτε τον mysql client να επιλέγετε μια βάση δεδομένων προς χρήση και να τερματίζετε τον client. 17

συνέχεια 1.Προσπελάστε το σύστημά σας από μια διασύνδεση γραμμής διαταγών. Start > Programs > MySQL > MySQL Server 5.0 > MySQL Command Line Client. 2.Καλέστε τον mysql client με την κατάλληλη διαταγη. 3.Πληκτρολογήστε τον κωδικό πρόσβασης. Αν δώσετε τα σωστά στοιχεία το εμφανίζεται. 18

συνέχεια 4.Επιλέξτε τη βάση δεδομένων που θέλετε να χρησιμοποιήσετε. 5.Τέλος για να φύγετε κλείστε τον mysql client είτε με τη διαταγή quit ή exit. 19

1.4.2 Χρήση του phpmyadmin Το phpmyadmin είναι μια από τις καλύτερες και δημοφιλέστερες εφαρμογές PHP. 1.Ξεκινήστε το phpmyadmin μέσω του φυλλομετρητή ιστού σας. 20

συνέχεια 2.Αν χρειάζεται και έχετε τη δυνατότητα επιλέξτε από το μενού στα αριστερά μια βάση δεδομένων. 3.Χρησιμοποιείστε την καρτέλα SQL ή το παράθυρο ερωτήματος SQL για να πληκτρολογήσετε διαταγές της SQL. 21

2. Εισαγωγή στην SQL Η SQL είναι ένα σύνολο ειδικών λέξεων που χρησιμεύουν αποκλειστικά για την αλληλεπίδραση με βάσεις δεδομένων. Στη συνέχεια θα δείτε όλα όσα χρειάζεστε για να δημιουργήσετε πίνακες, να τους συμπληρώσετε και να εκτελέσετε άλλα βασικά ερωτήματα. Σε κάθε διαταγή της SQL: Δεν κλείνουμε τις αριθμητικές τιμές σε εισαγωγικά Κλείνουμε πάντα σε εισαγωγικά τις τιμές συμβολοσειρών Κλείνουμε πάντα σε εισαγωγικά τις τιμές ημερομηνίας και ώρας. Δεν κλείνουμε σε εισαγωγικά τις συναρτήσεις και τη λέξη NULL. 22

2.1 Δημιουργία βάσεων δεδομένων και πινάκων Η πρώτη λογική χρήση της SQL είναι να δημιουργήσουμε μια βάση δεδομένων και αυτό γίνεται με την παρακάτω σύνταξη: CREATE DATABASE όνομα_βάσης_δεδομένων Ο όρος CREATE χρησιμοποιείται και για τη δημιουργία πινάκων: CREATE TABLE όνομα_πίνακα ( στήλη 1 περιγραφή, στήλη 2 περιγραφή ) Η SQL δεν κάνει διάκριση μεταξύ πεζών και κεφαλαίων γραμμάτων. 23

2.1.1 Δημιουργήστε βάσεις δεδομένων και πίνακες 1.Προσπελάστε τη MySQL είτε με το mysql client είτε με το phpmyadmin. 2.Δημιουργήστε και επιλέξτε τη νέα βάση δεδομένων: CREATE DATABASE sitename; USE sitename; Η πρώτη γραμμή δημιουργεί τη βάση δεδομένων και η δεύτερη ενημερώνει τη MySQL ότι θέλετε να χρησιμοποιήσετε τη συγκεκριμένη βάση δεδομένων. 24

συνέχεια 3.Δημιουργήστε τον πίνακα users που έχουμε δει σε προηγούμενο παράδειγμα. 25

συνέχεια 4.Βεβαιωθείτε ότι ο πίνακας δημιουργήθηκε SHOW TABLES; SHOW COLUMNS FROM users; Η διαταγή SHOW εμφανίζει τους πίνακες μιας βάσης δεδομένων ή τα ονόματα και τους τύπους των στηλών ενός πίνακα. 26

2.2 Προσθήκη Εγγράφων Αφού δημιουργήσετε τη βάση δεδομένων και τους πίνακές της μπορείτε να τους συμπληρώνετε με τη διαταγή INSERT. Υπάρχουν δυο τρόποι για να γράψετε ένα ερώτημα εισαγωγής INSERT: 1. INSERT INTO όνομα_πίνακα (στήλη1, στήλη2 ) VALUES (τιμή 1, τιμή2 ) INSERT INTO όνομα_πίνακα (στήλη4, στήλη8) VALUES (τιμήx, τιμήy) με αυτόν τον τρόπο μπορείτε να προσθέτετε γραμμές εγγράφων, συμπληρώνοντας μόνο όσες στήλες χρειάζεται. 2.INSERT INTO όνομα_πίνακαvalues (τιμή1, NULL, τιμή3, τιμή4,.) 27

συνέχεια Με αυτή τη μέθοδο δεν καθορίζουμε καθόλου στήλες αλλά συμπεριλαμβάνουμε τιμές για όλες έστω και αν αυτή η τιμή είναι η NULL. Έτσι αν υπάρχουν 6 στήλες πρέπει να οριστούν 6 τιμές αλλιώς θα υπάρξει σφάλμα. 28

2.2.1 Προσθέστε Δεδομένα σε έναν Πίνακα 1.Προσθέστε στον πίνακα users μια γραμμή δεδομένων δηλώνοντας ποιες στήλες θα συμπεριληφθούν. 2.Προσθέστε μια γραμμή δεδομένων στον πίνακα users χωρίς να καθορίσετε τις στήλες. 29

συνέχεια 3.Προσθέστε διάφορες εγγραφές στον πίνακα users. 4.Επαναλάβετε τα βήματα 1 και 2 για να συμπληρώσετε τελείως τον πίνακα users. 30

2.3 Επιλογή Δεδομένων Τώρα που η βάση δεδομένων περιέχει κάποιες εγγραφές μπορείτε να ανακτήσετε κάποιες τις αποθηκευμένες πληροφορίες με την πιο συνηθισμένη από όλες τις διαταγές της SQL τη διαταγή SELECT. SELECT στήλες FROM πίνακας SELECT * FROM όνομα_πίνακα (ο αστερίσκος σημαίνει ότι θέλετε να εμφανίσετε όλες τις στήλες). Θα μπορούσατε να καθορίσετε ποιες στήλες θέλετε να επιστραφούν διαχωρίζοντάς τες με κόμματα. SELECT στήλη1, στήλη3 FROM όνομα_πίνακα. 31

συνέχεια Η ρητή επιλογή συγκεκριμένων στηλών έχει ορισμένα πλεονεκτήματα: 1. Η απόδοση: δεν υπάρχει λόγος να επιστρέφετε στήλες που δεν θα χρησιμοποιήσετε. 2. Η σειρά εμφάνισης: μπορείτε να εμφανίσετε τις στήλες με διαφορετική σειρά από αυτή που έχουν στον πίνακα. 3. Η επιλογή συγκεκριμένων στηλών σας επιτρέπει να χειριστείτε τα δεδομένα τους με συναρτήσεις. Η σειρά των στηλών στην εντολή SELECT καθορίζει και τη σειρά με την οποία θα εμφανιστούν τα δεδομένα. Με τη SELECT μπορείτε να ανακτήσετε την ίδια στήλη πολλές φορές και να χειρίζεστε τα δεδομένα της με διαφορετικούς τρόπους. 32

2.3.1 Επιλέξτε Δεδομένα από έναν Πίνακα 1.Ανακτήστε όλα τα δεδομένα από τον πίνακα users. SELECT * FROM users; 33

συνέχεια 2. Ανακτήστε από τον πίνακα users μόνο το όνομα και το επώνυμο. SELECT first_name, last_name FROM users; 34

2.4 Χρήση Συνθηκών Όταν χρειάζεται να περιορίσετε τις εγγραφές που θα επιστραφούν μπορείτε να το κάνετε προσθέτοντας συνθήκες στα ερωτήματα SELECT. Οι συνθήκες αυτές χρησιμοποιούν τον όρο WHERE. SELECT στήλες FROM πίνακας WHERE συνθήκες Παρακάτω μπορείτε να δείτε τους πιο συνηθισμένους τελεστές. 35

2.4.1 Χρησιμοποιήστε Συνθήκες 1. Επιλέξτε όλους τους χρήστες με το επώνυμο Simpson. SELECT * FROM users WHERE last_name = Simpson ; Αυτό το ερώτημα επιστρέφει όλες τις στήλες των γραμμών οι οποίες στο last_name έχουν την τιμή Simpson. 36

συνέχεια 2. Επιλέξτε το όνομα των χρηστών οι οποίοι έχουν επώνυμο Simpson SELECT first_name FROM users WHERE last_name = Simpson ; 3. Επιλέξτε όλες τις στήλες κάθε εγγραφής του πίνακα users που δεν περιέχουν διεύθυνση ηλ. Ταχυδρομείου SELECT * FROM users WHERE email IS NULL; Αυτό το ερώτημα δεν επιστρέφει εγγραφές επειδή η στήλη της διεύθυνσης ηλ. Ταχυδρομείου δεν μπορεί να έχει τιμή NULL. Το ερώτημα λειτούργησε απλά δε βρέθηκαν εγγραφές που να ικανοποιούν τη συνθήκη. 37

συνέχεια 4. Επιλέξτε το αναγνωριστικό, το μικρό όνομα και το επώνυμο χρήστη όλων των εγγραφών που έχουν κωδικό πρόσβασης mypass SELECT user_id, first_name, last_name FROM users WHERE pass = SHA1( mypass ); 5. Επιλέξτε τα ονόματα των χρηστών με αναγνωριστικό (user_id) μικρότερο από 10 ή μεγαλύτερο από 20. SELECT first_name, last_name FROM users WHERE (user_id < 10 ) OR (user_id > 20); Το ίδιο ερώτημα μπορεί να γραφεί και SELECT first_name, last_name FROM users WHERE user_id NOT BETWEEN 10 and 20; 38

2.5 Χρήση των Όρων LIKE και NOT LIKE Οι όροι LIKE και NOT LIKE χρησιμοποιούνται, κυρίως με συμβολοσειρές, σε συνδυασμό με δυο χαρακτήρες μπαλαντέρ: το χαρακτήρα υπογράμμισης (_), που αντιπροσωπεύει ένα μόνο χαρακτήρα και το σύμβολο του ποσοστού (%) που αντιπροσωπεύει κανέναν, έναν ή περισσότερους χαρακτήρες. Παράδειγμα: Αν θέλετε να ελέγξετε αν το επώνυμο κάποιου χρήστη μοιάζει με ένα από Smith, Smiths ή Smithson τότε: SELECT * FROM users WHERE last_name LIKE Smith% Θα επιστρέψει όλες τις γραμμές που στο πεδίο last_name έχουν τιμή που ξεκινάει με τη συμβολοσειρά Smith. 39

συνέχεια 1. Επιλέξτε όλες τις εγγραφές των οποίων το επώνυμο ξεκινάει με τη συμβολοσειρά Bank SELECT * FROM users WHERE last_name LIKE Bank% ; 2. Επιλέξτε το μικρό όνομα από κάθε εγγραφή στην οποία η διεύθυνση ηλ. Ταχυδρομείου δεν έχει μορφή κάτι@authors.com. SELECT first_name, last_name FROM users WHERE email NOT LIKE %@authors.com ; 40

2.6 Ταξινόμηση των Αποτελεσμάτων Εξ ορισμού τα αποτελέσματα ενός ερωτήματος SELECT εμφανίζονται σε τυχαία σειρά. Για να ταξινομηθούν σε λογική σειρά χρησιμοποιήστε τον όρο ORDER BY SELECT * FROM όνομα_πίνακα ORDR BY στήλη Η προεπιλεγμένη σειρά ταξινόμησης είναι η αύξουσα (ASC), αν θέλετε μπορείτε να καθορίσετε και φθίνουσα (DESC). SELECT * FROM όνομα_πίνακα ORDR BY στήλη DESC Μπορείτε να ταξινομήσετε ακόμα και σύμφωνα με πολλές στήλες. SELECT * FROM όνομα_πίνακα ORDR BY στήλη1, στήλη2 41

συνέχεια Μπορείτε να συνδυάσετε τον όρο ORDER BY με τον όρο WHERE ή άλλους. Σε αυτή την περίπτωση, τοποθετήστε τον όρο ORDER BY μετά από τις συνθήκες. SELECT * FROM όνομα_πίνακα WHERE συνθήκες ORDER BY στήλη. Αν η στήλη σύμφωνα με την οποία γίνεται η ταξινόμηση περιέχει τιμές NULL, αυτές θα εμφανιστούν πρώτες και στην αύξουσα και στη φθίνουσα ταξινόμηση. 42

συνέχεια 1. Εμφανίστε όλους τους χρήστες ταξινομημένους αλφαβητικά ως προς το επώνυμο. SELECT first_name, last_name FROM users ORDER BY last_name; 2. Εμφανίστε όλους τους χρήστες ταξινομημένους αλφαβητικά, πρώτα ως προς το επώνυμο και έπειτα ως προς το μικρό όνομα. SELECT first_name, last_name FROM users ORDER BY last_name ASC, first_name ASC; 3. Εμφανίστε όλους τους χρήστες που δεν έχουν επώνυμο Simpson, ταξινομημένους ως προς την ημερομηνία εγγραφής. SELECT * FROM users WHERE last_name!= Simpson ORDER BY registration_date DESC; 43

2.7 Περιορισμός των Αποτελεσμάτων Ένας άλλο όρος που μπορείτε να προσθέσετε στα περισσότερα ερωτήματα είναι ο όρος LIMIT (πάντα τελευταίος). Καθορίζει πόσες εγγραφές θα επιστραφούν. SELECT * FROM όνομα_πίνακα LIMIT x (δηλαδή εδώ θα επιστρέψουν x εγγραφές) Μπορείτε να ζητήσετε να επιστραφούν y εγγραφές ξεκινώντας από την εγγραφή x. SELECT * FROM όνομα_πίνακα LIMIT 10,10 (εδώ θα επιστρέψουν οι εγγραφές από 11 έως 20) Όπως και στους πίνακες η εγγραφή των αποτελεσμάτων του όρου LIMIT ξεκινάει από το 0 οπότε το 10 αντιστοιχεί στην ενδέκατη εγγραφή. 44

συνέχεια 1. Επιλέξτε τους 5 πιο πρόσφατα εγγεγραμμένους χρήστες. SELECT first_name, last_name FROM users ORDER BY registration_date DESC LIMIT 5; 2. Επιλέξτε το χρήστη που εγγράφηκε δεύτερος. SELECT first_name, last_name FROM users ORDER BY registration_date ASC LIMIT 1, 1; 45

2.8 Ενημέρωση Δεδομένων Είναι πιθανό να χρειαστεί να επεξεργαστείτε τις εγγραφές σας επειδή έγινε κάποιο λάθος στην καταχώρηση πληροφοριών ή επειδή κάποια δεδομένα άλλαξαν. Η σύνταξη για την ενημέρωση εγγραφών είναι UPDATE όνομα_πίνακα SET στήλη=τιμή Μπορείτε να τροποποιήσετε πολλές στήλες μαζί διαχωρίζοντας τη μια με την άλλη με κόμματα. UPDATE όνομα_πίνακα SET στήλη2=τιμήα, στήλη5=τιμήβ Χρησιμοποιώντας και το WHERE καθορίζετε ποιες γραμμές θα ενημερωθούν γιατί αλλιώς ενημερώνονται όλες. UPDATE όνομα_πίνακα SET στήλη2=τιμή WHERE στήλη5=τιμή. 46

συνέχεια Οι ενημερώσεις μαζί με τις διαγραφές είναι ένας από τους πιο σημαντικούς λόγους για να χρησιμοποιείτε πρωτεύον κλειδί. Η τιμή του πρωτεύοντος κλειδιού -που δεν πρέπει να αλλάζει ποτέ- μπορεί να αποτελεί σημείο αναφοράς στον όρο WHERE, ακόμα και αν πρόκειται να αλλάξει η τιμή όλων των άλλων πεδίων. Ενημερώστε μια εγγραφή: 1. Βρείτε το πρωτεύον κλειδί της εγγραφής που πρόκειται να ενημερώσετε. SELECT user_id FROM users WHERE first_name = Michael AND last_name = Chabon ; 47

συνέχεια 2. Ενημερώστε την εγγραφή (αλλαγή της διεύθυνσης ηλ. Ταχυδρομείου). Για να γίνει αυτό χρησιμοποιώ ένα ερώτημα ενημέρωσης UPDATE στο οποίο με το πρωτεύον κλειδί (user_id) καθορίζω ποια εγγραφή θα ενημερωθεί. UPDATE users SET email= mike@authors.com WHERE user_id = 18; 3. Βεβαιωθείτε ότι έγινε η αλλαγή SELECT * FROM users WHERE user_id=18; 48

2.9 Διαγραφή Δεδομένων Εκτός από την ενημέρωση υπαρχουσών εγγραφών μπορείτε να αφαιρέσετε τελείως μια εγγραφή από τη βάση δεδομένων. Για το σκοπό αυτό χρησιμοποιήστε τη διαταγή DELETE DELETE FROM όνομα_πίνακα Με αυτόν τον τρόπο θα διαγραφούν όλες οι εγγραφές του πίνακα. Όταν διαγράφεται μια εγγραφή δεν υπάρχει τρόπος να την επαναφέρετε. Χρησιμοποιώντας και το WHERE διαγράφετε μεμονωμένες εγγραφές. DELETE FROM όνομα_πίνακα WHERE συνθήκη. 49

συνέχεια Διαγράψτε μια εγγραφή: 1. Βρείτε το πρωτεύον κλειδί της εγγραφής που θα διαγράψετε. SELECT user_id FROM users WHERE first_name = Peter AND last_name = Tork ; 2. Δείτε εκ των προτέρων τι θα συμβεί όταν καλέσετε τη διαγραφή. SELECT * FROM users WHERE user_id = 8; 50

συνέχεια 3. Διαγράψτε την εγγραφή DELETE * FROM users WHERE user_id = 8 LIMIT 1; 4. Επαληθεύστε ότι έγινε η αλλαγή SELECT user_id, first_name, last_name FROM users ORDER BY user_id ASC; 51

2.10 Χρήση Συναρτήσεων Το ερώτημα που εφαρμόζει μια συνάρτηση στις τιμές μιας στήλης έχει τη μορφή SELECT ΣΥΝΑΡΤΗΣΗ(στήλη) FROM όνομα_πίνακα Το ερώτημα που εφαρμόζει μια συνάρτηση στις τιμές μιας στήλης και επιλέγει και κάποιες άλλες στήλες έχει μια από τις μορφές: SELECT *, ΣΥΝΑΡΤΗΣΗ(στήλη) FROM όνομα_πίνακα SELECT στήλη1, ΣΥΝΑΡΤΗΣΗ(στήλη2) στήλη3 FROM όνομα_πίνακα 52

συνέχεια Οι συναρτήσεις εφαρμόζονται συχνά σε αποθηκευμένα δεδομένα (στήλες) αλλά μπορούν να εφαρμοστούν και σε κυριολεκτικές τιμές. SELECT UPPER(first_name) FROM users SELECT UPPER( this string ) Παρόλο που στα ίδια τα ονόματα των συναρτήσεων δε γίνεται διάκριση μεταξύ πεζών και κεφαλαίων καλό είναι να γράφονται με κεφαλαία για να ξεχωρίζουν από τα ονόματα πινάκων και στηλών. Απαγορεύεται το κενό διάστημα ανάμεσα στο όνομα της συνάρτησης και την αριστερή παρένθεση. Όταν χρησιμοποιείτε συναρτήσεις για να μορφοποιήσετε τα επιστρεφόμενα δεδομένα συχνά πρέπει να χρησιμοποιείτε ψευδώνυμα (aliases). 53

2.10.1 Ψευδώνυμα Ψευδώνυμο (alias) είναι ένα συμβολικό όνομα που δίνουμε σε κάποιο στοιχείο ενός ερωτήματος. Εφαρμόζεται σε πίνακες, στήλες ή κλήσεις συναρτήσεων και χρησιμεύει ως συντόμευση για να αναφερθούμε σε κάτι. Τα ψευδώνυμα δημιουργούνται με τον όρο AS: SELECT registration_date AS reg FROM users Τα ψευδώνυμα είναι συμβολοσειρές στις οποίες γίνεται διάκριση πεζών-κεφαλαίων, περιέχουν ένα συνδυασμό γραμμάτων, αριθμών και χαρακτήρων υπογράμμισης και κανονικά έχουν μικρό μήκος. 54

2.10.2 Συναρτήσεις Κειμένου Η ομάδα συναρτήσεων που ακολουθούν είναι για το χειρισμό κειμένου. 55

συνέχεια Η συνάρτηση CONTACT() υλοποιεί τη συνένωση συμβολοσειρών. Η σύνταξη της συνένωσης απαιτεί να τοποθετήσετε μέσα σε παρενθέσεις τις διάφορες τιμές που θέλετε να συνενώσετε με τη σειρά και διαχωρισμένες με κόμματα. SELECT CINTACT(t1, t2) FROM όνομα_πίνακα Την CONTACT() μπορείτε να την εφαρμόσετε και σε στήλες καθώς μπορείτε να ενσωματώσετε και τιμές συμβολοσειρών μέσα σε εισαγωγικά. SELECT CONTACT(first_name,, last_name) FROM users 56

συνέχεια 1. Συνενώστε τα ονόματα χωρίς να χρησιμοποιήσετε ψευδώνυμο. SELECT CONTACT(last_name,,, first_name,,) FROM users; Αυτό το ερώτημα συνενώνει τα επώνυμα, ένα κόμμα, ένα κενό διάστημα και τα μικρά ονόματα των χρηστών σε μια συμβολοσειρά της μορφής επώνυμο, όνομα Όπως βλέπουμε και στην εικόνα αν δεν χρησιμοποιήσουμε ψευδώνυμο, ως επικεφαλίδα στα αποτελέσματα εμφανίζεται η κλήση της συνάρτησης. 57

συνέχεια 2. Συνενώστε τα ονόματα με τη χρήση ψευδωνύμου. SELECT CONTACT(last_name,,, first_name,,) AS Name FROM users ORDER BY Name; 3. Βρείτε το μεγαλύτερο επώνυμο SELECT LENGTH(last_name) AS L, last_name FROM users ORDER BY L DESC LIMIT 1; 58

2.10.3 Αριθμητικές Συναρτήσεις Εκτός από τους βασικούς μαθηματικούς τελεστές υπάρχουν περίπου δυο δεκάδες συναρτήσεις για μορφοποίηση και υπολογισμούς με αριθμούς. Μερικές από αυτές φαίνονται στον παρακάτω πίνακα. 59

συνέχεια Η συνάρτηση FORMAT() μετατρέπει έναν αριθμό σε πιο συμβατική μορφή. Για παράδειγμα αν έχει αποθηκευτεί το κόστος ενός αυτοκινήτου ως 20198.2, η συνάρτηση FORMAT(car_cost, 2) θα μετατρέψει τον αριθμό στην πιο συνηθισμένη μορφή 20,198.2. Η συνάρτηση ROUND() δέχεται μια τιμή και τη στρογγυλοποιεί στον καθοριζόμενο αριθμό δεκαδικών ψηφίων. Αν δεν ορίσετε δεκαδικά ψηφία η στρογγυλοποίηση γίνεται στον πλησιέστερο ακέραιο. Αν ορίσετε περισσότερα δεκαδικά ψηφία από αυτά που υπάρχουν στον αρχικό αριθμό οι κενές θέσεις συμπληρώνονται με μηδενικά. Η RAND() επιστρέφει τυχαίους αριθμούς, άρα και αποτελέσματα με τυχαία σειρά. 60

συνέχεια Χρησιμοποιείστε αριθμητικές συναρτήσεις 1. Εμφανίστε έναν αριθμό σε μορφή χρηματικού ποσού. SELECT CONCAT( $, FORMAT(5639.6, 2)) AS cost; Συνδυάζοντας τη συνάρτηση FORMAT() με την CONCAT(), μπορείτε να μετατρέψετε έναν αριθμό σε μορφή χρηματικού ποσού. 2. Ανακτήστε μια τυχαία διεύθυνση ηλ. Ταχυδρομείου από τον πίνακα. SELECT email FROM users ORDER BY RAND() LIMIT 1; Το ερώτημα αυτό επιλέγει όλες τις διευθύνσεις, τις ταξινομεί σε τυχαία σειρά και επιστρέφει την πρώτη. 61

2.10.4 Συναρτήσεις ημερομηνίας και ώρας Η MySQL υποστηρίζει δυο τύπους δεδομένων που αποθηκεύουν και την ημερομηνία και την ώρα (DATETIME και TIMESTAMP), έναν τύπο που αποθηκεύει μόνο την ημερομηνία (DATE), έναν τύπο που αποθηκεύει μόνο την ώρα (TIME) και έναν τύπο που αποθηκεύει μόνο το έτος (YEAR). Κάθε τύπος δεδομένων εκτός του ότι δέχεται διαφορετικές τιμές έχει και διαφορετική συμπεριφορά. Μπορείτε να εφαρμόσετε μια συνάρτηση ημερομηνίας σε οποιαδήποτε τιμή που περιέχει ημερομηνία και μια συνάρτηση ώρας σε οποιαδήποτε τιμή που περιέχει ώρα. Η MySQL θα χρησιμοποιήσει το τμήμα της τιμής που χρειάζεται και θα αγνοήσει το υπόλοιπο. 62

συνέχεια Χρησιμοποιείστε συναρτήσεις ημερομηνίας και ώρας 1. Εμφανίστε την ημερομηνία εγγραφής του τελευταίου χρήστη. SELECT DATE(registration_date) AS Date FROM users ORDER BY registration_date DESC LIMIT 1; Η DATE() επιστρέφει το τμήμα μιας τιμής που αντιστοιχεί στην ημερομηνία. Ο όρος ORDER BY ταξινομεί τους χρήστες ξεκινώντας από αυτόν εγγράφηκε πιο πρόσφατα και ο όρος LIMIT 1 επιστρέφει μόνο την πρώτη εγγραφή. 2. Εμφανίστε την τελευταία ημέρα του τρέχοντος μήνα. SELECT LAST_DAY(CURDATE()), MONTHNAME(CURDATE()); 63

2.10.5 Μορφοποίηση ημερομηνίας και ώρας Υπάρχουν δυο ακόμα συναρτήσεις που χρησιμοποιούνται για τη μορφοποίηση της ημερομηνίας και της ώρας. Η DATE_FORMAT() μορφοποιεί την ημερομηνία και την ώρα (π.χ. ΕΕΕΕ-ΜΜ-ΗΗ ΩΩ:ΛΛ:ΔΔ) Η TIME_FORMAT() μπορεί να μορφοποιήσει μόνο την ώρα και πρέπει να εφαρμόζεται μόνο σε τιμές ώρας (π.χ. ΩΩ:ΛΛ:ΔΔ) Η μορφοποίηση είναι συνδυασμοί κωδικών πλήκτρων και του συμβόλου ποσοστού, που ορίζουν ποια τιμή θα επιστραφεί. 64