C 2. Structured Query Language - Insérer des données
Après avoir achevé cette quête, tu sauras insérer des données dans une base de données avec une requête
Objectifs
- Utiliser CREATE DATABASE
- Utiliser CREATE TABLE
- Insérer des données avec la requête INSERT
- Créer une base de données avec un fichier contenant une suite de requêtes SQL
Le joyeux moment de faire les courses

Combien de temps passes-tu à faire les courses ? Si tu faisais le total, tu serais surpris du temps passé à frôler les rayons des supermarchés à la recherche de tes produits favoris.
Même si quelques heures de courses permettent à notre esprit d’éprouver de la satisfaction (au contraire du porte-monnaie), je dois quand même avouer que j'ai rencontré très peu de personnes appréciant réellement de faire les courses. La plupart des personnes que je rencontre font des listes de courses et s'organisent pour être le plus efficaces possible (ratio rapidité/quantité).
J'aimerais faire prendre conscience à ces gens qu'utiliser une base de données leur simplifierait sûrement les courses. Je pense que tu fais partie des personnes potentiellement intéressées par le fait de mieux organiser ses courses grâce aux merveilles de l'informatique.
J'aimerais que tu puisses garder une trace des courses que tu fais et des produits que tu achètes, et mettre ces traces dans une base de données.
Créer la structure

SQL met à disposition énormément de requêtes qui, chacune, réalise une action différente. Parmi ces requêtes, certaines permettent de créer des bases de données et les tables qu'elles contiennent.
Une requête te permet de créer une base de données : il s'agit de CREATE DATABASE.
CREATE DATABASE Groceries;
La commande ci-dessus crée une base de données nommée Groceries.
Une autre requête te permet de créer la structure d'une table, la requête CREATE TABLE. Dans la requête CREATE TABLE, tu dois spécifier le nom de la table, ainsi que les propriétés qui la composent. Exemple :
USE Groceries;
CREATE TABLE Food (
id INT PRIMARY KEY IDENTITY(1,1),
name VARCHAR(50) NOT NULL,
calories DECIMAL NOT NULL
);
La requête USE Groceries sert à se placer sur la base de données Groceries. La table Food représente un aliment et les calories qui lui sont associées pour une seule portion. La table met à disposition trois champs :
-
id- identifiant numérique qui s'auto-incrémente à chaque insertion -
name- nom d'un aliment en question -
calories- nombre de calories par portion d'aliments
Chacun des champs déclarés est d'un type particulier :
-
idest un entier : il s'agit de la clé primaire (PRIMARY KEY). Il est auto-incrémenté de 1 dès lors qu'une entité est insérée dans la table (IDENTITY (1,1)) -
nameest une chaîne de caractères de taille 50 -
caloriesest un nombre décimal
Sachant tout cela, il est possible d'écrire un fichier contenant du SQL, directement exécutable par un SGBD.
Insérer des données dans les tables

Avec la table créée lors de l'étape précédente :
USE Groceries;
INSERT INTO Food (name, calories)
VALUES ('Tomato', 24);
La requête INSERT INTO insère une tomate dans la table Food. L'ordre des champs à spécifier après VALUES est donné entre parenthèses après le nom de la table. Fais bien attention à entourer d'apostrophes, et non de guillemets, les chaînes de caractères que tu spécifies dans les valeurs à mettre dans la table, sinon tu auras des surprises.
Lire la partie "Syntax for SQL Server"
Challenge
Optimisation de tes courses
Ecris un fichier T-SQL importable avec SQLServer.
Dans ce fichier, crée une base de données GroceriesDB dans laquelle tu créeras deux tables :
- Une table
Productqui contient des produits :
- Une clé primaire auto-incrémentée en nombre entier
- Un nom de produit en chaîne de caractères
- Un prix en décimal
- Une table
Groceryqui contient les courses que tu as faites :
- Une table
- Une clé primaire auto-incrémentée en nombre entier
- Un montant total en décimal
- Une date (au format DATETIME)
Insère trois entités dans la table Product et deux entités dans la table Grocery.
Critères de validation
- Un lien vers le fichier SQL
- Le fichier s'importe dans SSMS sans erreur
- La table
Productrespecte la structure - La table
Groceryrespecte la structure - Trois entités sont insérées dans la table
Product - Deux entités sont insérées dans la table
Grocery