Bases de données relationnelles et SQL
Modèle relationnel, clés, contraintes d'intégrité et requêtes SQL (SELECT, JOIN, GROUP BY, INSERT/UPDATE/DELETE) avec exemples exécutables.
Rédigé par l'équipe éditoriale de RévisionBac d'après le programme officiel · Mis à jour le · Méthodologie
En clair. Modèle relationnel, clés, contraintes d'intégrité et requêtes SQL (SELECT, JOIN, GROUP BY, INSERT/UPDATE/DELETE) avec exemples exécutables.
Ce qu'on te demande au bac (Spé NSI) : maîtriser le vocabulaire de « Bases de données relationnelles et SQL », savoir refaire les raisonnements du cours et les réutiliser sur un sujet ou un document nouveau.
Conseil de révision. Lis d'abord cet encadré, puis fais le quiz : si tu bloques, reprends la partie du cours correspondante.
1. Pourquoi une base de données relationnelle ?
Stocker des données dans des fichiers plats (CSV) pose quatre problèmes : redondance, incohérence, absence de contrôle des accès concurrents et difficulté d'interrogation. Un SGBD relationnel (PostgreSQL, MySQL, SQLite) résout ces problèmes en garantissant les propriétés ACID : Atomicité, Cohérence, Isolation, Durabilité.
2. Le modèle relationnel
Une relation (table) est un ensemble de n-uplets (lignes) définis sur des attributs (colonnes) typés. Vocabulaire exigible :
- Schéma relationnel :
Eleve(id INTEGER, nom TEXT, classe TEXT). - Clé primaire : attribut(s) identifiant de façon unique chaque n-uplet ; ni nul, ni dupliqué.
- Clé étrangère : attribut référençant la clé primaire d'une autre relation.
- Contraintes d'intégrité : de domaine (type et valeurs admises), d'entité (unicité de la clé primaire), référentielle (toute clé étrangère pointe vers une ligne existante).
Schéma d'étude
CREATE TABLE eleve (
id INTEGER PRIMARY KEY,
nom TEXT NOT NULL,
classe TEXT CHECK (classe IN ('TG1','TG2','TG3'))
);
CREATE TABLE devoir (
id INTEGER PRIMARY KEY,
matiere TEXT NOT NULL,
coef REAL DEFAULT 1
);
CREATE TABLE note (
eleve_id INTEGER REFERENCES eleve(id),
devoir_id INTEGER REFERENCES devoir(id),
valeur REAL CHECK (valeur BETWEEN 0 AND 20),
PRIMARY KEY (eleve_id, devoir_id)
);
La table note illustre une association plusieurs-à-plusieurs : sa clé primaire est composite.
3. Interroger : le SELECT
SELECT nom, classe FROM eleve WHERE classe = 'TG2' ORDER BY nom;
Ordre d'écriture : SELECT ... FROM ... WHERE ... GROUP BY ... HAVING ... ORDER BY ... LIMIT.
Ordre d'évaluation logique : FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY. C'est pourquoi on ne peut pas utiliser un alias du SELECT dans le WHERE.
Jointures
SELECT e.nom, d.matiere, n.valeur
FROM note n
JOIN eleve e ON e.id = n.eleve_id
JOIN devoir d ON d.id = n.devoir_id
WHERE d.matiere = 'NSI';
JOIN(interne) : ne garde que les lignes appariées.LEFT JOIN: garde toutes les lignes de gauche, complète parNULL— utile pour repérer les élèves sans note.
Agrégats
SELECT e.classe, ROUND(AVG(n.valeur), 2) AS moyenne, COUNT(*) AS nb
FROM eleve e JOIN note n ON n.eleve_id = e.id
GROUP BY e.classe
HAVING COUNT(*) >= 5;
WHERE filtre les lignes avant regroupement, HAVING filtre les groupes après. Fonctions d'agrégation : COUNT, SUM, AVG, MIN, MAX.
4. Modifier les données
INSERT INTO eleve (id, nom, classe) VALUES (12, 'Nour', 'TG1');
UPDATE eleve SET classe = 'TG3' WHERE id = 12;
DELETE FROM note WHERE eleve_id = 12;
⚠️ Un UPDATE ou un DELETE sans WHERE s'applique à toute la table : erreur classique et irréversible hors transaction.
5. Transactions
BEGIN;
UPDATE compte SET solde = solde - 100 WHERE id = 1;
UPDATE compte SET solde = solde + 100 WHERE id = 2;
COMMIT; -- ou ROLLBACK en cas d'erreur
L'atomicité garantit que le virement est entièrement effectué ou pas du tout.
6. Erreurs fréquentes au bac
- Confondre clé primaire et identifiant « métier » (un nom n'est pas unique).
- Oublier que
NULLn'est égal à rien : on écritWHERE valeur IS NULL, jamais= NULL. - Placer une condition d'agrégat dans le
WHERE. - Supprimer une ligne référencée : le SGBD refuse (violation d'intégrité référentielle) sauf
ON DELETE CASCADE.
À retenir
Modèle relationnel = tables + clés + contraintes. SQL est déclaratif : on décrit ce que l'on veut, le SGBD choisit comment l'obtenir. Maîtriser JOIN, GROUP BY/HAVING et les contraintes d'intégrité suffit à traiter l'essentiel des exercices d'épreuve.
Sources et références
Ce cours est rédigé par l'équipe RévisionBac à partir du programme officiel et des sources institutionnelles ci-dessous. Elles permettent de vérifier les définitions, les chiffres et les normes citées.
- 1.Programmes et ressources du lycée général et technologique — Éduscol — Ministère de l'Éducation nationale
- 2.Bulletin officiel de l'Éducation nationale (programmes du baccalauréat) — education.gouv.fr
- 3.Ressources et programme de NSI — Éduscol
- 4.Documentation du langage Python — Python Software Foundation
- 5.Protection des données et RGPD — CNIL
Contenu vérifié et mis à jour le 10/09/2026. Les liens renvoient vers les sites officiels des éditeurs cités.
Historique éditorial
Ce chapitre est rédigé et relu par l'équipe RévisionBac, puis enrichi par les contributions validées.
- — Dernière mise à jour du cours (relecture et enrichissement)
- — Première publication de la fiche de cours