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.
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 !
Ouvrez un terminal et lancez MySQL.
Regardez si la base foodly existe.
Si elle n'existe pas, créez la.
Quittez MySQL.
Chargez la base grâce aux fichier que vous avez trouvé sur github.
Relancez MySQL.
Vérifiez que vous avez bien une base foodly.
Sélectionnez la base foodly.
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 ?
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 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 :
On indique en SQL qu’on souhaite ajouter un objet avec
INSERT INTO
.On écrit ensuite le nom de la table dans laquelle on souhaite ajouter l’objet, ici “utilisateur”.
On écrit ensuite entre parenthèses la liste des colonnes que l’on va ajouter, ainsi que leur ordre.
On ajoute le mot clé SQL
VALUES
qui indique qu’on va ensuite déclarer les valeurs que l’on souhaite ajouter.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);
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 commande
INSERT 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 !