• 6 hours
  • Medium

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 1/4/24

Créez votre base de données (BDD)

On rentre dans le dur ! Il est temps de créer votre première base de données.

Comme expliqué précédemment, nous allons créer une base appelée Foodly, où nous allons stocker les utilisateurs ainsi que les aliments de notre application fictive.

Cela à l'air d'être quelque chose de complexe et difficile, mais rassurez vous, nous allons voir que finalement, c'est simple comme "Bonjour" 😄.

Créez votre BDD avec CREATE DATABASE

Avant de commencer, pourquoi ai-je besoin d’une base de données ?

Une application, c’est le code informatique qui vous permet d’effectuer des actions. Par exemple, commander un taxi ou écrire du texte. Or, cette application a besoin de données pour exister, données qu’elle va piocher dans une BDD.

Prenez LeBonCoin : le code de l’application vous permet de voir des listes d’objets à acheter près de chez vous, de contacter leur propriétaire, etc. Mais pour connaître ces objets, numéros de téléphone, adresses, LeBonCoin a dû aller les chercher dans une base de données (probablement MySQL 😉).

Créons la base qui contiendra nos objets.

Objets ?!? C’est quoi un objet ?

Moi aussi, à une époque, j’étais comme vous, perdu dans le jargon propre des bases de données, ou plutôt des BDD .

  • Dans une BDD, on stocke plusieurs choses. Et même un peu ce qu’on veut. Un objet, c’est chacune de ces “choses”. Imaginons que vous soyez au marché. Un objet, c’est une volaille, un fruit, etc.

  • Si on reprend notre exemple de l’application Foodly, une pomme ou une poire sont chacune une instance d’un objet “fruit”.

Chaque application est associée à une base de données. Foodly étant une seule et unique application, nous allons créer une seule BDD. Base qu’on va tout naturellement appeler… Foodly. 😉

Par exemple, Facebook utilise plusieurs BDD pour des besoins spécifiques (certaines gèrent mieux la recherche, les autres le stockage…), mais surtout pour des raisons de taille de la donnée !

Vous vous doutez qu’avec plus d’un milliard d’utilisateurs, il leur faut plusieurs bases. 😉

Je vous laisse lancer MySQL. Pour ma part, comme je travaille sous linux, il va falloir exécuter la commande  mysql -u root -p  . Cette commande signale que vous souhaitez lancer MySQL, avec l’utilisateur root en saisissant le mot de passe (vous vous en souvenez ? Nous en avons parlé précédemment 😉).

Justement, MySQL nous demande ledit mot de passe. Entrez celui que vous avez créé précédemment, et le tour est joué !

Écran du terminal suite à l’entrée de votre mot de passe
Écran du terminal suite à l’entrée de votre mot de passe

Pour créer une base, on utilise la commande CREATE DATABASE nomdelabase;  .

Pourquoi ce point-virgule à la fin de la ligne ?

C’est une obligation pour signaler à SQL qu’on a terminé une instruction. Imaginez, vous êtes en train de monter un meuble Ikea. Pour passer d’une étape à une autre, vous regardez les différentes cases du schéma de montage, souvent numérotées. Eh bien, le point-virgule, c’est l’équivalent de la fin d’une case pour SQL.

Pour créer la base de Foodly, la commande à taper est doncCREATE DATABASE foodly;  .

 Pourquoi écrire CREATE DATABASE en majuscule et  foodly en minuscule ? 

Très bonne question !

CREATE DATABASE  joue ici le rôle de commande. Quel que soit le nom de la base de données que l'on veut créer, on utilisera toujoursCREATE DATABASE. Notre CREATE DATABASEest une sorte de mot clé réservé à SQL pour lui préciser que faire.

C'est une convention de style. Dans les faits, rien ne vous empêche d'écrire CREATE DATABASE  en minuscule, mais comme 99% des utilisateurs SQL du monde respectent cette convention, mieux vaut la respecter !  

Des conventions de style en SQL, il en existe beaucoup, mais ne vous inquiétez pas, on va les voir petit à petit.

Revenons à nos moutons, et taponsCREATE DATABASE foodly; dans notre terminal. On obtient : 

Écran du terminal après avoir saisi la commande. il est écrit Query Ok, 1 row affected (0,01 sec)
Écran du terminal après avoir saisi la commande

Il reste néanmoins un problème : MySQL ne sait pas que vous souhaitez spécifiquement utiliser cette base de données.

Car vous pourriez en avoir plusieurs ! Imaginez que vous travailliez sur plusieurs projets à la fois, vous pourriez très bien avoir une base de données pour chacun.

Utilisez une base de données avec USE

 Pour sélectionner la base que vous venez de créer, utilisez la commande USE nomdelabase;  , qui devient donc… USE foodly;(vous commencez à comprendre la logique ? 😉).

Écran du terminal pour l’utilisation de la BDD
Écran du terminal pour l’utilisation de la BDD

Une fois  USE foodly; exécutée, ça y est, la base Foodly est sélectionnée et vous travaillez uniquement dans cette dernière.

Avant d’aller plus loin, je vous propose de réaliser les différentes commandes dans votre terminal et de vérifier la bonne saisie avec ce screencast :

Crééz vos premières tables avec CREATE TABLE

Pour tester l’activation de votre base de données, vous allez y insérer votre premier objet. Dans son état actuel, votre base vide ne vous sert pas à grand-chose...

Définissez les types de données

Avant de pouvoir insérer quoi que ce soit, vous devez d’abord créer une table.

En effet, chaque “table” est l’équivalent d’une feuille de travail dans un logiciel type Excel ou Google Sheets, qui stocke toutes les occurrences d’un objet en particulier.

Qui dit base de données dit type de données. MySQL doit savoir quelle forme auront vos objets avant de vous laisser les manipuler dans chaque table. C’est l’équivalent en SQL de la modélisation de bases de données où vous devez déclarer les objets que vous souhaitez stocker et ce qu’ils vont contenir. 

Quand on parle de type en base de données, on peut parler de deux types :

  • Les types d’objets, catégorisés par leur nom. Par exemple, vous avez ici deux objets dont les noms sont utilisateur et aliment. La convention veut qu’on utilise des noms en minuscules et au singulier.

  • Les types de champs, dont on va parler juste après.

Pour votre base Foodly, vous avez deux tables à créer : 

  • Une pour les objets de type utilisateur ;

  • Une autre pour les objets de type aliment.

Mais quelle forme aurait notre table utilisateur ?

Elle pourrait ressembler à ceci :

id

nom

prenom

email

1

FOO

John

sf@gmail.com

2

BAR

Mike

m_bar_123@gmail.com

3

TREE

Sarah

tree.sarah@gmail.com 

On comprend intuitivement que chaque colonne, ou plutôt chaque champ a des caractéristiques propres.  En clair,idest un nombre entier alors que  prenom ,nom  etemail  sont des textes. 

Et bien, justement au moment de créer notre table, il va falloir indiquer tout cela !

Créez vos tables

Pour créer nos tables, nous allons procéder un peu à l'envers. Au lieu de vos expliquer tout de A à Z, je vous propose de copier-coller cette commande pour créer la table des utilisateurs.

Je vais ensuite vous l’expliquer, ne vous en faites pas.

Voici la commande à taper :

CREATE TABLE utilisateur (
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
nom VARCHAR(100),
prenom VARCHAR(100),
email VARCHAR(255) NOT NULL UNIQUE
);

Mais que vient-on de faire ?

Votre objet utilisateur va être composé de plusieurs caractéristiques, aussi appelées champs.

Tout comme votre passeport qui recense votre nom ou votre âge, eh bien, pour vos utilisateurs, on va faire de même.

Chacun de ces champs doit avoir un type, pour que MySQL comprenne à quoi “va ressembler” la donnée qui sera stockée dans ce champ. Par exemple, est-ce que le champ contiendra du texte, des chiffres, etc.

Ici, on déclare plusieurs champs qui seront partagés par tous les utilisateurs. Voici un tableau récapitulatif du schéma des utilisateurs :

Nom du champ

Type du champ et options

Description

id

PRIMARY KEY (option)

Champ spécial obligatoire dans toutes les tables. Indique à MySQL que ce champ sera l'identifiant permettant d'identifier les objets.

 

INTEGER (type)

Champ numérique sous forme de nombre entier.

 

NOT NULL (option)

Ce champ ne peut pas être nul.

 

AUTO_INCREMENT (option)

Ce champ sera créé par MySQL automatiquement, pas besoin de s'en soucier ! MySQL va utiliser l'id précédent et y ajouter +1 lors de l'ajout d'un nouvel objet.

nom

 VARCHAR(100) (type)

Champ sous forme de texte, limité à 100 caractères.

prenom

VARCHAR(100) (type)

Champ sous forme de texte, limité à 100 caractères.

email

 VARCHAR(255) (type)

Champ sous forme de texte, limité à 255 caractères.

 

 NOT NULL (option)

Ce champ ne peut pas être nul.

 

UNIQUE (option)

Ce champ ne peut pas avoir la même valeur en double.

Notez au passage la différence entre une option et un type.

Prenez le temps de bien lire notre commande, de bien lire le tableau ci-dessus et de vous assurer que ce nous venons de faire à l'air compris.

Au tour des aliments ! Copiez-collez cette commande pour créer leur table.

CREATE TABLE aliment (
id INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY,
nom VARCHAR(100) NOT NULL,
marque VARCHAR(100),
sucre FLOAT,
calories INTEGER NOT NULL,
graisses FLOAT,
proteines FLOAT,
bio BOOLEAN DEFAULT false
);

Que signifient ces nouveaux types de données ?

Voici leur explication :

  • FLOAT  signifie que le champ contiendra des chiffres décimaux ;

  • BOOLEAN   est un type de champ très connu en informatique. Il ne peut stocker que les valeurs  true   (vrai) ou  false  (faux) ;

  • DEFAULT   sert à indiquer une valeur par défaut. Utile pour ne pas avoir à spécifier une valeur tout le temps ! Ici, on indique que la valeur par défaut sera la valeur  false  .

Si vous vous sentez un peu perdu, pas de soucis. C'est vrai que cela fait peut-être beaucoup d'un coup. Faites une pose, relisez tout cela au calme, vous verrez, en vérité, rien de sorcier !

Continuons avec les champs de notre nouvelle table, c’est assez simple :

  • id : l'identification de l'objet ;

  • nom : le nom de l’aliment (ex. : lait de soja) ;

  • marque : sa marque (ex. : Bjorg) ;

  • sucre, calories, graisses, protéines : la contenance de chaque élément en grammes (ex. : “2” pour 2 grammes) ;

  • bio : si l’aliment est bio ou non.

Voici un exemple de ce que donnerait cette table avec quelques aliments :

id

nom

marque

calories

sucre

graisses

proteines

bio

1

Pomme

Monoprix

65

14,4

0,4

0,4

FALSE

2

Oeuf bio

Carrefour

167

0

11,1

14,2

TRUE

3

Brique de lait

Intermarché

414

43,2

13,5

28,8

FALSE

Bon, OK pour ces deux tables, mais comment je vérifie que ma BDD est bonne et que tout s'est créé comme il le faut ?

Ça tombe bien, on en parle dans le prochain paragraphe !

Vérifiez l'intégrité de votre table avec SHOW tables et SHOW columns

Pour vérifier que tout ce que vous avez fait fonctionne, rien de plus simple ! On demande à MySQL de nous afficher toutes les tables présentes dans notre base grâce à la commande SHOW tables;  .

Écran du terminal après avoir saisi la commande SHOW tables
Écran du terminal après avoir saisi la commande SHOW tables

On peut même aller encore plus loin en demandant à MySQL de nous afficher le schéma de chaque table grâce à la commande SHOW COLUMNS FROM lenomdematable;  .

Pour lire le schéma de vos tables, il vous faut taper  SHOW COLUMNS FROM utilisateur;   et  SHOW COLUMNS FROM aliment;  . Si vous obtenez le même résultat que sur ces screenshots, c’est que vous avez tout bon !

Affichage des schémas des tables utilisateur et aliment
Affichage des schémas des tables utilisateur et aliment

D'où sort ce nouveau mot clé FROM ?

Très bonne question encore une fois.

En SQL, le mot clé FROMest absolument indispensable. En effet c'est grâce à ce  FROM  que l'on spécifie la table de la base de donnée qui nous intéresse.  SHOW tables  nous montre toutes les tables de la base de donnée, mais si on veut les colonnes d'une table, il faut préciser la table en question, d'où leFROM aliment;

Vous avez saisi ces nouvelles commandes dans votre terminal ? Vérifiez-les grâce au screencast récapitulatif :

Chargez une base de données complète

Jusqu'ici nous avons tapé des commandes SQL et dans la suite de ce cours nous allons continuer à apprendre et taper de nouvelles commandes.

Mais je vais vous donner un petit secret :

En effet, si je veux faire une sauvegarde de ma base donnée comment faire ? Il faudrait une sorte de fichier texte dans lequel on puisse enregistrer toutes les commandes.

Magie des magies, cela existe déjà !

Alors, en vérité, ça n'est pas vraiment comme cela qu'on ferait une sauvegarde SQL dans la "vraie vie", mais on pourrait créer un fichier texte, on lui donnerait une extension .sql, et dans ce fichier, on écriait toutes nos commandes les unes après les autres.

Cela se fait dans votre terminal avec la commande :

mysql -u root -p nom_de_la_base_de_donnees < nom_du_fichier.sql

Seul petit point important à savoir, il faut parfois avoir créé la base de données dans MySQL avant.

Attends, comment on sort de MySQL, pour retourner dans le terminal en mode normal ?

Très simple, en tapant la commande exit;  dans MySQL. Cela va sans dire, mais ça va mieux en le disant ! 

 OK petit malin mais où on trouve notre fameux fichier ?

Pour la suite de cours donc, j'ai créé un projet sur le fameux site de partage de code github. Vous pouvez accéder au projet à cette adresse : https://github.com/OpenClassrooms-Student-Center/Course-implementez-BDD-SQL.

Le projet (on dit repository) GitHub
Le projet (on dit repository) GitHub

Vous pouvez cliquer sur le bouton "code", puis Download / Télécharger ZIP. Ensuite, placez ce fichier dans le dossier correspondant à votre utilisateur Windows, Mac ou Linux. Vous pouvez le dé-zipper et l'ouvrir avec un éditeur de texte ou un éditeur de code pour regarder son contenu.

Voyez-vous une ligne avecCREATE TABLE ? C'est bon signe. 😃

Alors, comment faire pour charger la base de données ?

C'est très simple, toujours à partir de votre terminal :

mysql -u root -p nom_de_la_base_de_donnees < mon/chemin/nom_du_fichier.sql   puis tapez votre mot de passe root (que vous venez de créer dans cette partie !). Prenez bien soin de remplacer “nom_de_la_base_de_donnees” par le nom de la BDD que vous souhaitez mettre à jour (par exemple, foodly) et “mon/chemin/nom_du_fichier.sql” par le nom du fichier téléchargé (par exemple,/Users/moi/foodly.sql).

Et voilà, votre BDD est à jour !

En résumé

  • Pour lancer MySQL, on lance un terminal, puis on tape la commande mysql -u root -p

  • Pour créer une base de données, on utilise la commande  CREATE DATABASE;  .

  • Pour utiliser une base en particulier on utilise la commande  USE mabasededonnee;

  • Pour connaitre les bases disponibles, on utilise la commande  SHOW DATABASES;

  • Une table est un espace dans votre base de données qui va stocker des objets de même type. On la crée avec la commande  CREATE TABLE;.

  • Lors de la création d'une table on spécifie le nom, le type et les options de chaque champ .

  • Pour vérifier la création des tables, on utilise les commandes   SHOW tables;  et   SHOW COLUMNS FROM table; .

  • On peut charger une base de données en seul clic si on dispose d'un fichier .sql contenant les instructions adéquates.

Vous voici en possession de la BDD de Foodly. Néanmoins, elle est encore bien vide ! Passons au chapitre suivant pour apprendre comment la remplir. 😉

Example of certificate of achievement
Example of certificate of achievement