SQL : Manipulations de tables avec CREATE / INSERT
Exemple : Une table pour exemple
Nous allons utiliser différentes commandes pour créer cette table, que l'on notera notes :
Nom | NSI | Mathématiques | Anglais | EPS | Philosophie | Histoire & Géographie |
---|---|---|---|---|---|---|
Marion | 15 | 16 | 14 | 18 | 14 | 13 |
Nicolas | 12 | 12 | 15 | 14 | 15 | 16 |
Tom | 10 | 15 | 18 | 19 | 14 | 11 |
Fondamental : Création d'une table
La commande CREATE TABLE permet de créer une table en indiquant la clé primaire :
CREATE TABLE "notes" (
"Nom" TEXT PRIMARY KEY,
"NSI" INTEGER,
"Mathématiques" INTEGER,
"Anglais" INTEGER,
"EPS" INTEGER,
"Philosophie" INTEGER,
"Histoire & Géographie" INTEGER
);
On pourra rajouter l'information suivante :
CREATE TABLE IF NOT EXISTS "notes" (
...
Qui permet de ne créer la table uniquement si elle n'existe pas déjà.
Fondamental : Insertions des enregistrements
On insère les valeurs sous forme de tuples correspondant aux lignes à enregistrer :
INSERT INTO notes (Nom, NSI, Mathématiques, Anglais, EPS, Philosophie, 'Histoire & Géographie')
VALUES ('Marion', 15, 16, 14, 18, 14 ,13), ('Nicolas', 12, 12, 15, 14, 15 ,16), ('Tom', 10, 15, 18, 19, 14, 11) ;
On remarquera que Histoire & Géographie est entre ' à cause des espaces notamment.
Si une note est inexistante (absence à une épreuve), on pourra mettre le mot clé NULL.
Remarque : Contrainte d'intégrité
Si on essaie d'insérer des enregistrements déjà présent (clé primaire déjà existante), nous avons une erreur d'intégrité de ce type :
Result: UNIQUE constraint failed: notes.Nom
Complément : FIchier .sql
Pour plus de confort et pour créer une table rapidement, on peut créer un fichier SQL (table_notes.sql) que l'on pourra utiliser avec un terminal, par exemple avec SQLite3.
Même si ce n'est pas indispensable immédiatement mais pour prendre de bonnes habitudes, on prendra soin de commencer ce fichier par BEGIN TRANSACTION et le terminer par COMMIT ;
Attention, vous remarquerez que toutes nos commandes se terminent par ;
BEGIN TRANSACTION ;
CREATE TABLE IF NOT EXISTS "notes" (
"Nom" TEXT PRIMARY KEY,
"NSI" INTEGER,
"Mathématiques" INTEGER,
"Anglais" INTEGER,
"EPS" INTEGER,
"Philosophie" INTEGER,
"Histoire & Géographie" INTEGER
);
INSERT INTO notes
VALUES ('Marion', 15, 16, 14, 18, 14 ,13), ('Nicolas', 12, 12, 15, 14, 15 ,16), ('Tom', 10, 15, 18, 19, 14, 11) ;
COMMIT;
Complément : Utilisation de SQLite 3 dans un terminal
Il faudra d'abord se placer dans le dossier où se situe le fichier SQL qui contient les instructions de création de la table et l'ajout des enregistrements.
Puis, on peut exécuter le fichier SQL pour créer une base de données que nous nommerons bdd_notes.db (db comme database) :
sqlite3 bdd_notes.db < table_notes.sql
Notre base de données est créée, nous pouvons l'utiliser en ligne de commande (cf les pages suivantes du cours) :
sqlite3 bdd_notes.db
sqlite>
sqlite> est l'invite de commande, on pourra lancer les commandes SQL sans oublier le ; à la fin de chaque commande. On pourra sortir en utilisant CTRL + D.