fantasticode.fr
Image default

10 exercices de SQL pour progresser (avec corrections)

En bref

Voici 10 exercices de SQL avec leur piste de correction, construits comme une enquête progressive sur une même base : une boutique avec trois tables — clients (id, nom, ville), produits (id, nom, prix) et commandes (id, client_id, produit_id, quantite, date_commande). Au programme : lister les clients d’une ville, trouver les produits sous un prix donné, compter les clients par ville, calculer le chiffre d’affaires total puis le panier moyen, établir le top 5 des ventes, afficher les commandes avec le nom du client (jointure), débusquer les clients sans commande (le grand classique LEFT JOIN), corriger un prix en toute sécurité (UPDATE avec filet), et créer soi-même une quatrième table — la synthèse. Monte la base en cinq minutes dans DB Browser for SQLite, puis mène l’enquête requête par requête : chaque exercice répond à une vraie question de gérant.

Le SQL s’apprend en interrogeant de vraies données — alors jouons au gérant de boutique qui veut comprendre son activité. Ces 10 exercices de SQL se mènent tous sur la même petite base (le schéma est dans le résumé ci-dessus : trois tables, une dizaine de lignes chacune, cinq minutes de saisie dans DB Browser for SQLite) et suivent la progression de nos bases du SQL, dans le cadre du parcours apprendre le SQL. Une règle avant de commencer : écris chaque requête toi-même avant de lire la piste — 15 minutes d’effort réel, comme toujours.

Exercices 1 à 5 : filtrer, trier, compter

  1. Les clients de Lyon. Liste le nom de tous les clients lyonnais, par ordre alphabétique. Piste : SELECT nom FROM clients, un WHERE sur la ville, un ORDER BY nom — ta première question métier réglée en une ligne qui se lit en français.
  2. Les produits abordables. Tous les produits à moins de 50 €, du moins cher au plus cher. Piste : WHERE prix < 50 et ORDER BY prix — puis varie : entre 20 et 50 € (AND ou BETWEEN), les noms commençant par une lettre donnée (LIKE et son joker %).
  3. L’effectif par ville. Combien de clients dans chaque ville ? Piste : COUNT(*) marié à GROUP BY ville — une ligne de résultat par ville. Ajoute un ORDER BY sur le comptage pour classer les villes : ton premier mini tableau de bord.
  4. Le chiffre d’affaires. Le total des ventes, sachant qu’une commande vaut quantite × prix du produit. Piste : il faut déjà relier commandes et produits (JOIN sur produit_id), puis SUM(quantite * prix) — oui, une jointure se cache dans un exercice d’agrégat : c’est voulu, le SQL réel mélange tout.
  5. Le panier moyen. Le montant moyen d’une commande. Piste : même jointure, AVG(quantite * prix) — et arrondis le résultat avec ROUND(…, 2) pour un affichage présentable. Compare avec le total : les deux chiffres racontent-ils la même histoire ?

Exercices 6 à 10 : croiser, écrire, structurer

  1. Le top 5 des ventes. Les cinq produits les plus vendus en quantité. Piste : SUM(quantite) par produit (GROUP BY), ORDER BY sur cette somme en DESC, LIMIT 5 — la requête type de tous les classements, à savoir écrire les yeux fermés.
  2. Les commandes nominatives. Chaque commande avec le nom du client et le nom du produit. Piste : deux JOIN dans la même requête — commandes vers clients, commandes vers produits — chacun sur sa colonne de couture. Le résultat ressemble enfin à un relevé lisible par un humain : c’est exactement le rôle des jointures.
  3. Les clients fantômes. Les clients qui n’ont jamais rien commandé. Piste : le grand classique — LEFT JOIN de clients vers commandes, puis WHERE commandes.id IS NULL : la jointure externe garde les clients sans correspondance, le filtre les isole. Comprends-le vraiment : c’est une question d’entretien récurrente, et surtout un raisonnement qui ressert sans cesse.
  4. La correction de prix. Un produit augmente de 10 % : mets sa fiche à jour — sans toucher les autres. Piste : d’abord un SELECT avec le WHERE prévu pour vérifier la cible, puis UPDATE produits SET prix = prix * 1.10 WHERE id = … — le rituel de prudence des bases, appliqué pour de vrai. Ose ensuite l’expérience inverse sur une copie : un UPDATE sans WHERE, pour voir — la leçon vaut le détour.
  5. Ta propre table. La boutique lance des avis clients : crée la table avis (id, client_id, produit_id, note, commentaire), insère trois avis, puis affiche chaque avis avec le nom du client et du produit. Piste : CREATE TABLE avec les bons types, des INSERT, puis tes jointures de l’exercice 7 recyclées — la synthèse complète : structurer, écrire, interroger.

La méthode : lire les résultats, pas seulement les écrire

Le SQL a une pédagogie intégrée : chaque requête affiche son résultat, immédiatement. Exploite-la à fond avec trois habitudes. Prédis avant d’exécuter : annonce à voix haute le nombre de lignes et l’allure du résultat attendu — l’écart entre ta prédiction et la réalité est exactement l’endroit où loge ta prochaine compréhension (un GROUP BY qui renvoie plus de lignes que prévu, une jointure qui en multiplie…). Décompose les requêtes composées : le chiffre d’affaires te résiste ? Écris d’abord la jointure seule, vérifie ses lignes, puis ajoute l’agrégat — le SQL se construit par couches, comme des poupées russes. Casse ta base sans peur : elle est d’entraînement, recréable en cinq minutes — c’est précisément le terrain où l’UPDATE sans WHERE doit arriver une fois, pour ne plus jamais arriver ensuite.

Série terminée ? Tu tiens la compétence SQL opérationnelle : filtres, agrégats, jointures, écriture, structure. La suite la plus rentable est le branchement sur tes projets — transformer le livre d’or de nos exercices de PHP en version persistante, archiver les résultats d’un script Python, ou préparer les données d’une future API REST. Et pour entretenir le réflexe, les sites d’exercices gratuits proposent tous des pistes SQL sur des bases prêtes à l’emploi, et les défis de code quotidiens gardent le réflexe affûté — l’enquête ne fait que commencer.

Questions fréquentes

Comment s’entraîner en SQL avec des données réalistes ?

Monte une petite base à thème (boutique, bibliothèque, club de sport) avec deux ou trois tables reliées et une dizaine de lignes chacune dans un outil comme DB Browser for SQLite, puis réponds à de vraies questions de gestion : effectifs, totaux, classements, croisements. Le réalisme du scénario porte l’apprentissage.

Quel est l’exercice SQL le plus important à maîtriser ?

La jointure, sous ses deux formes : la jointure interne qui croise deux tables (commandes avec noms de clients) et la jointure externe qui révèle les absences (clients sans commande, via LEFT JOIN et IS NULL). Ces deux raisonnements couvrent l’essentiel du SQL professionnel quotidien.

Comment vérifier une requête UPDATE ou DELETE avant de l’exécuter ?

Exécute d’abord un SELECT avec exactement la même clause WHERE : les lignes affichées sont celles qui seront modifiées ou supprimées. Si le compte et le contenu correspondent à ton intention, transforme le SELECT en UPDATE ou DELETE. Ce rituel en deux temps évite les catastrophes classiques.

Que faire après ces 10 exercices SQL ?

Branche le SQL sur un vrai projet : donne une mémoire persistante à une application PHP ou Python, ou conçois la base d’une idée personnelle (trois tables, leurs relations, les requêtes clés). C’est l’usage en situation qui transforme la syntaxe apprise en compétence durable.

Sources

Cet article a une vocation informative et pédagogique. Les plateformes, outils et formations éventuellement cités le sont à titre d’exemple ; compare plusieurs options avant de t’engager ou de payer.