Aller au menu - Aller au contenu

Présentation de MySQL

  Auteur : Ayoub KHAYATI
Imprimer ce tutorial
Nous voici enfin dans la seconde partie. Vous vous attendez à quelques "changements", non ?

Tout d'abord, il faut le dire, vous n'êtes plus de gros débutants. Vous avez certainement l'impression de ne pas être capables de créer un site web en PHP...
Et c'est vrai, mais pourtant tout ce que vous venez d'apprendre est très important, et c'est à partir de maintenant qu'on va vraiment pouvoir créer des scripts en PHP ! :D

Et attention : pas des petits scripts. En fait, vous saurez faire à la fin de cette partie la plupart des scripts que vous rencontrez sur des sites web : système de news, commentaires, forum, livre d'or et j'en passe.
Les parties suivantes, elles, vous aideront à améliorer la qualité de vos scripts et à faire des manipulations plus avancées (c'est très intéressant, mais bon on n'en est pas encore là :-°)

Allez, il est temps de faire les présentations ^^
Sommaire du chapitre :
Sommaire Chapitre suivant

Euh... qui c'est celui-là ?

C'est MySQL, un système de base de données.

Base de quoi ? >_<

Oui je sais, encore des mots qui font peur... C'est particulièrement lourd d'ailleurs comme nom : "base de données". Ne vous étonnez donc pas si je me permets de l'abréger par BDD (Base De Données).

Vous pourrez trouver aussi l'abrévation SGBD (Système de Gestion de Base de Données), qui est plus correcte. Mais mon abrévation en 3 lettres est plus courte, donc je garde la mienne, na !


La base de données est un système qui enregistre des informations. Un peu comme un fichier texte ? Non, pas vraiment. Ce qui est très important ici, c'est que ces informations sont toujours classées.
Et c'est ça qui fait que la BDD est si pratique : c'est un moyen simple de ranger des informations.

Et si je préfère rester bordélique ? Si j'ai pas envie de classer mes informations ?
Est-on obligé de classer chaque information qu'on enregistre ?

C'est un peu ce que je me disais au début... Classer certaines choses ok, mais il me semblait que je n'en aurais besoin que très rarement.
Grave erreur ! Vous allez le voir, 99% du temps on range ses informations dans une base de données. Pour le 1% restant, on pourra enregistrer dans un fichier, ce que nous verrons plus tard car on en a rarement besoin.

Imaginez par exemple une armoire, dans laquelle chaque dossier est à sa place.
Quand tout est à sa place, c'est beaucoup plus facile de retrouver un objet n'est-ce pas ? Eh bien là c'est pareil : en classant les informations que vous collectez (par exemple des informations sur vos visiteurs), il vous sera très facile après de récupérer ce que vous cherchez.

PHP travaille avec MySQL



Jusqu'ici je ne vous ai présenté qu'un "personnage" : c'est PHP. Je fais exprès d'utiliser cette image de personnage, car je la trouve bien appropriée.
Jusqu'ici, on n'a fait que discuter avec PHP. On lui demandait par exemple "Combien font 2 + 2 ?", "Répète cette phrase 20 fois" etc... Bref, tout ça vous connaissez.

Eh bien maintenant, dans cette partie, on va s'adresser à quelqu'un d'autre : c'est MySQL, votre base de données.

Atchoum ! Euh, si je comprends bien, tu veux nous faire apprendre "autre chose" que le PHP ? Tu crois pas qu'on en a assez bavé là comme ça ?!

J'étais sûr que vous diriez ça :D
Alors non, je vous rassure, je ne m'amuse pas à vous faire souffrir. Bien au contraire j'essaie de faire au plus simple. Seulement, vu que l'on s'adresse à une autre "personne", eh bien il va falloir lui parler différemment :

Vous voyez vous commencez à comprendre :D
Alors, avant que vous alliez chercher une chaise et une corde pour abréger vos souffrances, je tiens à vous rassurer : le SQL n'a rien à voir avec le PHP. C'est beaucoup beaucoup plus simple, et en plus cette fois on va lui parler avec des "phrases" (en anglais of course ;) )

Seulement, pour compliquer un petit peu l'affaire (sinon c'est pas rigolo), on ne va pas pouvoir parler à MySQL directement. Eh non, seul PHP peut le faire !
C'est donc PHP qui va faire l'intermédiaire entre vous et MySQL. On devra demander à PHP : "Va dire à MySQL de faire ceci.".

Je crois qu'un petit schéma ne serait pas de refus...

Image utilisateur


Ca vous rappelle les bons souvenirs du premier chapitre, non ? :lol:

Ici on ne voit pas le client, on s'intéresse surtout à ce que le serveur fait lorsqu'il doit génèrer une page PHP.
Voici ce qu'il peut se passer lorsque le serveur a reçu une demande d'un client qui veut poster un message sur vos forums :
  1. Le serveur utilise toujours PHP, il lui fait donc passer le message.
  2. PHP effectue les actions demandées et se rend compte qu'il a besoin de MySQL. En effet, le code PHP contient à un endroit "Va demander à MySQL d'enregistrer ce message". Il fait donc passer le travail à MySQL.
  3. MySQL fait le travail que PHP lui avait soumis et lui répond "OK, c'est bon !"
  4. PHP renvoie au serveur que MySQL a bien fait ce qu'il était demandé.

Voilà en gros comment on peut schématiser ça. Je n'ai pas mis le client pour ne pas vous embrouiller, mais il est clair qu'il aurait fallu le mettre tout en haut du schéma (c'est lui qui fait appel au serveur, comme nous l'avons vu dans le tout premier chapitre).

Bon, eh bien maintenant que nous avons fait les présentations, il va falloir voir comment est organisée une base de données (très très important).

Structure d'une base de données

Oulah oulah ! Surtout faites très attention à ce qui va suivre ! C'est indispensable pour bien comprendre la base de données !

Et pis c'est pas parce que le titre vous donne la nausée que vous devez vomir sur le clavier :lol:

Bon allez, un peu de sérieux, ce qui suit est => VITAL <=
Ce n'est pas compliqué (ouf !), mais ce sera une des rares fois où je vous demanderai de retenir du vocabulaire.

En effet, avec la BDD il faut utiliser un vocabulaire précis. Heureusement, vous ne devriez pas avoir trop de mal à vous en souvenir, vu qu'on va se servir d'une image : celle d'une armoire.
Ecoutez-moi attentivement, et n'hésitez pas à lire lentement, plusieurs fois si c'est nécessaire.

Je vous demande d'imaginer ceci :

Ce tableau est donc le contenu d'une table (le tiroir).
Les champs dans cet exemple sont : "Numéro", "Pseudonyme", "E-mail" et "Age".
Chaque ligne est une entrée. Ici, il y a 4 entrées, mais une table peut très bien en contenir 100, ou 1 000, ou même 100 000 ! (je vous souhaite d'avoir autant de visiteurs ^^ ).

très souvent, on crée un champ "Numéro", aussi appelé "ID". Comme nous le verrons plus tard, il est très pratique de numéroter ses entrées, même si ce n'est pas obligatoire.

Et pour finir, voici l'indispensable schéma pour que tout ça soit clair :

Image utilisateur


Bon de toute manière, l'essentiel c'est que vous compreniez qui contient qui.
Comme vous le voyez, on peut mettre autant de tables que l'on veut dans une base (ce qui fait qu'en général une seule base suffit).
Dans chaque table, les données sont enregistrées sous la forme d'un tableau, comme nous l'avons vu plus haut.

Pour vous donner quelques exemples concrets, voici quelques tables utilisées sur ce site web :


Voilà, vous devriez commencer à comprendre pourquoi vous allez avoir besoin d'une BDD sur votre site ;)
Si quelque chose ne vous paraît pas clair, si vous avez l'impression de mélanger un peu "bases", "tables", "champs", "entrées", relisez de nouveau cette partie. Il faut que vous soyez capable de reproduire le schéma tout seul sur un bout de papier. :(

Hep ! J'ai une question !

Avant de terminer le chapitre, voici une question que l'on se pose fréquemment quand on lit ce genre de chapitres sur MySQL.
Je suis sûr qu'il y a quelque chose qui vous titille dans ce chapitre. Ne mentez pas, tout débutant a ce problème, moi-même j'ai été bloqué quand j'ai appris le PHP, justement parce que je voyais pas bien ce que c'était une base de données.
Comme je ne veux pas qu'il vous arrive pareil, je vais essayer d'éclaircir les points sombres ! :)

T'es gentil tu nous présentes tes jolis tableaux, tes bases, tes tables, tes champs etc... Mais je vois pas ce que c'est concrètement moi ça !? Où MySQL enregistre-t-il les données ?

Question typique, je dois avouer que la première fois c'est très troublant. On vous parle de quelque chose qui n'a pas l'air concret.
En fait, tout ce que je viens de vous montrer, c'est une façon de "visualiser" la chose. Il faut que vous imaginiez que ce sont des tableaux, parce que c'est la meilleure représentation qu'on peut se faire d'une base de données.

Mais concrètement, quand MySQL enregistre des informations, il les écrit bien quelque part. Oui comme tout le monde, il enregistre dans des FICHIERS.

Mais où sont ces $#%@#$ de fichiers ?! o_O

Réponse : ils sont dans le dossier où MySQL est installé. Vous devriez trouver ces fichiers dans le dossier :
C:\Program Files\wamp\mysql\data

Eh bah vous savez quoi ? On s'en fout que ça soit là :p
Dans la pratique, on n'ira jamais toucher à ces fichiers directement. On demandera TOUJOURS à MySQL d'enregistrer, ou d'aller lire des choses. Après, c'est lui qui se débrouille pour classer ça comme il veut dans ses fichiers.

Et c'est bien ça le gros avantage de la base de données : pas de prise de tête pour le rangement des informations. Vous demandez à MySQL de vous sortir toutes les news de votre site enregistrées de Février à Juillet, il va lire dans ses fichiers, et vous ressort les réponses.
Vous vous contentez de "dialoguer" avec MySQL. Lui il se charge du sale boulot, c'est-à-dire ranger vos données dans ses fichiers.

Q.C.M.

Comment s'appelle le système de base de données que l'on utilise avec PHP ?
Peut-on s'adresser directement à la base de données ?
Quel langage doit-on utiliser pour parler à MySQL ?
Laquelle de ces affirmations est incorrecte ?
Qu'est-ce qu'un champ ?

Si vous avez bien compris et retenu le schéma, que vous avez suivi sans trop de mal ce chapitre et que vous avez tout juste au QCM, c'est que vous savez ce qu'il faut.
Cependant, tout ceci doit vous paraître un peu flou. C'est tout à fait normal. Heureusement dans le chapitre suivant nous allons pas mal manipuler, ce qui devrait vous aider à mieux comprendre tout cela :)

Sommaire Chapitre suivant

CopyRight ©2006 -Ayoub KHAYATI (AcidZone)