Aller au contenu

Numérique et sciences informatiques (spécialité) · TerminaleBac

SQL : jointures et mises à jour, quiz de Terminale NSI

Publié le 7 novembre 2026 · Mis à jour le 7 novembre 2026 · Signaler une erreur

L'essentiel

  • JOIN ... ON relie deux tables en comparant, dans la clause ON, une clé étrangère à la clé primaire qu'elle désigne.
  • Un produit cartésien (deux tables sans condition de liaison) renvoie autant de lignes que le produit des tailles des tables.
  • AND exige que les deux conditions soient vraies, OR qu'au moins l'une le soit.
  • UPDATE table SET colonne = valeur WHERE condition modifie les lignes ciblées ; sans WHERE, toute la table est modifiée.
  • INSERT INTO table (colonnes) VALUES (valeurs) ajoute une ligne : colonnes et valeurs doivent correspondre en nombre et en ordre.

Avant de commencer

Ce quiz porte sur les requêtes SQL qui croisent plusieurs tables et sur celles qui modifient les données. Le programme de spécialité NSI demande de savoir écrire des requêtes avec les opérateurs logiques AND et OR ainsi que des jointures JOIN ... ON 2. Il demande aussi de construire des requêtes d'insertion et de mise à jour, notamment avec UPDATE 2.

Tu as déjà vu le modèle relationnel, le rôle d'un SGBD et les requêtes de sélection simples. Ici, on va plus loin : relier des tables, combiner des conditions, puis changer le contenu d'une base.

Toutes les questions s'appuient sur la même petite base, un lycée fictif. Elle contient deux tables.

La table classes décrit les classes :

Table classes
id_classenom
10TG1
20TG2
30TG3
Table classes

La table eleves décrit les élèves. La colonne id_classe est une clé étrangère : elle contient l'identifiant d'une ligne de classes.

Table eleves
id_elevenomid_classemoyenne
1Alice1014
2Bastien109
3Chloé2012
4David2016
Table eleves

Quiz

14 questions · correction immédiate · ton score reste sur ton appareil.

  1. Dans la requête suivante, quel rôle joue la clause ON ?

    SELECT eleves.nom, classes.nom
    FROM eleves
    JOIN classes ON eleves.id_classe = classes.id_classe;
    

  2. Avec les tables eleves (4 lignes) et classes (3 lignes) de l'introduction, combien de lignes renvoie la requête suivante ?

    SELECT eleves.nom, classes.nom
    FROM eleves
    JOIN classes ON eleves.id_classe = classes.id_classe;
    

  3. On écrit par erreur SELECT * FROM eleves, classes; sans aucune condition de liaison. Combien de lignes obtient-on avec 4 élèves et 3 classes ?

  4. Combien de lignes renvoie la requête suivante ?

    SELECT eleves.nom
    FROM eleves
    JOIN classes ON eleves.id_classe = classes.id_classe
    WHERE classes.nom = 'TG2' AND eleves.moyenne >= 15;
    

  5. Combien d'élèves sont renvoyés par la requête suivante ?

    SELECT nom FROM eleves
    WHERE moyenne < 10 OR moyenne > 15;
    

  6. Quelle requête change la moyenne de Bastien en 10 sans toucher aux autres élèves ?

  7. Vrai ou faux : l'instruction UPDATE eleves SET id_classe = 30;, sans clause WHERE, modifie la classe de tous les élèves.

  8. Quelle requête ajoute correctement l'élève Emma (identifiant 5, classe 10, moyenne 13) ?

  9. Dans une requête qui joint eleves et classes, pourquoi écrit-on eleves.id_classe et classes.id_classe plutôt que simplement id_classe ?

  10. Après l'exécution de la requête suivante, quelle est la moyenne de David (initialement 16) ?

    UPDATE eleves SET moyenne = moyenne + 1 WHERE id_classe = 20;
    

  11. On exécute UPDATE eleves SET id_classe = 30 WHERE nom = 'Alice';, puis on joint eleves et classes avec ON eleves.id_classe = classes.id_classe. Combien d'élèves sont maintenant associés à la classe TG3 ?

  12. Quelles affirmations sur JOIN ... ON sont correctes ? (plusieurs réponses)

    Plusieurs réponses possibles.

  13. Quelle requête affiche les noms des élèves de la classe TG1 ?

  14. Vrai ou faux : dans WHERE a = 1 AND b = 2, une ligne est conservée dès que l'une des deux conditions est vraie.

Les questions qu'on se pose

Quelle est la différence entre JOIN et WHERE pour relier deux tables ?

JOIN ... ON exprime clairement le lien entre les tables (clé étrangère égale à clé primaire), puis WHERE sert à filtrer le résultat. Le programme demande de maîtriser la jointure avec JOIN ... ON 2. Garder le lien dans ON et le filtre dans WHERE rend la requête plus lisible et évite d'oublier la condition de liaison.

Comment éviter de modifier toute une table avec UPDATE par erreur ?

Écris d'abord la clause WHERE, puis le SET. Tu peux aussi tester la condition avec un SELECT qui utilise le même WHERE : si les lignes affichées sont bien celles à modifier, remplace le SELECT par l'UPDATE. Le programme associe les requêtes de mise à jour à UPDATE 2, et la condition est ce qui limite son effet.

Sources

  1. Spécialité NSI – Numérique et Sciences Informatiques, Éduscol STI. Consulté le 7 novembre 2026.
  2. Baccalauréat général 2025 – Numérique et sciences informatiques, Ministère de l'Éducation Nationale. Consulté le 7 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.

Signaler une erreur sur cette page

Je suis en…

Primaire

  • CP Bientôt
  • CE1 Bientôt
  • CE2 Bientôt
  • CM1 Bientôt
  • CM2 Bientôt

Collège

Lycée

Supérieur

  • BTS Bientôt
  • BUT Bientôt
  • Licence Bientôt
  • Prépas Bientôt

Sur cette page