SQL : Manipulations de tables avec CREATE / INSERT

ExempleUne table pour exemple

Nous allons utiliser différentes commandes pour créer cette table, que l'on notera notes :

Table 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

FondamentalCréation d'une table

La commande CREATE TABLE permet de créer une table en indiquant la clé primaire :

1
CREATE TABLE "notes" (
2
	"Nom"	TEXT PRIMARY KEY,
3
	"NSI"	INTEGER,
4
	"Mathématiques"	INTEGER,
5
	"Anglais"	INTEGER,
6
	"EPS"	INTEGER,
7
	"Philosophie"	INTEGER,
8
	"Histoire & Géographie"	INTEGER
9
);

On pourra rajouter l'information suivante :

1
CREATE TABLE IF NOT EXISTS "notes" (
2
...

Qui permet de ne créer la table uniquement si elle n'existe pas déjà.

FondamentalInsertions des enregistrements

On insère les valeurs sous forme de tuples correspondant aux lignes à enregistrer :

1
INSERT INTO notes (Nom, NSI, Mathématiques, Anglais, EPS, Philosophie, 'Histoire & Géographie')
2
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.

RemarqueContrainte 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 :

1
Result: UNIQUE constraint failed: notes.Nom

ComplémentFIchier .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 ;

1
BEGIN TRANSACTION ;
2
3
CREATE TABLE IF NOT EXISTS "notes" (
4
	"Nom"	TEXT PRIMARY KEY,
5
	"NSI"	INTEGER,
6
	"Mathématiques"	INTEGER,
7
	"Anglais"	INTEGER,
8
	"EPS"	INTEGER,
9
	"Philosophie"	INTEGER,
10
	"Histoire & Géographie"	INTEGER
11
);
12
13
INSERT INTO notes 
14
VALUES ('Marion', 15, 16, 14, 18, 14 ,13), ('Nicolas', 12, 12, 15, 14, 15 ,16), ('Tom', 10, 15, 18, 19, 14, 11) ;
15
16
COMMIT;

ComplémentUtilisation 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) :

1
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) :

1
sqlite3 bdd_notes.db
2
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.