DCG · UE 8 · Atelier corrigé

Atelier SQL — Sous-requête et mise à jour ciblée

Couverture de l’UE : Première version : chaque rubrique du sommaire dispose d’un cours de méthode. La couverture reste partielle : approfondissements encore nécessaires en normalisation, fonctions de tableur, programmation VBA exécutée dans Excel, diagrammes BPMN complets et cas transversaux. Les exercices SQL sont contrôlés sur un jeu d’essai SQLite ; les particularités d’autres SGBD et tableurs doivent être vérifiées.

Objectif : Appliquer la méthode et expliquer ses contrôles.

Jeu de données de cet atelier

Clients : (1, Alma), (2, Boréal), (3, Cyprès). Factures (identifiant, client, montant en euros) : (10, 1, 600), (11, 1, −100), (12, 2, 300), (13, 2, 250), (14, 1, NULL). Le client 3 n’a aucune facture. NULL est un montant non renseigné.

Données du cas

Reprenez les tables et les montants initiaux. La moyenne demandée porte sur les seuls montants connus, avoirs compris. La correction de la facture 12 doit la faire passer de 300 à 310 €, sans modifier les autres factures.

Démarche

Définissez le résultat attendu avant de choisir la formule ou la requête. Contrôlez les valeurs manquantes, les limites et le périmètre. Comparez votre réponse au corrigé en distinguant calcul, interprétation et conditions d’exécution.

Exercice

1. Extrayez les factures dont le montant dépasse cette moyenne. 2. Écrivez la mise à jour ciblée. 3. Donnez un contrôle avant/après.

Afficher le corrigé expliqué

1. SELECT id_facture, montant FROM Facture WHERE montant > (SELECT AVG(montant) FROM Facture) ORDER BY id_facture; La moyenne vaut 1 050 / 4 = 262,50 €. Résultat : (10, 600), (12, 300). 2. UPDATE Facture SET montant = 310 WHERE id_facture = 12; 3. Avant exécution, vérifier la facture 12 ; après, vérifier qu’une seule ligne a changé et que le total connu augmente de 10 €, de 1 050 à 1 060 €. Le test pédagogique est exécuté dans une base temporaire puis annulé ; il ne touche aucune donnée réelle.

Question de validation

Sans WHERE, cette instruction UPDATE modifierait :

  1. Seulement la facture 12
  2. Toutes les lignes de Facture
  3. Aucune ligne
Vérifier la réponse

Réponse B : Toutes les lignes de Facture

Sans condition WHERE, UPDATE applique l’affectation à toutes les lignes de la table.

Sources complémentaires

Repères théoriques ; exemples et exercices originaux.

Référentiel

Annexe officielle DCG · Bulletin officiel

Ouvrir ce cours dans l’espace interactif →