SQL intermédiaire : jointures, sous-requêtes et CASE WHEN

SQL intermédiaire (jointures, sous-requêtes) est un cours de niveau intermédiaire de 5 leçons (environ 2 h 32), avec 19 exercices et 15 questions de quiz. Prérequis : SQL fondamentaux (SELECT, filtres, agrégats). Les exercices s'exécutent dans le navigateur, sans installation.

  • SQL
  • Intermédiaire
  • 5 leçons
  • 2 h 32
  • 19 exercices
  • Exercices exécutés dans le navigateur

Le cours en bref

Ce cours vous apprend à interroger une base composée de plusieurs tables reliées par des clés. Vous écrirez des jointures internes et externes, des anti-jointures, des sous-requêtes scalaires, corrélées ou dans le FROM, et vous combinerez des résultats avec les opérations ensemblistes. Tous les exercices s'exécutent dans le navigateur sur une base de boutique en ligne.

Ce que tu sauras faire

  • Relier des tables avec INNER JOIN et LEFT JOIN en choisissant la bonne jointure
  • Trouver les lignes sans correspondance grâce à l'anti-jointure et à NOT EXISTS
  • Enchaîner plusieurs jointures et réaliser des auto-jointures
  • Écrire des sous-requêtes scalaires, avec IN ou EXISTS, corrélées ou en table dérivée
  • Créer des catégories et des tableaux croisés avec CASE WHEN
  • Combiner des résultats avec UNION, UNION ALL, INTERSECT et EXCEPT

Programme des 5 leçons

  1. 01

    Relier deux tables avec INNER JOIN

    18 minAperçu gratuit
    • Comprendre pourquoi les données sont réparties dans plusieurs tables reliées par des clés
    • Écrire une jointure interne avec JOIN ... ON
    • Utiliser des alias de tables et qualifier les colonnes ambiguës
    • Agréger le résultat d'une jointure

    Clé primaire et clé étrangèreINNER JOINAlias de tables

  2. 02

    Garder toutes les lignes : LEFT JOIN et anti-jointure

    18 min
    • Utiliser LEFT JOIN pour conserver les lignes sans correspondance
    • Trouver les lignes « orphelines » avec une anti-jointure (LEFT JOIN ... IS NULL)
    • Comprendre la différence entre une condition dans ON et dans WHERE

    LEFT JOINAnti-jointureCondition dans ON ou dans WHERERIGHT et FULL JOIN

  3. 03

    Jointures multiples et auto-jointure

    18 min
    • Enchaîner plusieurs jointures pour traverser un schéma (clients → commandes → lignes → produits)
    • Calculer des montants à partir d'une table de lignes de commande
    • Joindre une table à elle-même (auto-jointure) pour une hiérarchie

    Jointures multiplesTable d'associationAuto-jointure

  4. 04

    Les sous-requêtes : scalaires, IN, EXISTS et corrélées

    20 min
    • Utiliser une sous-requête scalaire dans un filtre
    • Filtrer avec IN, NOT IN et EXISTS
    • Construire une table dérivée dans le FROM
    • Écrire une sous-requête corrélée

    Sous-requête scalaireIN et EXISTSTable dérivéeSous-requête corrélée

  5. 05

    Logique conditionnelle et opérations ensemblistes : CASE, UNION, EXCEPT

    18 min
    • Créer des catégories avec CASE WHEN
    • Faire de l'agrégation conditionnelle (compter selon un critère dans un GROUP BY)
    • Combiner des résultats avec UNION, UNION ALL, INTERSECT et EXCEPT

    CASE WHENAgrégation conditionnelleUNION et UNION ALLINTERSECT et EXCEPT

Projet final

Analyse des ventes d'une boutique en ligne multi-tables

À partir des tables clients, commandes, lignes_commande, produits et fournisseurs (version enrichie de celles du cours), répondez aux questions de la direction commerciale : chiffre d'affaires par client et par catégorie, clients inactifs, produits jamais vendus, dernière commande de chaque client, segmentation des clients et comparaison de listes.

Livrables

  • Un fichier .sql d'au moins 10 requêtes commentées, chacune répondant à une question métier formulée en français
  • Au moins une jointure à quatre tables et une auto-jointure
  • Au moins une anti-jointure (LEFT JOIN ... IS NULL ou NOT EXISTS)
  • Au moins une table dérivée et une sous-requête corrélée
  • Une segmentation des clients avec CASE WHEN et un tableau croisé par agrégation conditionnelle
  • Une note expliquant le choix entre INNER et LEFT JOIN pour trois des requêtes

Critères d'évaluation

  • Les résultats sont exacts (pas de lignes perdues ou multipliées par une jointure)
  • Le type de jointure est justifié et les conditions sont placées dans ON ou WHERE à bon escient
  • Le piège NOT IN / NULL est évité
  • Les requêtes sont lisibles : alias explicites, indentation, commentaires
  • Les colonnes du résultat sont nommées clairement

Questions fréquentes

Quelle est la différence entre INNER JOIN et LEFT JOIN ?

INNER JOIN ne garde que les lignes qui ont une correspondance dans les deux tables. LEFT JOIN garde toutes les lignes de la table de gauche et remplit les colonnes de droite avec NULL quand il n'y a pas de correspondance.

Faut-il préférer une jointure ou une sous-requête ?

Les deux sont souvent équivalentes et les moteurs modernes les optimisent de façon similaire. On choisit la forme la plus lisible : EXISTS pour tester une existence, une jointure pour afficher des colonnes des deux tables.

Quel niveau faut-il avoir pour suivre ce cours ?

Il faut connaître SELECT, WHERE, ORDER BY, les fonctions d'agrégat et GROUP BY, enseignés dans le cours SQL fondamentaux.

Les exercices fonctionnent-ils avec PostgreSQL ou MySQL ?

Les exercices s'exécutent en SQLite, mais les requêtes enseignées sont du SQL standard qui fonctionne aussi sur PostgreSQL et, à quelques détails près, sur MySQL et SQL Server.

Ce cours, raconté pour ton métier

Dis ce que tu veux savoir faire : « SQL intermédiaire (jointures, sous-requêtes) » prend sa place dans ton parcours, avec des exemples de ton secteur. Les notions restent celles du cours.

L'aperçu est gratuit, et les cours se suivent un par un sans payer. Le parcours ne contient que des leçons du catalogue.