⌂  Menu général
Chapitre Bases de données

SQL : création et mise à jour

On passe à la pratique : créer réellement la base de la billetterie dans DB Browser for SQLite, la peupler, la modifier, et comprendre ce que le SGBD protège pour nous.

Durée · 2h Séance · 3 / 7 Outil · DB Browser for SQLite
Au programme

Objectifs de la séance

  • Créer effectivement les 5 tables de la billetterie.
  • Peupler une table avec INSERT INTO.
  • Modifier des données existantes avec UPDATE.
  • Supprimer des données avec DELETE, en comprenant les risques liés aux clés étrangères.
Prise en main

Ouvrir DB Browser for SQLite

  1. Ouvrir DB Browser for SQLite → « New Database » → nommer le fichier billetterie.db.
  2. Aller dans l'onglet « Execute SQL » : c'est ici que toutes les requêtes de cette séance seront tapées.
  3. Exécuter la commande ci-dessous avant toute manipulation.
Astuce importante : par défaut, SQLite ne vérifie pas les contraintes de clé étrangère.
PRAGMA foreign_keys = ON;
Étape 1

Créer les 5 tables

Reprends les CREATE TABLE de la séance 2 et exécute-les dans cet ordre précis :

  1. ARTISTE, SALLE, SPECTATEUR — aucune dépendance.
  2. CONCERT — dépend de ARTISTE et SALLE.
  3. BILLET — dépend de SPECTATEUR et CONCERT.
Pourquoi cet ordre est-il obligatoire ?
On crée toujours la table référencée avant la table qui la référence : une clé étrangère doit pouvoir pointer vers une table qui existe déjà.
Cours

Insérer des données : INSERT INTO

INSERT INTO table (colonne1, colonne2, ...) VALUES (valeur1, valeur2, ...);

On peut insérer plusieurs lignes en une seule requête :

INSERT INTO table (col1, col2) VALUES (v1, v2), (v3, v4);
Exercices 1 & 2

Peupler la base

Écris et exécute les requêtes INSERT pour ajouter ces données.

ARTISTE
1, 'DJ Solstice', 'Électro'
2, 'Les Foudres', 'Rock'
3, 'Miles & Co', 'Jazz'
SALLE
1, 'Zénith', 'Lyon'
2, 'Stade des Lumières', 'Lyon'
3, 'Le Trianon', 'Paris'
SPECTATEUR
1, 'Léa Martin', 'lea.martin@mail.fr'
2, 'Noah Petit', 'noah.petit@mail.fr'
3, 'Inès Dubois', 'ines.dubois@mail.fr'
CONCERT (id, nom, date, id_artiste, id_salle)
1, 'Nuit Électro', '2026-09-12', 1, 1
2, 'Rock en Seine', '2026-09-20', 2, 2
3, 'Jazz sous les étoiles', '2026-09-25', 3, 3
BILLET (num, id_spectateur, id_concert, prix, date)
1, 1, 1, 45, '2026-08-01'
2, 2, 1, 45, '2026-08-01'
3, 1, 2, 38, '2026-08-01'
4, 3, 1, 45, '2026-08-02'
5, 2, 3, 30, '2026-08-01'
6, 3, 2, 38, '2026-08-03'
Voir les requêtes INSERT complètes
INSERT INTO ARTISTE (id_artiste, nom_artiste, genre) VALUES (1, 'DJ Solstice', 'Électro'), (2, 'Les Foudres', 'Rock'), (3, 'Miles & Co', 'Jazz'); INSERT INTO SALLE (id_salle, nom_salle, ville) VALUES (1, 'Zénith', 'Lyon'), (2, 'Stade des Lumières', 'Lyon'), (3, 'Le Trianon', 'Paris'); INSERT INTO SPECTATEUR (id_spectateur, nom_spectateur, email) VALUES (1, 'Léa Martin', 'lea.martin@mail.fr'), (2, 'Noah Petit', 'noah.petit@mail.fr'), (3, 'Inès Dubois', 'ines.dubois@mail.fr'); INSERT INTO CONCERT (id_concert, nom_concert, date_concert, id_artiste, id_salle) VALUES (1, 'Nuit Électro', '2026-09-12', 1, 1), (2, 'Rock en Seine', '2026-09-20', 2, 2), (3, 'Jazz sous les étoiles', '2026-09-25', 3, 3); INSERT INTO BILLET (num_billet, id_spectateur, id_concert, prix, date_achat) VALUES (1, 1, 1, 45, '2026-08-01'), (2, 2, 1, 45, '2026-08-01'), (3, 1, 2, 38, '2026-08-01'), (4, 3, 1, 45, '2026-08-02'), (5, 2, 3, 30, '2026-08-01'), (6, 3, 2, 38, '2026-08-03');
Cours + Exercice 3

Modifier des données : UPDATE

UPDATE table SET colonne = nouvelle_valeur WHERE condition;
Attention : un UPDATE sans WHERE modifie TOUTES les lignes de la table !
a. Reporter « Rock en Seine » au 2026-09-27
UPDATE CONCERT SET date_concert = '2026-09-27' WHERE id_concert = 2;
b. Corriger l'email de Noah Petit
UPDATE SPECTATEUR SET email = 'noah.petit@nouveaumail.fr' WHERE id_spectateur = 2;
c. Défi — augmenter de 5€ tous les billets du concert n°1
UPDATE BILLET SET prix = prix + 5 WHERE id_concert = 1;
Cours + Exercice 4

Supprimer des données : DELETE

DELETE FROM table WHERE condition;
Attention : un DELETE sans WHERE supprime TOUTES les lignes de la table !
a. Supprimer le billet n°6
DELETE FROM BILLET WHERE num_billet = 6;
Défis — intégrité en action

Quand le SGBD dit non

Défi — exercice 2

Essaie d'insérer un billet avec id_concert = 9 (qui n'existe pas). Que se passe-t-il ?

Voir la réponse
Avec PRAGMA foreign_keys = ON;, cette insertion provoque une erreur « FOREIGN KEY constraint failed », car aucun concert d'identifiant 9 n'existe : le SGBD refuse de créer une référence invalide (contrainte de référence, vue en séance 2).
Défi — exercice 4b

Essaie de supprimer l'artiste id=1 (DJ Solstice). Que se passe-t-il ? Pourquoi ?

Voir la réponse
DELETE FROM ARTISTE WHERE id_artiste = 1;
Avec PRAGMA foreign_keys = ON;, cette requête échoue : le concert « Nuit Électro » référence encore id_artiste = 1. Supprimer cet artiste laisserait une clé étrangère invalide dans CONCERT — le SGBD protège l'intégrité référentielle en refusant l'opération. Il faudrait d'abord supprimer (ou réaffecter) les concerts qui le référencent.
Bilan

Vocabulaire clé de la séance

INSERT INTO VALUES UPDATE SET DELETE FROM WHERE PRAGMA foreign_keys
À retenir avant tout : WHERE cible les lignes concernées — l'oublier est l'erreur SQL la plus dangereuse. Un bon réflexe : tester d'abord sa condition avec un SELECT avant de lancer un UPDATE ou un DELETE.
Séance 4

La suite : interroger la base

Premiers SELECT — WHERE, ORDER BY, DISTINCT — avec en accroche une enquête à résoudre en SQL : le SQL Murder Mystery.