Les mêmes faits sont recopiés
Une adresse corrigée ici reste fausse ailleurs. Les doublons créent des contradictions.
01 · Découvrir
Structurer, relier et interroger des données sans perdre leur cohérence.
SELECT comprendre
FROM donnees
WHERE relations = 'claires';
02 · Le besoin
Quand les informations se multiplient, un simple fichier devient difficile à partager, vérifier et mettre à jour.
Une adresse corrigée ici reste fausse ailleurs. Les doublons créent des contradictions.
Les données suivent un schéma commun et les liens entre elles sont explicités.
Le système stocke, recherche, modifie, protège et contrôle la cohérence des données.
Idée clé : une base n’est pas seulement un ensemble de tableaux ; c’est un ensemble organisé de données soumis à des règles.
03 · Le vocabulaire
LIVRE (id_livre, titre, annee, id_auteur)
| id_livre | titre | annee | id_auteur |
|---|---|---|---|
| 101 | Dune | 1965 | 1 |
| 102 | Parable du semeur | 1993 | 2 |
| 103 | La Main gauche de la nuit | 1969 | 3 |
04 · Modéliser
On sépare les objets du problème puis on les relie par leurs identifiants.
Conséquence : le nom de l’auteur n’est stocké qu’une fois. Chaque livre pointe vers lui grâce à id_auteur.
05 · Garantir la cohérence
Identifie chaque ligne de manière unique. Elle ne peut être ni vide ni dupliquée.
Référence la clé primaire d’une autre table et matérialise une relation.
Imposent un type, une plage de valeurs ou une propriété comme NOT NULL.
INSERT INTO Livre VALUES (104, 'Nouveau livre', 2026, 99);Rejetée si aucun auteur n’a pour identifiant 99 : l’intégrité référentielle est protégée.
06 · Interroger
SELECTFROMWHERESELECT titre, annee
FROM Livre
WHERE annee >= 1990;
07 · Résumer
SQL peut produire une synthèse sans récupérer toutes les lignes dans un programme.
SELECT id_auteur, COUNT(*) AS nb_livres
FROM Livre
GROUP BY id_auteur
ORDER BY nb_livres DESC;
ORDER BYclasse le résultatGROUP BYforme des groupesCOUNTcompte les lignesAVG · MIN · MAXcalculent une synthèse08 · Relier
SELECT l.titre, a.nom
FROM Livre AS l
JOIN Auteur AS a
ON l.id_auteur = a.id_auteur;
À lire ainsi : pour chaque livre, chercher l’auteur dont l’identifiant correspond à la clé étrangère.
09 · Faire évoluer
Les contraintes continuent de s’appliquer quand on ajoute, corrige ou supprime des données.
INSERT INTO Livre (…)
VALUES (…);UPDATE Livre
SET annee = 1965
WHERE id_livre = 101;DELETE FROM Livre
WHERE id_livre = 101;UPDATE ou un DELETE, vérifier la condition WHERE. Sans elle, toutes les lignes sont concernées.10 · Programmer
import sqlite3
connexion = sqlite3.connect("mediatheque.db")
curseur = connexion.cursor()
curseur.execute(
"SELECT titre FROM Livre WHERE annee >= ?",
(2020,)
)
for ligne in curseur.fetchall():
print(ligne)
connexion.close()
Pourquoi le symbole ? ? Il sépare la requête des valeurs fournies et évite de fabriquer du SQL par concaténation.
11 · Être responsable
Ne collecter que les données nécessaires à l’objectif annoncé.
Limiter les accès selon les rôles et protéger les comptes.
Corriger les erreurs, sauvegarder et restaurer les informations.
Supprimer les données personnelles devenues inutiles.
Question à débattre : une médiathèque a-t-elle besoin de conserver tout l’historique des emprunts d’un lecteur ?
12 · Passer à la pratique
L’activité guidée construit une médiathèque SQLite en mémoire, puis vous fait interroger et modifier ses données.
SELECT, WHERE et JOIN.Clavier : ← → pour naviguer · F pour le plein écran