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

Η Βάση Δεδομένων MySQL

 

Μάθημα 1 - Τι Είναι οι Βάσεις Δεδομένων (Databases)

Μια βάση δεδομένων (database) αποτελείται από έναν ή περισσότερους πίνακες (tables), ο καθένας από τους οποίους περιέχει μια λίστα από κάποια πράγματα. Για μια βάση δεδομένων πελατών (clients), είναι φυσικό να ξεκινήσουμε μ’ έναν πίνακα με όνομα clients που θα περιέχει μια λίστα από στοιχεία πελατών.

Ο κάθε πίνακας σε μια βάση δεδομένων περιέχει μια ή περισσότερες στήλες (columns) ή πεδία (fields), όπου η κάθε στήλη περιέχει μια συγκεκριμένη πληροφορία για τον κάθε πελάτη που υπάρχει στην βάση δεδομένων (database).

Ο πίνακας clients μπορεί να περιέχει στήλες για τον κωδικό ενός πελάτη (ID), για το όνομά του (Name) καθώς και για την ημερομηνία γέννησής του (Date). Ο κάθε πελάτης που αποθηκεύουμε σ’ αυτόν τον πίνακα λέμε ότι αποτελεί μια γραμμή (row) ή μια εγγραφή (record) του πίνακα. Για παράδειγμα, ας δούμε τον παρακάτω πίνακα :

ID

Name

Date

1

Αντωνιάδης

1970-04-01

2

Παπαδόπουλος

1968-02-22

Εκτός από τις στήλες για το όνομα του πελάτη (Name) και την ημερομηνία γέννησής του (Date), υπάρχει και μια στήλη με όνομα ID, ο σκοπός της οποίας είναι να εκχωρήσει έναν μοναδικό αριθμό στον κάθε πελάτη έτσι ώστε να έχουμε έναν εύκολο τρόπο αναφοράς σ’ αυτόν και να μπορούμε να τον ξεχωρίσουμε από τους άλλους πελάτες.

Σαν επισκόπηση, το παραπάνω είναι ένας πίνακας τριών στηλών που περιέχει δύο γραμμές ή καταχωρήσεις. Η κάθε γραμμή του πίνακα περιέχει έναν κωδικό (ID) αναγνώρισης του πελάτη, το όνομά του (text) καθώς και την ημερομηνία γέννησής του (date). Με βάση αυτήν την βασική ορολογία, είμαστε έτοιμοι να αρχίσουμε να χρησιμοποιούμε την MySQL.

 

Μάθημα 2 - Εκκίνηση (Logging onto) της MySQL

Το standard interface για να δουλέψουμε με τις βάσεις δεδομένων της MySQL είναι να συνδεθούμε με το λογισμικό του MySQL server και να δίνουμε μία εντολή την φορά. Για να κάνουμε αυτήν την σύνδεση με τον server, θα χρειασθούμε το πρόγραμμα πελάτη (client program) της MySQL.

Στο Linux, το πρόγραμμα αποκαλείται mysql και βρίσκεται εξ ορισμού στον κατάλογο /usr/local/mysql/bin, ενώ στα Windows, το πρόγραμμα αποκαλείται mysql.exe και βρίσκεται εξ ορισμού στον κατάλογο C:\mysql\bin.

Υπάρχουν δύο τρόποι για να μπορέσουμε να συνδεθούμε με τον MySQL server. Ο πρώτος είναι να χρησιμοποιήσουμε το telnet για να συνδεθούμε (log into) στον server του Web host που μας φιλοξενεί και να δώσουμε την εντολή mysql από εκεί.

Ο δεύτερος είναι να φορτώσουμε (download) και να εγκαταστήσουμε το λογισμικό πελάτη (client software) της MySQL από το site http://www.mysql.com/ στον δικό μας υπολογιστή και να το χρησιμοποιήσουμε για να συνδεθούμε με τον MySQL server.

Οποια μέθοδο κι αν επιλέξουμε και όποιο λειτουργικό σύστημα χρησιμοποιούμε, θα καταλήξουμε σε μια γραμμή εντολών (command line), έτοιμοι να εκτελέσουμε το πρόγραμμα πελάτη της MySQL για να συνδεθούμε στον MySQL server. Πρέπει να γράψουμε τα εξής :

mysql -h <hostname> -u <username> -p

Θα πρέπει να αντικαταστήσουμε το <hostname> με το όνομα του host ή την IP διεύθυνση του υπολογιστή στον οποίο εκτελείται ο MySQL server. Αν εκτελούμε το πρόγραμμα πελάτη στον ίδιο υπολογιστή με τον server, μπορούμε να παραλείψουμε το τμήμα -h <hostname> της εντολής αντί να γράψουμε -h localhost, για παράδειγμα. Το <username> πρέπει να είναι το δικό μας όνομα χρήστη στην MySQL.

Αν εγκαταστήσαμε εμείς οι ίδιοι τον MySQL server, αυτό θα είναι το root, ενώ αν χρησιμοποιούμε τον MySQL server του Web host που μας φιλοξενεί, αυτό θα πρέπει να είναι το όνομα χρήστη της MySQL που μας έχει δοθεί.

Το όρισμα -p λέει στο πρόγραμμα να ζητήσει από μας τον κωδικό εισόδου (password), το οποίο θα συμβεί μόλις δώσουμε την παραπάνω εντολή. Αν έχουμε εγκαταστήσει εμείς οι ίδιοι τον MySQL, αυτό το password θα είναι το root password που επιλέξαμε εμείς, ενώ αν χρησιμοποιούμε τον MySQL server του Web host που μας φιλοξενεί, αυτό θα πρέπει να είναι το password της MySQL που μας έχει δοθεί.

Αν τα γράψαμε όλα σωστά, το πρόγραμμα πελάτη της MySQL θα παρουσιάσει τον εαυτό του και θα εμφανίσει την γραμμή εντολών της MySQL, ως εξής :

mysql>

Τώρα, ο MySQL server είναι σε θέση να παρακολουθεί περισσότερες από μία βάσεις δεδομένων, που αυτό σημαίνει ότι Web host μπορεί να στήσει έναν μόνο MySQL server για να χρησιμοποιηθεί από πολλούς από τους συνδρομητές του.

Ετσι, το επόμενο βήμα μας θα πρέπει να είναι να επιλέξουμε την βάση δεδομένων με την οποία θα δουλέψουμε. Πρώτα απ’ όλα, θα δούμε μια λίστα των βάσεων δεδομένων που υπάρχουν στον τρέχοντα server. Δίνουμε την επόμενη εντολή και μετά ENTER.

mysql> SHOW DATABASES;

Η MySQL θα εμφανίσει μια λίστα με τις βάσεις δεδομένων που υπάρχουν στον server, ως εξής :

Database

mysql

       test

2 rows in set (0.11 sec)

Ο MySQL server χρησιμοποιεί την πρώτη βάση δεδομένων, με όνομα mysql, για να μπορεί να παρακολουθεί τους χρήστες, τα συνθηματικά τους (passwords) καθώς και το τι επιτρέπεται να κάνουν. Θα αφήσουμε για λίγο αυτή την βάση δεδομένων.

Η δεύτερη βάση δεδομένων, με όνομα test αποτελεί ένα δείγμα βάσης δεδομένων. Η διαδικασία της διαγραφής στην MySQL αποκαλείται dropping (απόρριψη) και η εντολή για να διαγράψουμε μια βάση δεδομένων είναι η εξής :

mysql> DROP DATABASE test;

Αν δώσουμε αυτήν την εντολή και πατήσουμε Enter, η MySQL θα διαγράψει την βάση δεδομένων και θα εμφανίσει το μήνυμα Query OK σαν επιβεβαίωση. Επειδή αυτή η εντολή δεν εμφανίζει κάποιο μήνυμα προειδοποίησης, πρέπει να είμαστε πολύ προσεκτικοί όταν την δίνουμε.

Θα δούμε τώρα λίγα πράγματα για την γραμμή εντολών (command line) της MySQL. Όλες οι εντολές στην MySQL τελειώνουν με τον χαρακτήρα ; (semicolon). Έτσι, αν έχουμε ξεχάσει να κλείσουμε μια εντολή με τον χαρακτήρα ;, η MySQL θα νομίζει ότι δεν έχουμε τελειώσει με την εντολή αυτή και θα περιμένει να συνεχίσουμε να γράφουμε και στην επόμενη γραμμή :

mysql> SHOW

-> DATABASES;

Η MySQL δείχνει ότι περιμένει από μας να ολοκληρώσουμε την εντολή, αλλάζοντας την προτροπή (prompt) από mysql> σε ->. Αυτό είναι βολικό όταν έχουμε να γράψουμε μακροσκελείς εντολές, καθώς μπορούμε να επεκτείνουμε τις εντολές μας σε πολλές γραμμές.

Για να ακυρώσουμε την τρέχουσα εντολή και να αρχίσουμε να την γράφουμε από την αρχή, γράφουμε τους χαρακτήρες \c και πατάμε ENTER, ως εξής :

mysql> DROP DATABASE\c

mysql>

Η MySQL θα αγνοήσει την εντολή που είχαμε ξεκινήσει και θα περιμένει να δώσουμε μια άλλη εντολή.

Τέλος, αν θέλουμε να εξέλθουμε από το πρόγραμμα πελάτη της MySQL, μπορούμε απλά να γράψουμε quit ή exit. Είναι οι μόνες εντολές που δεν χρειάζονται τον χαρακτήρα ; (semicolon).

mysql> quit

Bye

 

Μάθημα 3 - Τι Είναι η SQL

Το σύνολο των εντολών που θα χρησιμοποιούμε από δω και πέρα για να λέμε στην MySQL τι να κάνει, αποτελεί μέρος ενός standard που αποκαλείται Δομημένη Γλώσσα Ερωτημάτων (Structured Query Language) ή SQL. Οι εντολές της SQL αποκαλούνται επίσης και ερωτήματα (queries).

Η SQL αποτελεί την standard γλώσσα για αλληλεπίδραση με τις περισσότερες βάσεις δεδομένων, έτσι ακόμα κι αν αλλάξουμε στο μέλλον από την MySQL σε μια βάση δεδομένων όπως την Microsoft SQL Server, θα διαπιστώσουμε ότι οι περισσότερες από τις εντολές είναι ολόιδιες.

Δεν πρέπει να συγχέουμε την SQL με την MySQL. Η MySQL είναι το λογισμικό του διακομιστή βάσεων δεδομένων (database server software) που χρησιμοποιούμε, ενώ η SQL είναι η γλώσσα που χρησιμοποιούμε για να αλληλεπιδράσουμε με την βάση δεδομένων.

 

Μάθημα 4 - Δημιουργία μιας Βάσης Δεδομένων (DataBase)

Η δημιουργία μιας βάσης δεδομένων είναι πολύ εύκολη υπόθεση :

mysql> CREATE DATABASE clients;

Τώρα που έχουμε μια βάση δεδομένων, πρέπει να ενημερώσουμε την MySQL ότι θέλουμε να την χρησιμοποιήσουμε. Η εντολή αυτή είναι η εξής :

mysql> USE clients;

Μπορούμε τώρα να αρχίσουμε να χρησιμοποιούμε την βάση δεδομένων.

 

Μάθημα 5 - Δημιουργία ενός Πίνακα (Table)

Η σύνταξη της εντολής SQL για την δημιουργία ενός πίνακα (table) είναι η εξής :

mysql> CREATE TABLE <table name> (

-> <column 1 name> <col. 1 type> <col. 1 details>,

-> <column 2 name> <col. 2 type> <col. 2 details>,

-> ...

-> );

Οσον αφορά το παράδειγμα που είχαμε δει νωρίτερα με τον πίνακα Jokes, είχε τις εξής τρεις στήλες (columns) : ID (αριθμός, number), Name (το όνομα του πελάτη) και Date (την ημερομηνία γέννησης του πελάτη).

Η εντολή για να δημιουργήσουμε αυτόν τον πίνακα είναι η εξής :

mysql> CREATE TABLE Clients (

-> ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

-> Name TEXT,

-> Date DATE NOT NULL

-> );

Ας το αναλύσουμε τώρα :

Πρέπει να έχουμε υπόψη μας ότι, ενώ μπορούμε να γράψουμε τις εντολές της SQL με πεζά ή με κεφαλαία γράμματα, ένας MySQL server που εκτελείται σ’ ένα σύστημα που είναι βασισμένο στο Unix, θα ξεχωρίζει τα πεζά από τα κεφαλαία γράμματα (case sensitive) όσον αφορά τα ονόματα των βάσεων δεδομένων και των πινάκων, εφόσον αυτά αντιστοιχούν σε καταλόγους (directories) και αρχεία (files) στον κατάλογο δεδομένων (data directory) της MySQL.

Αλλιώς, η MySQL δεν ξεχωρίζει καθόλου τα πεζά από τα κεφαλαία γράμματα (case insensitive) αλλά με μια εξαίρεση : τα ονόματα των πινάκων και των στηλών καθώς και τα άλλα ονόματα πρέπει να γράφονται ακριβώς το ίδιο όταν χρησιμοποιούνται περισσότερες από μία φορές στην ίδια εντολή.

Επίσης, εκχωρήσαμε έναν συγκεκριμένο τύπο δεδομένων σε κάθε στήλη που δημιουργήσαμε. Η ID θα περιέχει ακεραίους (integers), η Name θα περιέχει κείμενο (text) και η Date θα περιέχει ημερομηνίες (dates). Η MySQL απιατεί να καθορίζουμε τον τύπο δεδομένων (data type) για κάθε στήλη από την αρχή.

Αν γράψουμε σωστά την παραπάνω εντολή, η MySQL θα εμφανίσει το μήνυμα Query OK και θα έχουμε έτσι δημιουργήσει τον πρώτο μας πίνακα (table).

Για να βεβαιωθούμε ότι πράγματι δημιουργήθηκε ο πίνακας, δίνουμε την εξής εντολή :

mysql> SHOW TABLES;

Η απάντηση θα είναι ως εξής :

Tables in clients

Clients

1 row in set

Αυτή είναι η λίστα όλων των πινάκων που υπάρχουν στην βάση δεδομένων clinents και περιέχει έναν μόνο πίνακα : τον Clients. Ας ρίξουμε τώρα μια πιο αναλυτική ματιά στον πίνακα Clients :

mysql> DESCRIBE Clients;

Field | Type | Null | Key | Default

ID | int(11) | | PRI | 0 | ...

Name | text | YES | | NULL

Date | date | | | 0000-00-00

3 rows in set

Η παραπάνω εντολή εμφανίζει μια λίστα των στηλών (πεδίων) που υπάρχουν στον πίνακα. Όπως μπορούμε να δούμε, υπάρχουν τρεις στήλες σ’ αυτόν τον πίνακα που εμφανίζονται σαν τρεις γραμμές στο αποτέλεσμα.

Για να διαγράψουμε έναν πίνακα στην MySQL, η εντολή είναι σχεδόν ολόιδια με την εντολή για την διαγραφή μιας βάσης δεδομένων :

mysql> DROP TABLE <tableName>;

 

Μάθημα 6 - Εισαγωγή Δεδομένων σε Πίνακα (Table)

Η εντολή για να εισάγουμε δεδομένα σε μια βάση δεδομένων αποκαλείται INSERT και υπάρχουν οι εξής δύο βασικές μορφές αυτής της εντολής :

mysql> INSERT INTO <table name> SET

-> columnName1 = value1,

-> columnName2 = value2,

-> ...

-> ;

mysql> INSERT INTO <table name>

-> (columnName1, columnName2, ...)

-> VALUES (value1, value2, ...);

Ετσι, για να προσθέσουμε έναν πελάτη στον πίνακα, μπορούμε να επιλέξουμε μια από τις εξής εντολές :

mysql> INSERT INTO Clients SET

-> Name = "Αβραμόπουλος",

-> Date = "1950-03-21";

mysql> INSERT INTO Clients

-> (Name, Date) VALUES (

-> "Δημητρίου",

-> "1960-07-14"

-> );

Πρέπει να έχουμε υπόψη μας ότι στην δεύτερη μορφή της εντολής INSERT, η σειρά με την οποία γράφουμε τις στήλες πρέπει να ταιριάζει με την σειρά με την οποία γράφουμε τις αντίστοιχες τιμές.

 

Μάθημα 7 - Εμφάνιση των Αποθηκευμένων Δεδομένων

Η εντολή για να δούμε τα δεδομένα που είναι αποθηκευμένα στους πίνακες μιας βάσης δεδομένων είναι η SELECT και αποτελεί την πιο πολύ χρησιμοποιούμενη και πιο πολύπλοκη εντολή της SQL.

Η επόμενη εντολή θα εμφανίσει ό,τι είναι αποθηκευμένο στον πίνακα Clients :

mysql> SELECT * FROM Clients;

Αν θέλουμε να εμφανισθούν οι τιμές ορισμένων μόνο στηλών, δίνουμε την εξής εντολή :

mysql> SELECT ID, Date FROM Clients;

Το αποτέλεσμα θα είναι ως εξής :

               ID Date

                1     1950-03-21

                2     1960-07-14

  2 rows in set (0.00 sec)

Εκτός από το να εμφανίσουμε τις στήλες που θέλουμε με την εντολή Select, μπορούμε να τροποποιήσουμε την εμφάνισή τους με συναρτήσεις (functions). Μια συνάρτηση, η LEFT(), εμφανίζει έναν μέγιστο καθορισμένο αριθμό χαρακτήρων για μια στήλη.

Για παράδειγμα, αν θέλουμε να δούμε μόνο τους 10 πρώτους χαρακτήρες της στήλης Name, μπορούμε να δώσουμε την εξής εντολή :

mysql> SELECT ID, LEFT(Name, 10), Date FROM Clients;

                ID LEFT(Name, 20) Date

               1 Αβραμόπουλ 1950-03-21

2 Δημητρίου 1960-07-14

            2 rows in set (0.05 sec)

Μια άλλη χρήσιμη συνάρτηση είναι η COUNT(), η οποία απλά μετράει τον αριθμό των επιστρεφόμενων αποτελεσμάτων. Έτσι, για παράδειγμα, αν θέλουμε να βρούμε πόσοι πελάτες υπάρχουν στον πίνακα, μπορούμε να χρησιμοποιήσουμε την εξής εντολή :

mysql> SELECT COUNT(*) FROM Clients;

            COUNT(*)

2

2 rows in set (0.06 sec)

 

Μάθημα 8 - Η Δήλωση WHERE

Χρησιμοποιώντας την δήλωση (clause) WHERE σε μια εντολή SELECT, μπορούμε να περιορίσουμε τα επιστρεφόμενα αποτελέσματα χρησιμοποιώντας κάποια συνθήκη, ως εξής :

mysql> SELECT COUNT(*) FROM Clients

-> WHERE Date >= "1950-01-01";

Το παραπάνω ερώτημα (query) θα μετρήσει τον αριθμό των πελατών που έχουν ημερομηνίες γέννησης μεγαλύτερες από ή ίσες από την 1η Ιανουαρίου 1950.

Μια άλλη παραλλαγή της δήλωσης WHERE που μας δίνει την δυνατότητα να αναζητήσουμε καταχωρήσεις που περιέχουν ένα συγκεκριμένο κομμάτι κειμένου, είναι η εξής :

mysql> SELECT Name FROM Clients

-> WHERE Name LIKE "%ίδη%";

Αυτό το ερώτημα (query) εμφανίζει το κείμενο όλων των ονομάτων των πελατών που περιέχουν το κείμενο ίδη στην στήλη Name. Η λέξη κλειδί (keyword) LIKE λέει στην MySQL ότι η συγκεκριμένη στήλη πρέπει να ταιριάζει με το δεδομένο υπόδειγμα, που σ’ αυτήν την περίπτωση είναι το "%ίδη%".

Τα σύμβολα % εδώ σημαίνουν ότι το κείμενο ίδη μπορεί να έχει πριν και μετά ένα οποιοδήποτε κείμενο. Κάτι δηλαδή σαν τον γνωστό μας χαρακτήρα μπαλαντέρ (wildcard) * από άλλα προγράμματα.

Μπορούμε επίσης να συμπεριλάβουμε και συνθήκες στην δήλωση WHERE για να περιορίσουμε κι άλλο τα αποτελέσματα. Για παράδειγμα, για να εμφανίσουμε τους πελάτες που περιέχουν το κείμενο ίδη στο όνομά τους και που γεννήθηκαν μόνο τον Απρίλιο του 1961, μπορούμε να χρησιμοποιήσουμε το εξής ερώτημα :

mysql> SELECT Name FROM Clients WHERE

-> Name LIKE "%ίδη%" AND

-> Date >= "1961-04-01" AND

-> Date < "1961-05-01";

 

Μάθημα 9 - Τροποποίηση των Αποθηκευμένων Δεδομένων

Για να κάνουμε αλλαγές στις τιμές ενός πίνακα μιας βάσης δεδομένων, χρησιμοποιούμε την εντολή UPDATE, η σύνταξη της οποίας είναι ως εξής :

mysql> UPDATE <tableName> SET

-> <col_name>=<new_value>, ...

-> WHERE <where clause>;

Ετσι, για παράδειγμα, αν θελήσουμε να αλλάξουμε την ημερομηνία γέννησης ενός πελάτη, θα πρέπει να δώσουμε την εξής εντολή :

mysql> UPDATE Clients SET Date="1960-04-01" WHERE ID=1;

Η στήλη ID είναι βολική σ’ αυτήν την περίπτωση καθώς μας δίνει την δυνατότητα να διαχωρίσουμε εύκολα και σίγουρα τον πελάτη που θέλουμε να τροποποιήσουμε. Μπορούμε να χρησιμοποιήσουμε και την δήλωση WHERE, όπως στην επόμενη εντολή η οποία αλλάζει την ημερομηνία όλων των καταχωρήσεων πελατων που περιέχουν το κείμενο ίδη :

mysql> UPDATE Clients SET Date="1970-04-01"

-> WHERE Name LIKE "%ίδη%";

 

Μάθημα 10 - Διαγραφή Αποθηκευμένων Δεδομένων

Για να διαγράψουμε γραμμές (εγγραφές) στην SQL, η σύνταξη είναι η εξής :

mysql> DELETE FROM <tableName> WHERE <where clause>;

Ετσι, για παράδειγμα, για να διαγράψουμε όλους τους πελάτες που περιέχουν το κείνενο ίδη από τον πίνακα Clients, πρέπει να δώσουμε το επόμενο ερώτημα :

mysql> DELETE FROM Clients WHERE Name LIKE

"%ίδη%";

Η επόμενη εντολή θα αδειάσει τον πίνακα Clients με μιας :

mysql> DELETE FROM Clients;

 

 

back.gif (9867 bytes)

Επιστροφή