Tu as commencé à développer tes premiers sites avec HTML / CSS, surement un peu de PHP et maintenant tu as besoin de données. Il faut que tu enregistre le nom de tes utilisateurs, le prix de tes produits, etc. Avoir une base de données dans un projet web est indispensable. Tu te demandes donc comment créer une base de données.
En effet, si tu n’as pas de base de données dans tes projets, tu vas vite te retrouver bloqué. Tu ne peux pas mettre toutes les données en brute dans ton code. Il te faut les stocker quelques part. Sans base de données aujourd’hui, il est très difficile d’avoir un projet qui tient la route. Elles sont essentielles pour enregistrer tout un tas d’informations que tu utiliseras partout sur ton site web.
Mais ne t’en fait pas, dans cet article je vais te montrer comment créer une base de données facilement pour que tu puisses l’intégrer à ton site. Ainsi, tu pourras offrir une meilleure expérience à tes utilisateurs, afficher toutes les données qui les intéressent, leur créer des comptes, enregistrer des images, etc.

Qu’est-ce qu’une base de données ?
Tout d’abord, il faut bien comprendre ce qu’est une base de données.
Une base de données est un ensemble d’informations structurée et accessible au moyen d’un logiciel. Ce logiciel se nomme un Système de Gestion de Base de Données (SGBD). Il en existe différents selon le langage utilisé. Par exemple pour le langage SQL, il existe MySQL, PostgreSQL, Microsoft SQL Server.
Toutes les données contenues dans une base doivent avoir un type : chiffre, chaine de caractère, nombre décimal, …
Les bases de données sont très pratiques pour stocker toutes les informations brutes de manière structurée pour pouvoir facilement les récupérer et les utiliser dans un site web (ou autre).
Les prérequis
Dans cet article, je te montre comment créer une base de données MySQL. Il faudra donc que tu l’es d’installé sur ton poste.
Pour cela, je te conseil d’utiliser un serveur local comme WAMP pour Windows ou XAMP pour les autres systèmes.
Une fois que tu auras installé ce serveur local, tu auras accès à tous les outils de développement nécessaires : PHP, MySQL, Apache, PhpMyAdmin (interface pour gérer les bases de données).
Il existe 2 façons pour créer une base de données :
- En ligne de commande. En écrivant des requêtes SQL à la main. C’est une très bonne manière d’apprendre le langage SQL. Mais ça prend un peu de temps.
- En interface graphique (avec PhpMyAdmin). Il faut simplement cliquer sur des boutons et remplir les champs nécessaires. C’est très rapide mais ça ne permets pas d’apprendre correctement le langage SQL.
Pour chaque étape de ce tutoriel, je vais te montrer les 2 façons de faire. D’abord en ligne de commande puis avec l’interface graphique.
Conceptualises ta base de données
Avant de commencer à créer une base de données, il faut d’abord la conceptualiser. C’est-à-dire la schématiser pour avoir une vision claire de là où tu vas. C’est un peu comme un plan pour une maison. On fait d’abord le plan avant de la construire.
Pour les bases de données, c’est pareil. On va la schématiser, faire une représentation de la structure des données. Il est possible de faire ce travail sur un bout de papier ou avec des logiciels tel que Diagrams. Ce schéma s’appelle un Modèle Conceptuel des Données (MCD). C’est une façon standardiser de schématiser une base de données.
Le MCD d’une base de données, doit ressembler à ça :

Ici nous avons une « entité » (qui correspondra à une table en base de données) Auteur et une entité Livre. Chacun a ses propres propriétés (id_a, nom_a, prenom_a, titre_l, annee_l …). Ces entités ont une relation entre elles. Cette relation est définie par un verbe.
On comprend donc qu’un auteur rédige 1 ou plusieurs (« N ») livres et qu’un livre peut être rédigé par 1 ou plusieurs auteurs (« N »). C’est donc une relation « ManyToMany ».
Cela parait complexe au début et ce n’est pas vraiment le cœur de l’article mais il est important de comprendre ces notions de schématisation de base de données. En effet, cette modélisation permet d’avoir un document commun à tous pour comprendre comment est construite une base de données.
Si tu souhaites plus de détails sur la modélisation, tu peux regarder ce PDF.
On peut désormais rentrer dans le vif du sujet.
Se connecter à MySQL
La première chose à faire pour créer une base de données est de se connecter à MySQL. MySQL demande un nom d’utilisateur ainsi qu’un mot de passe pour se connecter.
Comme je l’ai précisé avant, je vais montrer les 2 méthodes possible à chaque fois. Une en ligne de commande, l’autre avec PhpMyAdmin.
Méthode 1 : En ligne de commande
Pour se connecter en ligne de commande, il vas falloir accéder au dossier dans lequel se trouve l’exécutable de MySQL. Il dépend du chemin que tu as précisé lors de l’installation de ton serveur local. Si tu n’as rien changé, par défaut, il se trouve dans C:\wamp64\bin\mysql\mysqlX.X.X\bin.
Grâce à l’instruction « cd », rend toi dans ce dossier.
cd C:\wamp64\bin\mysql\mysqlX.X.X\bin
Maintenant que tu es dans le dossier, il faut se connecter :
mysql –u root –p
-u indique quel utilisateur tu souhaites utiliser. Par défaut, MySQL a créé l’utilisateur root. Et –p demande le mot de passe. Par défaut, pour l’utilisateur root, il n’y a pas de mot de passe. Appuie sur « Entrer » lorsque le mot de passe t’es demandé.
« mysql » devrait maintenant apparaitre au début de ta ligne de commande.

Tu peux mettre ce chemin en variable d’environnement pour pouvoir accéder à la commande « mysql » depuis n’importe quel dossier.
ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061)
Si tu obtiens cette erreur : « ERROR 2003 (HY000): Can’t connect to MySQL server on ‘localhost’ (10061) » c’est que le serveur n’est pas lancé. Lance le serveur. Une icône verte devrait apparaitre dans la barres des tâches.

Méthode 2 : avec phpMyAdmin
Avec phpmyadmin, rien de plus facile pour te connecter. Il suffit de te rendre sur l’adresse : http://localhost/phpmyadmin/ et de rentrer l’identifiant « root », sans mot de passe.
Tu arrives sur l’interface d’accueil de phpMyAdmin

Créer une base de données
Maintenant nous allons créer notre base de données.
On va dire que l’on souhaite faire un annuaire des numéros de téléphone des personnes. Pour cela, on va créer notre base de données puis une table « personne ».
Commençons par créer la base de données.
Méthode 1 : en ligne de commande
En ligne de commande, pour voir les bases de données existantes, tu peux faire la commande :
SHOW DATABASES;
Pense à bien mettre le point-virgule « ; » à la fin de chaque ligne de commande MySQL. Sinon ça ne marchera pas.
Par défaut, certaines bases de données sont déjà créées (information_schema, mysql, performance_schema, sys).
On va donc créer une base de données qui s’appellera « annuaire »
CREATE DATABASE annuaire;
Il faut ensuite dire à MySQL que l’on va utiliser cette base de données.
USE annuaire;
Méthode 2 : avec phpMyAdmin
Clique sur « Nouvelle base de données », puis rentre le nom de la base de données dans le formulaire. Clique sur « Créer ».

Créer ta première table
Les bases de données relationnelles marchent avec des tables. Chaque table représentent une entité / un objet (personne, produit, commande, …) et est composée de propriétés.
On va pouvoir créer notre première table.
Une table a un ensemble de propriétés qui ont toutes un type définis. Dans notre cas, on va créer une table « personne » qui aura en propriété :
- id de type « integer » (chiffre)
- nom de type « varchar » (chaine de caractère)
- prenom de type « varchar » (chaine de caractère »
- numero_telephone de type « integer » (chiffre)
Qu’est-ce que l’id ?
« id » signifie identifiant. C’est un numéro unique pour chacune des personnes qui seront rentrer dans la table.
Avec MySQL, il faut impérativement mettre un id sur chaque table pour pouvoir identifier de façon unique chaque enregistrement. C’est ce que l’on appelle une clé primaire.
Chaque propriété de ta table sera définie par plusieurs éléments :
- Un nom : quel nom tu donnes à ta propriété : nom, prenom, ville, …
- Un type : chaine de caractère, chiffre, nombre à virgule, …
- Le nombre de caractère maximum que tu acceptes. Par exemple pour un département on pourrait dire que l’on ne souhaite que 5 chiffre maximum.
- Si tu souhaites que le champ soit obligatoire ou non (NULL).
Bonnes pratiques
Lorsque l’on créer des tables et des propriétés, il faut respecter certaines bonnes pratiques pour que ça ne partent pas dans tous les sens.
Pour le nom des tables : écrire tout en minuscule. S’il y a besoin d’avoir plusieurs parties dans le nom, les séparer par un underscore « _ ». Par exemple : detail_commande.
Il ne faut pas mettre d’accent.
Donner des noms simples pour s’y retrouver facilement. Pas la peine d’avoir des noms trop compliqués et incompréhensibles. Cela te fera galérer plus qu’autre chose par la suite. Donne un nom simple qui identifie bien ce qu’il va y avoir dans la table : personne, commande, produit, …
Rester cohérent dans le nom de tes tables et de tes champs. Ne fait pas de mélange français / anglais, … Si tu décides de les nommer en français, toute tes tables doivent être en français.
Pense à toujours mettre une clé primaire (sur l’id) sur chacune de tes tables.
Méthode 1 : en ligne de commande
Pour créer une table en ligne de commande, nous allons utiliser l’instruction CREATE TABLE
CREATE TABLE personne( id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, nom VARCHAR(100), prenom VARCHAR(100), numero_telephone INT(10) NOT NULL ) ENGINE=InnoDB ;
Le ENGINE=InnoDB, est simplement pour définir le type de la table. Il n’est pas obligatoire. Ne t’en préoccupes pas pour le moment. Il nous servira uniquement pour les relations entre tables par la suite.
Pour vérifier que la table est créée :
SHOW TABLES;
Puis pour afficher les propriétés de ta table :
DESCRIBE personne;

Quelques explications
PRIMARY KEY : indique que le champ id sera notre clé primaire, celui qui définit de façon unique chaque enregistrement.
NOT NULL signifie que l’on n’autorise pas de valeur vide. Il faut que chaque enregistrement est une valeur. Pour les champs nom et prenom, nous n’avons rien précisé. Ce qui signifie, qu’ils peuvent être NULL. Lorsque l’on ajoutera un enregistrement, il ne sera donc pas obligatoire de renseigner le nom et le prénom. En revanche, l’id et ne numéro de téléphone sont obligatoire (NOT NULL).
AUTO_INCREMENT signifie que le champ id augmentera de 1 en 1 à chaque enregistrement. De cette façon, nous n’avons pas besoin d’insérer de valeur pour chaque enregistrement que l’on mettra par la suite.
VARCHAR : c’est le type « chaine de caractère ». (100) indique que l’on accepte 100 caractères maximum.
INT : c’est le raccourci de « integer » qui signifie « chiffre ». On ne pourra donc mettre ici que des chiffres.
Méthode 2 : avec phpMyAdmin
Là aussi, c’est relativement facile. Lorsque tu cliques sur la base de données « annuaire » dans le menu à gauche, il te demande de créer une table et le nombre de colonne que tu souhaites.

Après avoir écrit « annuaire », cliques sur « Exécuter »
Ensuite, tu n’as plus qu’à remplir les champs de cette façon :

Je t’ai surligné en jaune tous les champs à remplir. N’oublie pas de cocher « A_I » pour la ligne « id ». Cela signifie AUTO INCREMENT (voir plus haut la définition).
Voilà tu as créé ta première table. Voyons maintenant comment on va insérer des données dedans.
Insérer des données
Maintenant que l’on a créé notre base de données, on souhaite y ajouter des informations dedans.
Méthode 1 : en ligne de commande
En ligne de commande, on va utiliser l’instruction INSERT INTO.
INSERT INTO personne (nom, prenom, numero_telephone) VALUES ('Paul', 'Dupont', '0654857596');
Avec l’instruction INSERT INTO, tu peux spécifier les champs que tu souhaites remplir, comme je viens de le faire ou ne pas les indiquer :
INSERT INTO personne VALUES (null, 'Paul', 'Dupont', '0654857596');
Dans le cas où tu indiques les champs (après le nom de la table), il faudra que tu mettes les données dans le même ordre dans la partie VALUES. Ex: (nom(1), prenom(2), numero_telephone(3)) VALUES (‘Paul'(1), ‘Dupont'(2), ‘0654857596’(3));
Si tu n’indiques pas les champs au début, il faudra que dans la partie VALUES, tu mettes toutes les valeurs dans l’ordre attendu, même l’id (avec la valeur null car il se remplie tout seul).
Lorsque tu fais une instruction INSERT INTO, je te conseille de toujours indiquer les champs que tu souhaites remplir pour ne pas avoir de mauvaise surprise.
Pour vérifier que tout est bien rempli :
SELECT * FROM personne;
L’instruction SELECT te permettra d’aller récupérer n’importe quelle données de la base de données. Je pense que c’est la commande la plus utilisée dans les projets.
L’étoile (*) signifie que l’on souhaite récupérer tous les champs. On pourrais aussi écrire SELECT nom from personne, pour n’afficher que le nom.

Méthode 2 : avec phpMyAdmin
Clique sur la table dans laquelle tu souhaites insérer des valeurs.
Puis sur l’onglet « Insérer » dans le menu du haut.

Un formulaire apparait, avec tous les champs, tu n’as plus qu’à remplir.
Tu as la possibilité d’ajouter plusieurs enregistrements en même temps.

Tu n’as plus qu’à cliquer sur « Exécuter », pour enregistrer.
PhpMyAdmin, te retourne la requête qu’il a exécuté.

Pour aller plus loin : créer des relations entre tables
La relation entre tables va être nécessaire dans une base de données. En effet, ta base de données, va être constituée de plusieurs tables. Il faut que ces tables aient des relations entre elles. Des produits sont rattachés à des commandes, des commandes à des clients, …
Dans notre exemple d’annuaire, on va imaginer que chaque personne possède plusieurs sites internet professionnel et que l’on souhaite y renseigner les url de ces sites web.
On va donc créer une table « site_web ». Pour chaque url de site web, on va le rattacher à une personne.
Ainsi Pierre Dupont, pourra avoir le site https://monsite.fr et https://pierredupont.fr
Il va donc falloir que dans notre table « site_web », on ajoute un champ qui référence l’id de la table personne.
Méthode 1 : en ligne de commande
CREATE TABLE site_web ( id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, url varchar(500) NOT NULL, personne_id INT, CONSTRAINT FK_personne FOREIGN KEY (personne_id) REFERENCES personne(id) ) ENGINE=InnoDB;
On crée la table « site_web » et on lui ajoute un champs « personne_id », qui contiendra l’id de la personne qui détient ces sites webs.
Pour lier 2 tables, il faut ensuite ajouter une clé étrangère (foreign key). Pour cela on va lui donner un nom « FK_personne », avec l’instruction CONSTRAINT. On va lui dire sur quel champ de la table on la souhaite : « personne_id », puis avec quelle table et quel champ on fait la liaison « REFERENCES personne(id) ».
Pour ajouter un site à quelqu’un :
INSERT INTO site_web (url, personne_id) VALUES ('https://monsite.fr', '1');
Ici on ajoute le site https://monsite.fr à la personne avec l’id 1.
On pourrait lui en ajouter plusieurs :
INSERT INTO site_web (url, personne_id) VALUES ('https://monsite.fr', '1'), ('https://monsite2.fr', 1);

Méthode 2 : avec phpMyAdmin
Sur phpMyAdmin, on va le faire en 2 étapes.
On va d’abord créer la table « site_web », sans clé étrangères.

Ensuite, tu dois t’assurer que le type de tes tables soient en InnoDB et non en MyISAM.

MyISAM est un vieux système qui ne supporte pas les relations entre tables, il faut donc le changer en InnoDB.
Si c’est le cas, rien de grave, on va changer ça.
Clique sur le nom de la table puis dans « Opérations » dans le menu.

Dans la partie « Options pour cette table », remplace MyISAM par « InnoDB » puis clique sur « Exécuter ».
Fais de même pour l’autre table.

Ensuite, clique sur le nom de la table « site_web », puis vas dans l’onglet « Structure », puis clique sur «Vue relationnelle ».

Donne un nom à la relation (FK_personne), indique sur quel champ tu veux la relation (personne_id), puis sur quelle base de données (annuaire), sur quelle table (personne) et champs (id) cette relation fait référence.
Cliques sur « Enregistrer ».

La relation est faite.
Si tu vas sur la table « site_web » puis dans l’onglet « Insérer ». Tu verras que tu as une liste déroulante au niveau du champs « personne_id »

Il ne reste plus qu’à sélectionner à quelle personne tu souhaites attribuer le site web renseigné.
Tu pourras ainsi relier différentes tables entre elles dans tes projets.
Créer une base de données : ce qu’il faut retenir
Les bases de données sont essentielles dans les projets web et autres. Elles te permettent de stocker toutes les informations brutes avec dans un format spécifique pour pouvoir facilement les retrouver par la suite.
Pour créer une base de données, tu auras besoin d’un SGBD (Système de Gestion de Base de Données). MySQL est très bien. Il faudra notamment avoir un serveur local comme WAMP ou XAMP pour pouvoir y accéder.
Il existe différentes façons de le faire : soit en ligne de commande en écrivant des requêtes SQL (plus complexe mais permet de bien apprendre), ou en interface graphique avec phpMyAdmin (ou autre logiciel), c’est plus facile mais on n’apprend pas correctement le langage SQL.
Pour créer une base de données il faut utiliser l’instruction CREATE DATABASE nom_de_la_base ;.
Puis : USE nom_de_la_base ;
Pour créer une table, il faut utilise l’instruction CREATE TABLE nom_de_la_table (nom_colonne_1 type_colonne, nom_colonne_2 type_colonne, …) ;
Chaque champ doit être typé : chiffre, chaine de caractère, nombre à virgule, …
Pour insérer des valeurs il faut utiliser l’instruction INSERT INTO nom_de_la_table (colonne1, colonne2) VALUES (valeur1, valeur2)
Pour lire les données dans une table il faut utiliser l’instruction SELECT nom_champs1, nom_champs2 FROM nom_table WHERE condition
Chaque table doit avoir une clé primaire. Généralement c’est la colonne id qui sert de clé primaire. C’est un identifiant unique qui identifie chaque enregistrement d’une table.
Les relations entre tables sont essentielles. Elles permettent de structurer la base de données et pouvoir retrouver facilement certaines informations.
Elles se font grâce à l’instruction CONSTRAINT FK_nom_contrainte FOREIGN KEY (champs_de_la_table) REFERENCES nom_de_la_table_de_referance(champs_de_la_table_de_reference)
J’espère que ce tutoriel pour apprendre comment créer une base de données t’auras plu. Dis-moi dans les commentaires si tu as rencontré des difficultés lors de ce tutoriel pour que je puisse l’améliorer.
FAQ
Une base de données est un ensemble d’information structurée et accessible au moyen d’un logiciel.
L’utilitaire phpMyAdmin, intégré à WAMP est très pratique. Pour ma part j’utilise depuis pas mal de temps HeidiSQL. Un logiciel extrêmement pratique pour la gestion des bases de données. Je le trouve plus puissant que phpMyAdmin et plus facile d’utilisation.
Les bases de données sont essentielles dans un projet. Elles permettent de stocker toutes les données nécessaires au projet sans avoir besoin de les stocker dans le code. Ainsi elles permettent d’avoir des projets dynamiques et personnalisé selon les utilisateurs. Elles permettent aussi de stocker tous les éléments de configuration d’un projet.
En ligne de commande via des requêtes SQL ou avec un interface graphique tel que PhpMyAdmin
Je veux vraiment approfondir avec la notion de base de données et je souhaite avoir de l’aide auprès de vous !!!