ESSENTIEL - Les requêtes SQL

82 vues

Un tableur donne une photographie ponctuelle d'un tableau de chiffres ; une base de données relationnelle, elle, héberge l'ensemble des informations d'une organisation, et c'est en SQL qu'on va y chercher exactement ce dont on a besoin.

Longtemps réduite à quelques questions isolées, cette compétence occupe aujourd'hui une place centrale dans les épreuves de gestion : le schéma relationnel, les requêtes SQL et les formules Excel figurent dans la quasi-totalité des sujets du DCG (UE8, Systèmes d'information de gestion) et du BTS Comptabilité et Gestion (processus 7).

La réforme du DCG, applicable à la session 2027, en profite pour actualiser la norme SQL attendue : c'est ce qui a changé, et pourquoi, que cet essentiel se propose de clarifier.

Le principe

Une base de données relationnelle organise l'information en tables (ou relations), chacune correspondant à une entité de gestion (CLIENT, COMMANDE, PRODUIT...).

Chaque table est identifiée par une clé primaire, qui garantit l'unicité de chaque enregistrement, et les tables sont reliées entre elles par des clés étrangères, qui reprennent dans une table la clé primaire d'une autre pour matérialiser une relation (un client passe des commandes, une commande porte sur des produits).

Le langage SQL (Structured Query Language) permet d'interroger cette structure,

  • en lecture avec l'instruction SELECT, et de la faire évoluer
  • en écriture avec les instructions INSERT, UPDATE et DELETE, regroupées sous le nom de langage de manipulation des données (LMD).

Les grandes clauses de l'instruction SELECT

Clause Rôle
SELECT liste les colonnes (ou expressions calculées) que la requête doit renvoyer
FROM indique la ou les tables interrogées
WHERE filtre les lignes selon une ou plusieurs conditions (avant tout regroupement)
GROUP BY regroupe les lignes filtrées par valeur commune, en vue d'un calcul par groupe
HAVING filtre les groupes obtenus après un GROUP BY (l'équivalent du WHERE, mais après regroupement)
ORDER BY trie le résultat final, en croissant (ASC, par défaut) ou décroissant (DESC)

Ces clauses s'écrivent toujours dans cet ordre (SELECT... FROM... WHERE... GROUP BY... HAVING... ORDER BY...), même si leur ordre d'exécution logique par le SGBD est différent (FROM et WHERE sont évalués avant SELECT).

SQL-92 : ce qui change dans la norme attendue à l'examen

Jusqu'à présent, une jointure entre deux tables pouvait s'écrire de façon « implicite », en listant simplement les tables dans le FROM et en posant la condition de rapprochement dans le WHERE.
La réforme du DCG (arrêté du 4 août 2025, programme applicable à la session 2027) impose désormais le passage du SQL-89 (l'ancienne norme, encore tolérée dans une partie des sujets 2025-2026) au SQL-92, qui impose l'écriture explicite des jointures avec le mot-clé JOIN.

  Ancienne écriture (SQL-89, jointure implicite) Écriture attendue (SQL-92, jointure explicite)
Principe les tables sont juxtaposées dans le FROM, séparées par une virgule ; la condition de rapprochement est noyée dans le WHERE, au même niveau que les filtres la jointure fait l'objet d'une clause dédiée (INNER JOIN, LEFT JOIN, RIGHT JOIN...) avec sa condition introduite par ON ; le WHERE ne sert plus qu'aux filtres
Lisibilité condition de jointure et condition de filtre indissociables au premier coup d'œil la structure de la requête distingue immédiatement « comment les tables se relient » et « ce qu'on filtre »
Jointures externes syntaxe non standard, dépendante du SGBD (ex. (+) sous Oracle) LEFT JOIN / RIGHT JOIN normalisés, portables d'un SGBD à l'autre

Voir le mémo dédié « Jointures SQL : implicite (WHERE) ou explicite (JOIN) » pour le détail des trois types de jointure (INNER, LEFT, RIGHT) et des exemples chiffrés.

Les opérateurs du WHERE (et du HAVING)

Catégorie Opérateurs Exemple
Comparaison =, <>, <, >, <=, >= villeclient = 'Rouen'
Ensemble de valeurs IN (...) codecat IN ('P', 'R')
Intervalle BETWEEN ... AND ... montant BETWEEN 500 AND 1000
Motif texte LIKE (jokers % et _) nomclient LIKE 'B%'
Valeur absente IS NULL / IS NOT NULL telclient IS NULL
Combinaison logique AND, OR, NOT codecat = 'R' AND numcom = '01'

Cas particuliers

Situation Ce qu'il faut retenir Pour aller plus loin
Requête portant sur plusieurs tables liées utiliser une jointure explicite (INNER JOIN par défaut, LEFT/RIGHT JOIN pour conserver les lignes sans correspondance) Mémo « Jointures SQL : implicite (WHERE) ou explicite (JOIN) »
Calcul par groupe (total par client, nombre de commandes par commercial...) combiner une fonction d'agrégation (SUM, COUNT...) avec GROUP BY, et filtrer les groupes avec HAVING (jamais WHERE) Mémo « GROUP BY et fonctions d'agrégation SQL »
Condition qui dépend du résultat d'une autre requête imbriquer une sous-requête (SELECT dans le WHERE, avec IN, EXISTS ou un opérateur de comparaison) Mémo « Les sous-requêtes SQL »
Créer, modifier ou supprimer des données (pas seulement les consulter) utiliser le langage de manipulation des données : INSERT INTO, UPDATE... SET, DELETE FROM Mémo « INSERT, UPDATE, DELETE : le langage de manipulation des données »

Erreurs fréquentes et bons réflexes

Erreur Conséquence Bon réflexe
Écrire une jointure « à l'ancienne » (virgule dans le FROM, condition dans le WHERE) requête non conforme à la norme SQL-92 attendue depuis la réforme 2027 du DCG, points perdus même si le résultat est juste toujours écrire la jointure avec INNER JOIN / LEFT JOIN / RIGHT JOIN ... ON ...
Filtrer un groupe avec WHERE au lieu de HAVING erreur de syntaxe : WHERE s'applique avant le regroupement, il ne peut pas porter sur le résultat d'une fonction d'agrégation réserver WHERE aux filtres sur les lignes brutes, HAVING aux filtres sur les groupes
Oublier la clé primaire dans un INSERT alors qu'elle n'est pas auto-incrémentée rejet de la requête par le SGBD (contrainte d'unicité violée) ou clé NULL non autorisée toujours vérifier si la clé primaire doit être fournie explicitement ou est générée automatiquement
Tester une valeur absente avec = NULL la condition ne renvoie jamais vrai, même quand la valeur est réellement absente utiliser IS NULL / IS NOT NULL
Modifier ou supprimer des données sans clause WHERE UPDATE ou DELETE s'applique à toutes les lignes de la table, pas seulement à celle visée toujours vérifier la présence et la portée exacte du WHERE avant de valider un UPDATE ou un DELETE

Bonnes pratiques

Une requête SQL correcte à l'examen n'est pas seulement une requête qui « donne le bon résultat » : elle doit aussi respecter la syntaxe et la norme attendues.

Bon réflexe Pourquoi ?
Systématiquement écrire les jointures en SQL-92 (JOIN ... ON ...) c'est la norme désormais exigée par le programme DCG UE8 (réforme 2027) et déjà la meilleure pratique professionnelle
Terminer chaque requête par un point-virgule convention attendue par la plupart des correcteurs et des SGBD en mode multi-requêtes
Utiliser des alias de table lisibles (ex. C pour CLIENT) dès que plusieurs tables sont jointes évite les ambiguïtés de colonnes portant le même nom dans deux tables et allège l'écriture
Vérifier la portée d'un UPDATE ou d'un DELETE avant de le valider ces instructions modifient réellement les données ; une clause WHERE absente ou mal ciblée est irréversible

En résumé

Principe Ce qu'il impose
Intégrité référentielle une clé étrangère ne peut référencer qu'une valeur existant réellement comme clé primaire dans la table référencée
Unicité de la clé primaire aucun doublon, aucune valeur vide : c'est elle qui garantit qu'un enregistrement est identifiable sans ambiguïté
Séparation lecture / écriture le SELECT (interrogation) et le LMD — INSERT, UPDATE, DELETE (modification) — répondent à des logiques et des risques différents
Conformité à la norme d'examen à partir de la session 2027 du DCG, une requête doit respecter le SQL-92 (jointures explicites) pour être pleinement valorisée

Dans la bibliothèque Rodco

Mémos

  • Jointures SQL : implicite (WHERE) ou explicite (JOIN)
  • GROUP BY et fonctions d'agrégation SQL
  • Les sous-requêtes SQL » et « INSERT, UPDATE, DELETE : le langage de manipulation des données ».

Lire les commentaires (0)

Articles similaires


Soyez le premier à réagir

Ne sera pas publié

Envoyé !

Derniers articles

ESSENTIEL - La facturation électronique

ESSENTIEL - La facturation électronique

04 Sep 2026

Réception obligatoire depuis septembre 2026, émission généralisée en 2027 : le calendrier, le rôle des plateformes agréées et la différence entre e-invoicing et e-reporting.

MÉMO - Déclarer les taxes sur les véhicules : quelles lignes, quel formulaire

MÉMO - Déclarer les taxes sur les véhicules : quelles lignes, quel formulaire

04 Sep 2026

Ces taxes se déclarent en annexe de la TVA. Formulaire 3310-A-SD ou CA12, numéros de lignes, codes et comptages de véhicules obligatoires.

MÉMO - Calculer les taxes sur les véhicules : la méthode par tranches

MÉMO - Calculer les taxes sur les véhicules : la méthode par tranches

04 Sep 2026

Le barème WLTP se calcule par tranches marginales comme l'impôt sur le revenu. Méthode en quatre étapes, cumuls à retenir et trois calculs commentés.