Sciences de gestion et numérique · Première STMGBac
Bases de données et requêtes : exercices de Première STMG
Publié le 10 novembre 2026 · Mis à jour le 10 novembre 2026 · Signaler une erreur
L'essentiel
- Une base de données organise les informations en tables : une ligne = un enregistrement, une colonne = un champ.
- Une requête se lit dans l'ordre : quoi afficher (SELECT), dans quelle table (FROM), sous quelle condition (WHERE).
- Les fonctions COUNT, SUM et AVG calculent un résultat sur un ensemble de lignes ; GROUP BY permet de faire ce calcul groupe par groupe.
- Une jointure relie deux tables grâce à un champ commun : la clé étrangère d'une table reprend la clé primaire de l'autre.
- Avant d'écrire une requête, simule-la à la main sur quelques lignes : tu vérifies ainsi son résultat.
Comment utiliser ces exercices
Dans une organisation, les informations du système d'information deviennent une ressource stratégique 3. Encore faut-il pouvoir les retrouver vite : c'est le rôle des requêtes posées à une base de données. Quand les données viennent de sources et de formats très différents, certaines organisations les regroupent dans des lacs de données 4. Ici, tu travailles sur de petites bases en tables, pour comprendre la logique d'une requête.
Les exercices sont classés du niveau 1 (lecture d'une requête) au niveau 3 (regroupement et jointure). Cherche d'abord seul, sur papier. Ouvre un indice seulement si tu bloques, puis compare avec la correction.
Voici la table PRODUIT d'une petite épicerie, utilisée dans les exercices 1 à 4 et 7.
| ref | nom | categorie | prix (€) | stock |
|---|---|---|---|---|
| P1 | Café | Boisson | 4,5 | 30 |
| P2 | Thé | Boisson | 12 | 15 |
| P3 | Biscuits | Épicerie | 9,9 | 50 |
| P4 | Miel | Épicerie | 15 | 8 |
| P5 | Jus | Boisson | 10 | 12 |
| P6 | Confiture | Épicerie | 22 | 20 |
Pour les exercices 5 et 6, deux autres tables : CLIENT et COMMANDE.
| id | ville |
|---|---|
| 1 | Lyon |
| 2 | Nantes |
| 3 | Lyon |
| num | id_client | montant (€) |
|---|---|---|
| C1 | 1 | 80 |
| C2 | 2 | 45 |
| C3 | 1 | 120 |
| C4 | 3 | 60 |
| C5 | 2 | 30 |
Les exercices
Exercice 1 Sélectionner les produits chers
On interroge la table PRODUIT avec la requête :
SELECT nom FROM PRODUIT WHERE prix > 10;
Combien de lignes cette requête renvoie-t-elle ?
Indice 1
Compare le prix de chaque produit au seuil, ligne par ligne.
Indice 2
Attention au signe : un prix égal à 10 est-il retenu ?
Voir la correction pas à pas
La condition garde les produits dont le prix est strictement supérieur à 10 €.
Café : 4,5 € ne passe pas. Thé : 12 € passe. Biscuits : 9,9 € ne passe pas.
Miel : 15 € passe. Jus : 10 € ne passe pas, car 10 n'est pas strictement supérieur à 10. Confiture : 22 € passe.
Les lignes renvoyées sont Thé, Miel et Confiture : 3 lignes.
La requête renvoie 3 lignes (Thé, Miel, Confiture). Le Jus, à 10 € pile, est écarté par le signe strict.
Exercice 2 Combiner deux conditions
On exécute :
SELECT nom FROM PRODUIT
WHERE categorie = 'Boisson' AND stock < 20;
Combien de produits sont affichés ?
Indice 1
Avec AND, une ligne doit vérifier les deux conditions en même temps.
Indice 2
Commence par ne garder que les boissons, puis regarde leur stock.
Voir la correction pas à pas
Les boissons sont Café (stock 30), Thé (stock 15) et Jus (stock 12).
Café a un stock de 30 : la condition stock < 20 est fausse, il est écarté.
Thé (15) et Jus (12) vérifient les deux conditions.
Les produits de la catégorie Épicerie sont éliminés dès la première condition. Il reste 2 produits.
2 produits s'affichent : Thé et Jus. Avec AND, il suffit qu'une seule condition soit fausse pour écarter la ligne.
Exercice 3 Calculer la valeur du stock
Le gérant veut connaître la valeur totale de son stock, c'est-à-dire la somme de prix × stock sur tous les produits.
- Écris la requête SQL correspondante.
- Calcule le résultat à partir de la table PRODUIT.
Indice 1
On peut mettre un calcul entre parenthèses dans la fonction SUM.
Indice 2
Calcule d'abord la valeur de chaque ligne, puis additionne.
Voir la correction pas à pas
Requête :
SELECT SUM(prix * stock) FROM PRODUIT;. Aucune condition WHERE : toutes les lignes comptent.Valeur de chaque ligne : Café 4,5 × 30 = 135 ; Thé 12 × 15 = 180 ; Biscuits 9,9 × 50 = 495.
Miel 15 × 8 = 120 ; Jus 10 × 12 = 120 ; Confiture 22 × 20 = 440.
Somme : 135 + 180 + 495 + 120 + 120 + 440 = 1 490.
La valeur totale du stock est de 1 490 €.
Exercice 4 Prix moyen d'une catégorie
On exécute :
SELECT AVG(prix) FROM PRODUIT WHERE categorie = 'Épicerie';
Quel prix moyen obtient-on, arrondi au centime ?
Indice 1
Le filtre WHERE agit avant le calcul de la moyenne.
Indice 2
La moyenne est la somme des prix divisée par le nombre de lignes retenues.
Voir la correction pas à pas
Le WHERE ne garde que Biscuits (9,9), Miel (15) et Confiture (22).
Somme des prix : 9,9 + 15 + 22 = 46,9.
Nombre de lignes retenues : 3.
Moyenne : 46,9 ÷ 3 ≈ 15,6333, soit 15,63 € au centime près.
Le prix moyen des produits d'épicerie est d'environ 15,63 €. Si tu avais moyenné les six produits, tu aurais oublié le filtre.
Exercice 5 Relier deux tables par une jointure
On veut le total des montants des commandes passées par les clients de Lyon.
SELECT SUM(montant)
FROM COMMANDE
JOIN CLIENT ON COMMANDE.id_client = CLIENT.id
WHERE ville = 'Lyon';
Quel résultat renvoie cette requête ?
Indice 1
Commence par repérer les identifiants des clients de Lyon dans CLIENT.
Indice 2
La jointure associe chaque commande au client dont l'id est égal à id_client.
Voir la correction pas à pas
Dans CLIENT, les clients de Lyon ont les id 1 et 3.
La jointure relie chaque commande à son client grâce à id_client = id.
Commandes du client 1 : C1 (80 €) et C3 (120 €). Commande du client 3 : C4 (60 €). Les commandes C2 et C5 appartiennent au client 2 (Nantes) : elles sont écartées.
Somme : 80 + 120 + 60 = 260.
Les clients de Lyon ont passé pour 260 € de commandes. Le champ id_client joue le rôle de clé étrangère : il reprend l'identifiant de la table CLIENT.
Exercice 6 Regrouper et filtrer les groupes
On exécute sur la table COMMANDE :
SELECT id_client, SUM(montant)
FROM COMMANDE
GROUP BY id_client
HAVING SUM(montant) > 100;
Combien de lignes cette requête renvoie-t-elle ?
Indice 1
GROUP BY crée un groupe par client, puis SUM calcule le total de chaque groupe.
Indice 2
HAVING filtre les groupes une fois les totaux calculés, alors que WHERE filtre les lignes avant.
Voir la correction pas à pas
Groupe du client 1 : 80 + 120 = 200.
Groupe du client 2 : 45 + 30 = 75.
Groupe du client 3 : 60 seulement.
Seul le total 200 dépasse 100. La requête renvoie une ligne : le client 1 avec 200 €.
La requête renvoie 1 ligne (client 1, 200 €). On ne pouvait pas écrire ce filtre avec WHERE, car le total n'existe qu'après le regroupement.
Exercice 7 Corriger une requête erronée
Un élève veut afficher le nom des produits de la catégorie Boisson dont le prix est au plus égal à 10 €. Il écrit :
SELECT nom FROM PRODUIT
WHERE categorie = Boisson AND prix < 10;
- Repère les deux erreurs.
- Écris la requête corrigée.
- Indique quels produits elle affiche.
Indice 1
Une valeur de texte se met entre apostrophes.
Indice 2
Pour inclure la valeur 10, quel signe faut-il choisir ?
Voir la correction pas à pas
Première erreur : Boisson est un texte, il faut l'écrire entre apostrophes : 'Boisson'.
Seconde erreur : « au plus égal à 10 » signifie prix <= 10 ; avec < 10, le produit à 10 € serait oublié.
Requête corrigée :
SELECT nom FROM PRODUIT WHERE categorie = 'Boisson' AND prix <= 10;.Boissons : Café (4,5 €) et Jus (10 €) passent, Thé (12 €) est écarté. Elle affiche Café et Jus.
La requête corrigée affiche Café et Jus. Relis toujours l'énoncé mot à mot pour choisir entre < et <=.
Les questions qu'on se pose
Quelle différence entre WHERE et HAVING ?
WHERE filtre les lignes avant tout calcul. HAVING filtre les groupes après un GROUP BY, donc il peut porter sur un total ou une moyenne. Si ta condition utilise SUM, AVG ou COUNT, c'est HAVING qu'il te faut.
Comment vérifier qu'une requête est juste sans ordinateur ?
Simule-la à la main, comme dans les corrections : liste les lignes de la table, barre celles qui ne respectent pas la condition, puis calcule sur celles qui restent. Contrôle surtout les valeurs égales au seuil et les apostrophes autour des textes.
Sources
Programme visé : Programme de Sciences de gestion et numérique - Première STMG · Ministère de l'Éducation nationale (Bulletin officiel spécial n°1 du 22 janvier 2019)
- Programme de Sciences de gestion et numérique - Première STMG, Ministère de l'Éducation nationale (Bulletin officiel spécial n°1 du 22 janvier 2019). Consulté le 10 novembre 2026.
- Programmes et ressources en série STMG - Éduscol, Éduscol - Ministère de l'Éducation nationale. Consulté le 10 novembre 2026.
- Ressources Thème 2 : Numérique et intelligence collective - Sciences de gestion STMG Première, Éduscol - Ministère de l'Éducation nationale. Consulté le 10 novembre 2026.
- Ressources pédagogiques : Contenus et données massives en STMG, Éduscol - Ministère de l'Éducation nationale. Consulté le 10 novembre 2026.
- Ressources pédagogiques : Systèmes de gestion de bases de données relationnelles (SGBDR), Éduscol. Consulté le 10 novembre 2026.
- Ressources : Requêtes et extraction de données, Éduscol. Consulté le 10 novembre 2026.
Les numéros dans le texte renvoient à ces sources. Une source qui ne dit pas ce qu'on lui fait dire ? Signale-le.