Numérique et Sciences Informatiques1ère

Jointures entre tables
Exercices corrigés

Maîtrisez les jointures entre tables : INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN, ON grâce à ces 5 exercices détaillés.

Concepts & Exercices
Table₁ ⋈ Table₂ = Résultat
Opération de jointure

Types de jointures

INNER JOIN
Intersection des tables
LEFT JOIN
Tous de gauche + correspondants
RIGHT JOIN
Tous de droite + correspondants
FULL JOIN
Union des tables
SELECT c.nom, c.prenom, cmd.date_cmd FROM Clients c INNER JOIN Commandes cmd ON c.id = cmd.client_id;
Exercice 1
Utiliser INNER JOIN pour combiner des tables
Exercice 2
Appliquer LEFT JOIN pour inclure toutes les lignes de gauche
Exercice 3
Utiliser RIGHT JOIN pour inclure toutes les lignes de droite
Exercice 4
Combiner plusieurs jointures dans une requête
Exercice 5
Optimiser une requête avec jointures complexes
Corrigé : Exercices 1 à 3
1 INNER JOIN
Définition :

INNER JOIN : Type de jointure qui retourne uniquement les lignes qui ont une correspondance dans les deux tables.

Syntaxe de base :
SELECT colonnes
FROM table1
INNER JOIN table2 ON table1.col = table2.col;
SELECT c.nom, c.prenom, cmd.date_cmd FROM Clients c INNER JOIN Commandes cmd ON c.id = cmd.client_id;
Étape 1 : Identifier les tables à joindre

Déterminer les deux tables qui contiennent les données nécessaires

Étape 2 : Identifier la clé de jointure

Trouver la colonne qui relie les deux tables (clé étrangère)

Étape 3 : Spécifier la condition ON

Indiquer comment les tables sont liées

Étape 4 : Sélectionner les colonnes

Choisir les colonnes à inclure dans le résultat

Étape 5 : Exécuter la requête

Appliquer la jointure et analyser les résultats

Réponse finale :

INNER JOIN ne retourne que les lignes avec correspondance dans les deux tables

Règles appliquées :

Correspondance : Seules les lignes avec des correspondances dans les deux tables sont retournées

Performance : Généralement la plus rapide des jointures

Cardinalité : Le nombre de résultats dépend des relations entre les tables

2 LEFT JOIN
Définition :

LEFT JOIN : Type de jointure qui retourne toutes les lignes de la table de gauche et les correspondances de la table de droite (NULL si aucune correspondance).

-- Tous les clients, même ceux sans commandes SELECT c.nom, c.prenom, cmd.date_cmd FROM Clients c LEFT JOIN Commandes cmd ON c.id = cmd.client_id;
Prendre toutes les lignes de la table de gauche
Trouver les correspondances dans la table de droite
Remplir avec NULL pour les non-correspondances
Retourner le résultat complet
Étape 1 : Identifier la table de gauche

Déterminer la table dont toutes les lignes doivent être conservées

Étape 2 : Identifier la table de droite

Spécifier la table à joindre à la gauche

Étape 3 : Définir la condition de jointure

Spécifier comment les tables sont liées

Étape 4 : Gérer les valeurs NULL

Prévoir que certaines colonnes de droite pourraient être NULL

Étape 5 : Analyser les résultats

Vérifier que toutes les lignes de gauche sont présentes

LEFT JOIN = Tous de gauche + Correspondances de droite
Réponse finale :

LEFT JOIN conserve toutes les lignes de la table de gauche

Règles appliquées :

Complétude gauche : Toutes les lignes de la table de gauche sont conservées

NULL pour absence : Les colonnes de droite sont NULL si aucune correspondance

Utilité : Utile pour les rapports complets (tous les clients, tous les employés, etc.)

3 RIGHT JOIN
Définition :

RIGHT JOIN : Type de jointure qui retourne toutes les lignes de la table de droite et les correspondances de la table de gauche (NULL si aucune correspondance).

-- Toutes les commandes, même si le client est supprimé SELECT c.nom, c.prenom, cmd.date_cmd FROM Clients c RIGHT JOIN Commandes cmd ON c.id = cmd.client_id;
Étape 1 : Identifier la table de droite

Déterminer la table dont toutes les lignes doivent être conservées

Étape 2 : Identifier la table de gauche

Spécifier la table à joindre à la droite

Étape 3 : Définir la condition de jointure

Spécifier comment les tables sont liées

Étape 4 : Gérer les valeurs NULL

Prévoir que certaines colonnes de gauche pourraient être NULL

Étape 5 : Analyser les résultats

Vérifier que toutes les lignes de droite sont présentes

Étape 6 : Considérer les alternatives

Évaluer si un LEFT JOIN avec inversion des tables serait plus clair

RIGHT JOIN = Tous de droite + Correspondances de gauche
Réponse finale :

RIGHT JOIN conserve toutes les lignes de la table de droite

Règles appliquées :

Complétude droite : Toutes les lignes de la table de droite sont conservées

NULL pour absence : Les colonnes de gauche sont NULL si aucune correspondance

Alternatives : Souvent remplacé par LEFT JOIN avec inversion des tables

Corrigé : Exercices 4 à 5
4 Jointures multiples
Définition :

Jointures multiples : Combinaison de plusieurs jointures dans une même requête pour relier plusieurs tables.

SELECT c.nom, cmd.date_cmd, p.libelle, dp.quantite FROM Clients c INNER JOIN Commandes cmd ON c.id = cmd.client_id INNER JOIN Details_Commande dp ON cmd.id = dp.commande_id INNER JOIN Produits p ON dp.produit_id = p.id;

Séquence de jointures

Clients → Commandes
INNER JOIN
Commandes → Details_Commande
INNER JOIN
Details_Commande → Produits
INNER JOIN
Étape 1 : Identifier toutes les tables nécessaires

Lister toutes les tables qui contiennent les données requises

Étape 2 : Déterminer l'ordre des jointures

Commencer par la table centrale et s'étendre progressivement

Étape 3 : Définir chaque condition de jointure

Spécifier comment chaque paire de tables est liée

Étape 4 : Gérer les types de jointures

Choisir le type approprié pour chaque jointure

Étape 5 : Sélectionner les colonnes pertinentes

Choisir les colonnes de toutes les tables nécessaires

Étape 6 : Tester et optimiser

Vérifier les résultats et optimiser si nécessaire

Jointures multiples = Séquence + Ordre + Conditions
Réponse finale :

Les jointures multiples permettent d'accéder à des données de plusieurs tables

Règles appliquées :

Ordre : Les jointures s'effectuent de gauche à droite

Performance : Peut ralentir les requêtes si mal optimisées

Clarté : Utiliser des alias pour améliorer la lisibilité

5 Optimisation jointures
Définition :

Optimisation : Techniques pour améliorer les performances des requêtes avec jointures multiples.

Étape 1 : Analyser le plan d'exécution

Comprendre comment la requête sera exécutée par le SGBD

Étape 2 : Vérifier les index

S'assurer que les colonnes de jointure sont indexées

Étape 3 : Minimiser les données traitées

Ajouter des filtres WHERE pour réduire les lignes

Étape 4 : Choisir le bon type de jointure

Utiliser le type le plus restrictif possible

Étape 5 : Éviter les jointures croisées

Ne pas oublier les conditions ON

Étape 6 : Considérer les sous-requêtes

Parfois plus efficaces que les jointures

Étape 7 : Tester avec des volumes réalistes

Valider les performances avec des données représentatives

Optimisation = Index + Filtres + Plan d'exécution
Réponse finale :

L'optimisation des jointures améliore les performances des requêtes

Règles appliquées :

Index : Les colonnes de jointure devraient être indexées

Filtres : Appliquer les conditions WHERE le plus tôt possible

Volume : Les jointures peuvent augmenter considérablement le volume de données

Cours bien détaillé
R = π(T₁ ⋈ T₂) | T₁, T₂ ∈ Tables
Produit cartésien conditionné
🔗
INNER JOIN : Intersection des tables, correspondance obligatoire.
⬅️
LEFT JOIN : Toutes les lignes de gauche, correspondances de droite.
➡️
RIGHT JOIN : Toutes les lignes de droite, correspondances de gauche.
↔️
FULL JOIN : Union des tables, toutes les lignes des deux côtés.
💡
Conseil : Utiliser des alias pour simplifier les requêtes longues
🔍
Attention : Vérifier les conditions ON pour éviter les erreurs
Astuce : Utiliser EXPLAIN pour analyser les performances
📋
Méthode : Commencer par INNER JOIN, puis passer à LEFT/RIGHT si nécessaire
Vérification : Toujours tester les requêtes avec des données réelles
Bonnes pratiques :
  • Alias : Utiliser des alias courts et explicites
  • Indentation : Formater les requêtes pour la lisibilité
  • Indexation : Créer des index sur les colonnes de jointure
  • Filtres : Appliquer les conditions WHERE pour réduire les données
  • Performance : Utiliser EXPLAIN pour analyser les plans d'exécution
  • Tests : Vérifier les requêtes avec des volumes de données réalistes
Règles importantes :
  • Les jointures s'effectuent de gauche à droite dans l'ordre spécifié
  • Les colonnes de jointure doivent avoir des types de données compatibles
  • Les jointures peuvent considérablement augmenter le volume de données
  • Les index sur les colonnes de jointure améliorent les performances
  • Il est crucial de comprendre la cardinalité des relations entre tables
Jointures entre tables Interrogation et manipulation