• 6 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 13/05/2024

Insérez des données dans votre BDD

Dans cette deuxième partie, vous allez découvrir comment manipuler vos données. À chaque chapitre, vous apprendrez à créer, lire, mettre à jour et supprimer des données. C’est ce qu’on appelle les opérations CRUD.

Create-Créer, Read-Lire, Update-Mettre à jour, Delete-Effacer
L’acronyme CRUD où MAJ signifie Mettre À Jour

Votre base de données est bien vide pour l’instant... 😢 Ne désespérez pas, nous allons justement apprendre à la remplir en y ajoutant un ou plusieurs objets.

Commencez d'abord par télécharger la base de données Foodly de cette partie 2. (Reportez-vous à cette section du cours pour retrouver comment mettre à jour votre BDD depuis GitHub).

C’est parti !

Si vous avez des difficultés, voici un peu d'aide. Attention, je ne vous donne que la méthodologie, à vous de trouver ou de retrouver les commandes !

  1. Ouvrez un terminal et lancez MySQL.

  2. Regardez si la base foodly existe.

  3. Si elle n'existe pas, créez la.

  4. Quittez MySQL.

  5. Chargez la base grâce aux fichier que vous avez trouvé sur github.

  6. Relancez MySQL.

  7. Vérifiez que vous avez bien une base foodly.

  8. Sélectionnez la base foodly.

  9. Vérifiez que les tables ont bien été créées.

À priori tout est OK.

Insérez des objets uniques pour alimenter votre BDD

Première étape : vous allez ajouter un utilisateur à votre BDD, car une application sans utilisateurs n’est pas une BDD.

Imaginez qu’un nouvel utilisateur s’inscrive sur Foodly. Comment l’application ferait-elle pour inscrire cet utilisateur dans la base MySQL ?

Schéma représentant de gauche à droite : un utilisateur qui s'inscrit et qui génère une commande INSERT INTO, qui est envoyée à la BDD, puis qui intégré dans l'application Foodly.
Insertion d’un utilisateur dans la BDD de Foodly

Souvenez-vous, votre table “utilisateur” dispose de 4 champs :

Nom du champ

Descriptif du champ

Exemple de valeur

id

identifiant unique de l'utilisateur dans la BDD

1

nom

nom de famille de l'utilisateur

Durantay

prenom

prénom de l'utilisateur

Quentin

email

email de l'utilisateur

quentin@gmail.com

Voici, par exemple, la commande pour m’ajouter en tant qu’utilisateur dans la base :

INSERT INTO `utilisateur` (`nom`, `prenom`, `email`)
VALUES ('Durantay', 'Quentin', 'quentin@gmail.com');

Voyons ensemble ce qui vient de se passer :

  1. On indique en SQL qu’on souhaite ajouter un objet avecINSERT INTO.

  2. On écrit ensuite le nom de la table dans laquelle on souhaite ajouter l’objet, ici “utilisateur”.

  3. On écrit ensuite entre parenthèses la liste des colonnes que l’on va ajouter, ainsi que leur ordre.

  4. On ajoute le mot clé SQLVALUESqui indique qu’on va ensuite déclarer les valeurs que l’on souhaite ajouter.

  5. On écrit la liste des valeurs de l’objet qu’on souhaite ajouter, dans le même ordre que les colonnes citées en 3.

Pour bien comprendre le fonctionnement de cette commande, je vous invite à “jouer” avec en essayant d’insérer d’autres utilisateurs. Par exemple vous-même. 😉

Vous pouvez aussi changer l’ordre des colonnes et des valeurs pour voir si ça fonctionne toujours !

Si vous exécutez cette commande une fois, vous devriez avoir ce message :

Query OK, 1 row affected (0.00 sec)

Voici le message d'erreur que vous aurez si vous l'exécutez plusieurs fois.

ERROR 1062 (23000): Duplicate entry 'quentin@gmail.com' for key 'utilisateur.email'

Insérez plusieurs objets à la fois

Vous avez désormais une application avec un utilisateur, mais il va vous en falloir plusieurs ! Je ne sais pas vous, mais je trouve ça fastidieux d’avoir à écrire une commande pour chaque utilisateur que j’ajoute.

SQL a pensé à nous ! Il est possible d’ajouter plusieurs objets en une seule commande en séparant leurs valeurs par des virgules, comme dans la commande ci-dessous grâce à laquelle j’ajoute 4 utilisateurs à la BDD :

INSERT INTO `utilisateur` (`nom`, `prenom`, `email`)
VALUES
('Doe', 'John', 'john@yahoo.fr'),
('Smith', 'Jane', 'jane@hotmail.com'),
('Dupont', 'Sebastien', 'sebastien@orange.fr'),
('Martin', 'Emilie', 'emilie@gmail.com');

Cela devrait donner un message de réponse de ce type :

Query OK, 4 rows affected (0.00 sec) 
Records: 4  Duplicates: 0  Warnings: 0

Assez simple, non ?

Dans les faits, vous allez user et abuser de cette commande pour ajouter différents objets dans votre base. Réutilisons-la justement pour ajouter des aliments.

Souvenez-vous, la table “aliment” est constituée des colonnes suivantes :

Nom du champ

Descriptif du champ

Exemple de valeur

id

identifiant unique de l'aliment dans la BDD

1

nom

nom de l'aliment

poire

marque

marque de l'aliment

Monoprix

calories

nombre de calories contenues dans l'aliment (en kcal)

72

sucre

la concentration en sucre de l’aliment (en grammes)

19,1

graisses

la concentration en graisses de l’aliment (en grammes)

0,2

proteines

la concentration en protéines de l’aliment (en grammes)

0,4

bio

l'aliment est Bio

TRUE

Voici la commande pour ajouter les aliments poire, pomme, œuf et lait d’amande à notre BDD :

INSERT INTO `aliment` (`nom`, `marque`, `sucre`, `calories`, `graisses`, `proteines`, `bio`)
VALUES
('poire', 'monoprix', 27.5, 134, 0.2, 1.1, FALSE),
('pomme', 'monoprix', 19.1, 72, 0.2, 0.4, FALSE),
('oeuf', 'carrefour', 0.6, 82, 5.8, 6.9, TRUE),
('lait d\'amande', 'bjorg', 4.5, 59, 3.9, 1.1, TRUE);
Récapitulatif visuel du paragraphe rédigé ci-dessous
La rédaction des valeurs selon leur type

Les explications sont simples :

  • Pour signaler à SQL des noms de tables ou colonnes, utilisez des backticks.

  • Pour le reste (les valeurs de type BOOLEAN, INTEGER ou FLOAT), pas besoin de guillemets !

Respectez la structure des tables

Un point de vigilance, il faut respecter la structure de nos tables. En effet, si nous essayons de taper la commande :

INSERT INTO `utilisateur` (`nom`, `prenom`)
VALUES ('Hello', 'World');

Nous avons un message d'erreur :

ERROR 1364 (HY000): Field 'email' doesn't have a default value

La syntaxe est pourtant correcte, mais si on tape SHOW columns FROM utilisateur; on constate que la colonneemail n'admet pas de valeurs nulles. Petite astuce, on aurait pu définir une valeur par défaut pour contourner ce problème, et nous verrons plus tard dans ce cours comment changer la structure d'une table.

À vous de jouer !

Essayez maintenant de créer un nouvel aliment. Partons sur une boîte de conserve de haricots verts. En voici les données nutritionnelles :

nom

marque

calories

sucre

graisses

proteines

bio

haricots verts

Monoprix

25

3

0

1,7

FALSE

À partir de ce tableau, j’aimerais que vous ajoutiez cet aliment dans la BDD de Foodly. Regardez bien comment nous nous y sommes pris jusqu’ici. Je suis sûr que vous pouvez le faire ! 🙌

Retrouvez ici la correction de la commande pour ajouter votre conserve de haricots !

En résumé

  • On ajoute un objet à une table avec la commandeINSERT INTO.

  • Lors de l’utilisation de cette commande, on mentionne quelles sont les colonnes (et dans quel ordre) que l’on va remplir. Et on les sépare par des virgules.

  • On peut ajouter un ou plusieurs objets à la fois, là aussi, en les séparant par des virgules.

  • Il faut être vigilant sur l'adéquation entre la structure de nos tables et les données que nous souhaitons insérer.

Vous voici capable de créer des objets dans votre BDD, pour la remplir. Mais une fois ceux-ci dans la base, comment les récupérer pour en lire le contenu ? C’est ce que vous allez voir dans le chapitre suivant !

Exemple de certificat de réussite
Exemple de certificat de réussite