Βασικές γνώσεις PHP και MySQL/Εισαγωγή στην MySQL

Από Βικιβιβλία
Πήδηση στην πλοήγηση Πήδηση στην αναζήτηση

Η MySQL [1] είναι ένα σύστημα διαχείρισης σχεσιακών βάσεων δεδομένων της οποίας ο πηγαίος κώδικας είναι διαθέσιμος με ελεύθερη άδεια χρήσης. Η ονομασία MySQL περιέχει δύο στοιχεία. Το My είναι το όνομα της κόρης του συνιδρυτή του συστήματος Μόντι Βιδένιους (Monty Widenius) [2] και το SQL αναφέρεται στη γλώσσα SQL (Structured Query Languag) [3], μια γλώσσα υπολογιστών που σχεδιάστηκε ανεξάρτητα από την MySQL για τη διαχείριση δεδομένων, σε ένα σύστημα διαχείρισης σχεσιακών βάσεων δεδομένων (MySQL, PostgreSQL, Oracle κλπ). Το πρότυπο της γλώσσας SQL αναπτύχθηκε ξεχωριστά από τις υλοποιήσεις συστημάτων διαχείρισης βάσεων δεδομένων (όπως της MySQL, της PostgreSQL, της Oracle κλπ). Θεωρητικά ένας κώδικας SQL θα πρέπει να τρέχει με τον ίδιο τρόπο και σε μια βάση MySQL όπως και σε μια βάση PostgreSQL. Κάθε υλοποίηση ενός συστήματος διαχείρισης σχεσιακών βάσεων δεδομένων μπορεί να διαφέρει με κάποιο άλλο παρέχοντας επιπλέον δυνατότητες, βελτιωμένα χαρακτηριστικά. Στην πράξη η μετακόμιση ενός κώδικα SQL από μια βάση σε μια διαφορετική υλοποίηση μπορεί να παρουσιάσει ασυμβατότητες ή θα πρέπει να γίνουν τροποποιήσεις στον κώδικα. Παραπάτω θα παρουσιάσουμε τις βασικές εντολές διαχείρισης μιας βάσης MySQL. Οι εντολές αυτές μπορούν να κληθούν μέσα από το περιβάλλον της PHP και οι δυναμικές ιστοσελίδες χρησιμοποιούν βάσεις δεδομένων στις οποίες αποθηκεύουν και ανακτούν το περιεχόμενο της ιστοσελίδας η οποία δημιουργείται δυναμικά στο χρήστη πελάτη.

Πρώτα βήματα[επεξεργασία]

Θα ξεκινήσουμε τις βασικές εντολές SQL μέσα από το περιβάλλον εργασίας σε επίπεδο γραμμής εντολών της MySQL.

Σύνδεση με την MySQL[επεξεργασία]

Με την παρακάτω εντολή σε γραμμή εντολών ενός τερματικού συνδεόμαστε με την βάση MySQL με τον λογαριασμό του υπερ-χρήστη. Ο κωδικός του υπερ-χρήστη root επιλέχθηκε κατά την εγκατάσταση της MySQL (δείτε ενότητα Εγκατάσταση PHP και MySQL).

Crystal Clear app terminal.png Κώδικας:

mysql --user=root --password

Crystal Clear app kscreensaver.png Έξοδος:

Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 48
Server version: 5.5.22-0ubuntu1 (Ubuntu)

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

Εμφάνιση βάσεων[επεξεργασία]

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

Crystal Clear app terminal.png Κώδικας:

mysql> show databases;

Crystal Clear app kscreensaver.png Έξοδος:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| phpmyadmin         |
| test               |
+--------------------+
5 rows in set (0.00 sec)
mysql>

Επιλογή βάσης[επεξεργασία]

Με την παρακάτω εντολή στην MySQL επιλέγουμε να χρησιμοποιήσουμε την βάση mysql.

Crystal Clear app terminal.png Κώδικας:

mysql> use mysql;

Crystal Clear app kscreensaver.png Έξοδος:

Database changed

Εμφάνιση πινάκων βάσης[επεξεργασία]

Εμφάνισε τους πίνακες που περιέχει η βάση mysql που επιλέξαμε. Μια βάση μπορεί να περιέχει περισσότερους από ένα πίνακες.

Crystal Clear app terminal.png Κώδικας:

mysql> show tables;

Crystal Clear app kscreensaver.png Έξοδος:

+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| servers                   |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
24 rows in set (0.20 sec)

mysql>

Εμφάνιση στοιχείων πίνακα βάσης[επεξεργασία]

Με την παρακάτω εντολή στην MySQL εμφανίζουμε όλα τα στοιχεία του πίνακα user από την βάση mysql;
mysql> SELECT * FROM user;
Εμφανίζεται στην οθόνη ένα κατεβατό γραμμών με όλα τα στοιχεία του πίνακα.

Προσέξετε ότι στην παραπάνω εντολή έχουν χρησιμοποιηθεί κεφαλαία γράμματα για τις εντολές SQL SELECT και FROM και πεζά γράμματα στην μεταβλή-πίνακα user. Γενικά οι προγραμματιστές επιλέγουν τα κεφαλαία γράμματα στις εντολές SQL (παρόλο που μπορούν να χρησιμοποιήσουν και πεζά) ώστε να ξεχωρίζει το μέρος των εντολών SQL και να είναι πιο ευανάγνωστη η εντολή.

Μπορούμε να περιορίσουμε την έξοδο της προηγούμενης εντολής, επιλέγοντας να εμφανιστούν μόνο οι στήλες Host, User, Password από τον πίνακα user.

Crystal Clear app terminal.png Κώδικας:

mysql> SELECT Host, User, Password FROM user;

Crystal Clear app kscreensaver.png Έξοδος:

+-----------+------------------+-------------------------------------------+
| Host      | User             | Password                                  |
+-----------+------------------+-------------------------------------------+
| localhost | root             | *87822912B07B4A6C506742BF35D15BF7435B83DB |
| ubuntu    | root             | *87822912B07B4A6C506742BF35D15BF7435B83DB |
| 127.0.0.1 | root             | *87822912B07B4A6C506742BF35D15BF7435B83DB |
| ::1       | root             | *87822912B07B4A6C506742BF35D15BF7435B83DB |
| localhost |                  |                                           |
| ubuntu    |                  |                                           |
| localhost | debian-sys-maint | *3137856C8E9698B2F739054B67C4AA6D2F58B5C6 |
| localhost | phpmyadmin       | *87822912B07B4A6C506742BF35D15BF7435B83DB |
+-----------+------------------+-------------------------------------------+
8 rows in set (0.00 sec)

mysql>
Βλέπουμε τον χρήστη root και τον κωδικό του ο οποίος είναι κρυπτογραφημένος. Ο χρήστης phpmyadmin είναι ο χρήστης που χρησιμοποιείται από την εφαρμογή διαχείρισης βάσης PhpMyAdmin που εγκαταστήσαμε.

Προσθήκη χρήση με δικαιώματα διαχειριστή στην βάση[επεξεργασία]

Με την παρακάτω εντολή προσθέτουμε τον χρήστη userxx με κωδικό πρόσβασης password στην βάση με δικαιώματα ολικής πρόσβασης.
mysql> GRANT ALL PRIVILEGES ON *.* TO 'userxx'@'localhost' IDENTIFIED by 'password';
Το localhost είναι ο τοπικός διακομιστής.


Παραπομπές[επεξεργασία]