Πριν προχωρήσουμε στην διασύνδεση μιας βάσης δεδομένων με την php θα πρέπει πρώτα να θυμηθούμε επιγραμματικά μερικές από τις πιο βασικές εντολές της SQL.

Ο κώδικας SQL διαθέτει μια σειρά από εντολές εισαγωγής, εξαγωγής, διαγραφής και ενημέρωσης εγγραφών σε πίνακες που διαθέτει μια βάση δεδομένων. Κάθε φορά που εκτελούμε μια διαδικασία μέσα σε μια βάση δεδομένων, τότε αυτή η «πράξη» ονομάζεται ερώτημα (query). Ο τρόπος με τον οποίο κάνουμε όλες αυτές τις πράξεις ερωτημάτων είναι μέσω της γλώσσας SQL τα αρχικά της οποίας προέρχονται από τα Structure Query Language, δηλαδή σε ελεύθερη μετάφραση: «Δομημένη Γλώσσα Ερωτημάτων».

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

  • Ανάγνωση δεδομένων
  • Εισαγωγή δεδομένων
  • Ενημέρωση δεδομένων
  • Διαγραφή δεδομένων
  • Γενική διαχείριση Βάσεων Δεδομένων.

Η γλώσσα SQL είναι case insensitive , δεν κάνει διάκριση ανάμεσα σε κεφαλαία και πεζά γράμματα. Στα παραδείγματα που ακολουθούν, οι εντολές της SQL θα γράφονται με κεφαλαία γράμματα ώστε να ξεχωρίζουν.

Βάση δεδομένων

Παρακάτω θα δούμε όλες τις βασικές εντολές που αλληλεπιδρούν με τις βάσεις δεδομένων.

H εντολή SHOW DATABASES μας επιστρέφει μια λίστα με όλες τις βάσεις δεδομένων που υπάρχουν στον MySQL server όπου βρισκόμαστε συνδεδεμένοι:

SHOW DATABASES;

Με την εντολή CREATE μπορούμε να δημιουργήσουμε μια βάση δεδομένων, εάν δεν υπάρχει:

CREATE DATABASE onoma_basis;

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

USE onoma_basis;

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

DROP DATABASE onoma_basis;

Όπου «onoma_basis» εισάγουμε το επιθυμητό όνομα.

Πίνακες

Παρακάτω θα δούμε όλες τις εντολές που αλληλεπιδρούν με τους πίνακες μιας βάσης δεδομένων. Για να εκτελέσουμε κάποια από τις παρακάτω εντολές θα πρέπει να έχουμε χρησιμοποιήσει πρώτα την εντολή «USE» έτσι ώστε ο server γνωρίζει σε ποιά βάση δεδομένων κάνουμε τα ερωτήματα μας.

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

SHOW TABLES;

Η εντολή CREATE TABLE δημιουργεί έναν νέο πίνακα εφόσον δεν υπάρχει μέσα στην βάση δεδομένων στην οποία βρισκόμαστε. Η εντολή παίρνει και πληθώρα στοιχείων μέσα της ως παραμέτρους σχετικά με τα πεδία του πίνακα, τον τύπο (type) τους, και το αν θα έχουν πρωτεύων κλειδί (PRIMARY KEY):

CREATE TABLE onoma_pinaka(
 pedio1 type(megethos) NOT NULL PRIMARY KEY AUTO_INCREMENT, 
 pedio2 type(megethos) NOT NULL,
 pedio3 type(megethos) NULL
);
  • Όπου «onoma_pinaka» εισάγουμε το επιθυμητό όνομα του πίνακα που θέλουμε να δημιουργήσουμε,
  • Όπου «pedio1», «pedio2»,«pedio3» εισάγουμε τα ονόματα των πεδίων που θέλουμε ο πίνακας μας να διαθέτει,
  • Όπου «type» εισάγουμε τον τύπο που θέλουμε το κάθε πεδίο να είναι, ενώ μέσα στις παρενθέσεις του, το μέγεθος του πεδίου, εισάγουμε δηλαδή έναν ακέραιο αριθμό.
  • Το NOT NULL σημαίνει ότι το πεδίο δεν μπορεί να είναι κενό, άρα για κάθε εγγραφή θα υπάρχει μια τιμή, αντίθετα το NULL σημαίνει πως μπορεί να είναι κενό,
  • Το PRIMARY KEY σημαίνει πως είναι πρωτεύον κλειδί το συγκεκριμένο πεδίο στο οποίο το έχουμε γράψει, και τέλος
  • Το AUTO_INCREMENT σημαίνει αυτόματη αρίθμηση για ένα πεδίο το οποίο όταν δημιουργείται μια νέα εγγραφή θα αυξάνεται κατά ένα για κάθε έγγραφή δημιουργώντας έτσι μια ξεχωριστή τιμή για κάθε εγγραφή.

Η εντολή ALTER TABLE χρησιμοποιείται σε συνδυασμό με κάποια δευτερεύουσα εντολή για να επεξεργαστεί την δομή ενός πίνακα, όπου «onoma_pinaka» εισάγουμε το όνομα του ήδη υπάρχον πίνακα που θέλουμε να επεξεργαστούμε.

Η δευτερεύουσα εντολή ADD προσθέτει ένα νέο πεδίο που δεν υπάρχει στον ήδη υπάρχον πίνακα, όπου «pedio4» εισάγουμε το όνομα του νέου πεδίου και ύστερα συνεχίζουμε με τις ιδιότητες που θέλουμε να έχει:

ALTER TABLE onoma_pinaka ADD pedio4 varchar(255);

Η δευτερεύουσα εντολή DROP διαγράφει ένα ήδη υπάρχουν πεδίο από έναν ήδη υπάρχον πίνακα, όπου «pedio4» εισάγουμε το όνομα του πεδίου που θέλουμε να διαγράψουμε:

ALTER TABLE onoma_pinaka DROP pedio4;

Η δευτερεύουσα εντολή ADD INDEX προσθέτει δείκτη στο πεδίο ενός πίνακα, όπου «onoma_pinaka» τοποθετούμε το όνομα του πίνακα στον οποίο βρίσκεται το πεδίο, όπου «onoma_index» τοποθετούμε ένα νέο όνομα για τον δείκτη, όπου «pedio3» τοποθετούμε το όνομα το πεδίου:

ALTER TABLE onoma_pinaka ADD INDEX onoma_index(pedio3);

Η δευτερεύουσα εντολή DROP INDEX διαγράφει έναν δείκτη ενός πεδίου που ανήκει σε έναν πίνακα, όπου «onoma_index» τοποθετούμε το όνομα του δείκτη:

ALTER TABLE onoma_pinaka DROP INDEX onoma_index;

Η δευτερεύουσα εντολή ADD PRIMARY KEY μετατρέπει ένα πεδίο σε πρωτεύον κλειδί ενός πίνακα, όπου «pedio2» προσθέτουμε το όνομα του πεδίου που θέλουμε να κάνουμε πρωτεύον κλειδί. ΠΡΟΣΟΧΗ! Αν πίνακας που προσπαθούμε να προσθέσουμε το νέο πρωτεύον κλειδί, έχει ήδη ένα πρωτεύον κλειδί, δεν μπορούμε να προσθέσουμε νέο, θα πρέπει πρώτα να διαγράψουμε το παλαιό:

ALTER TABLE onoma_pinaka ADD PRIMARY KEY (pedio2);

Η δευτερεύουσα εντολή DROP PRIMARY KEY μετατρέπει ένα πεδίο πρωτεύοντος κλειδιού σε απλό πεδίο. Για να μπορέσουμε να διαγράψουμε ένα κλειδί που είναι AUTO_INCREMENT θα πρέπει πρώτα να αφαιρέσουμε αυτή την ιδιότητα του με την εντολή CHANGE:

ALTER TABLE onoma_pinaka DROP PRIMARY KEY;

Η δευτερεύουσα εντολή CHANGE αναλαμβάνει να αλλάξει την δομή ενός πεδίου στην μορφή που εμείς επιθυμούμε, όπου «pedio1» τοποθετούμε το όνομα του πεδίου που έχει μέχρι εκείνη την στιγμή ύστερα στο «neo_pedio» τοποθετούμε το όνομα που θέλουμε να έχει από εδώ και ύστερα το πεδίο, και ύστερα όλες τις άλλες ιδιότητες που θέλουμε να διατηρήσει, όσες δεν συμπεριλάβουμε καταργούνται και ακολουθούνται οι προεπιλεγμένες τιμές:

ALTER TABLE onoma_pinaka CHANGE pedio1 neo_pedio int(11);

Η εντολή TRUNCATE TABLE διαγράφει όλα τα δεδομένα ενός πίνακα, δηλαδή όλες τις εγγραφές του, και δεν επηρεάζει καθόλου τα πεδία ή τον ίδιο τον πίνακα, όπου «onoma_pinaka» εισάγουμε το όνομα του πίνακα που θέλουμε να αδειάσουμε:

TRUNCATE TABLE onoma_pinaka;

Η εντολή DESCRIBE ή DESC μας δίνει κάποιες πληροφορίες σχετικά με τον πίνακα που θα της εισάγουμε, όπου «onoma_pinaka» εισάγουμε το όνομα του πίνακα για τον οποίο θέλουμε τις πληροφορίες:

DESCRIBE onoma_pinaka;
DESC onoma_pinaka;

Η εντολή DROP TABLE διαγράφει έναν ήδη υπάρχον πίνακα από την βάση δεδομένων στην οποία βρισκόμαστε, όπου «onoma_pinaka» εισάγουμε το όνομα του πίνακα που θέλουμε να διαγράψουμε:

DROP TABLE onoma_pinaka;

Ερωτήματα

Η εντολή SELECT FROM μας επιστρέφει ένα σύνολο εγγραφών μέσα από ένα πίνακα που θα επιλέξουμε, βασιζόμενη σε κάποια κριτήρια. Για παράδειγμα χρησιμοποιώντας τον χαρακτήρα «*» (αστερίσκο), επιστρέφονται όλες οι γραμμές του πίνακα. Όπου «onoma_pinaka» εισάγουμε το όνομα του πίνακα για τον οποίο θέλουμε να επιστραφούν οι γραμμές του:

SELECT * FROM onoma_pinaka;

Χρησιμοποιώντας την SELECT προσδιορίζοντας αντίστοιχα τα πεδία που θέλουμε πριν το FROM, μας επιστρέφει ένα σύνολο γραμμών μέσα σε ένα πίνακα μόνο για τα επιλεγμένα πεδία που έχουμε διαλέξει, όπου «pedio2», και «pedio3» εισάγουμε τα ονόματα των πεδίων που θέλουμε να επιλεχθούν καθώς επίσης κι άλλα αν θέλουμε, ύστερα στο «onoma_pinaka» εισάγουμε το όνομα τον πίνακα από τον οποίο θα επιλεγούν τα στοιχεία:

SELECT pedio2, pedio3 FROM onoma_pinaka;

Η εντολή DISTINCT σε συνδυασμό με την SELECT επιστρέφει ένα σύνολο εγγραφών για όσα πεδία επιλέξουμε, αφαιρώντας τις διπλότυπες τιμές, όπου «pedio2» τοποθετούμε το όνομα του πεδίου που θέλουμε να επιλεχθεί, όπου «onoma_pinaka» το όνομα του πίνακα, αντίστοιχα:

SELECT DISTINCT (`pedio2`) FROM onoma_pinaka;

Η δευτερεύουσα εντολή WHERE μας δίνει την δυνατότητα να περιορίσουμε το εύρος του ερωτήματος μας διαλέγοντας συγκεκριμένες εγγραφές. Δίνοντας ένα αλφαριθμητικό, αριθμό ή γενικώς μια τιμή στην εντολή αυτή ψάχνει για εγγραφές που θα ταιριάζει αυτή η τιμή στο πεδίο που της έχουμε ορίσει, έτσι επιστρέφεται ένα μικρό σύνολο από εγγραφές, ενδεχομένως και καμία. Όπου «onoma_pinaka» μπαίνει το όνομα του πίνακα μας, όπου «pedio2» μπαίνει το πεδίο για το οποίο θέλουμε να ταιριάξουμε την τιμή, και όπου «0» εισάγουμε την τιμή που θέλουμε να ταιριάξουμε:

SELECT * FROM `onoma_pinaka` WHERE pedio2=0;

Παρόμοια με την WHERE υπάρχει και η LIKE όπου στην θέση του πεδίου με την ισότητα τοποθετούμε απλά την εντολή με ένα αλφαριθμητικό που θέλουμε να ταιριάξει. Όπου χρησιμοποιήσουμε το σύμβολο «%» θεωρείται μπαλαντέρ.

SELECT * FROM onoma_pinaka WHERE pedio2 LIKE "%τιμή%";

Μπορούμε να μετρήσουμε τα επιστρεφόμενα αποτελέσματα ενός ερωτήματος με την εντολή COUNT.

SELECT COUNT(*) FROM onoma_pinaka;

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

SELECT * FROM onoma_pinaka ORDER BY pedio2 ASC, pedio3 DESC;

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

INSERT INTO onoma_pinaka (neo_pedio,pedio2,pedio3) 
VALUES (4,"τιμή1","τιμή2");

Όπως καταλαβαίνουμε από την παραπάνω εντολή κάθε πεδίο θα αντιστοιχηθεί και με μια τιμή μετά το VALUES, έτσι θα εισαχθεί η νέα γραμμή στον πίνακα. Αν θέλουμε μπορούμε να παραλείψουμε το πρώτο πεδίο καθώς μπορεί να είναι αυτόματα ρυθμισμένο να αυξάνεται κατά ένα σε κάθε νέα γραμμή.

Υπάρχουν πολλοί συνδυασμοί και εντολές της SQL που δεν θα εξηγήσουμε σε αυτόν τον οδηγό, καθώς πρόκειται αυστηρά για επεξήγηση λειτουργικότητας των εντολών της php. Μπορείτε να ανατρέξετε σχετικούς οδηγούς στην ιστοσελίδα μας για την SQL ή μπορείτε να αναζητήσετε σχετικό υλικό στο Διαδίκτυο.