Cours
Comprendre les subtilités des jointures SQL est indispensable pour toute personne travaillant avec des bases de données relationnelles. Dans ce tutoriel, nous allons examiner de près LEFT JOIN et LEFT OUTER JOIN en SQL.
Et si vous souhaitez maîtriser SQL et passer au niveau supérieur en requêtage, inscrivez-vous à un cours comme Joining Data in SQL qui vous aidera vraiment à comprendre les différences subtiles mais importantes entre les jointures sur une table et sur deux tables.
Amélioration de SQL pour les débutants
LEFT JOIN vs LEFT OUTER JOIN
Il n’y a aucune différence entre un LEFT JOIN et un LEFT OUTER JOIN. Ce sont des fonctions SQL interchangeables. Elles effectuent exactement le même travail : récupérer toutes les lignes de la table de gauche et les lignes correspondantes de la table de droite.
Voyons un exemple concret pour vérifier par nous‑mêmes que LEFT JOIN et LEFT OUTER JOIN sont équivalents. Pour cela, nous allons créer et utiliser deux tables d’exemple : Employees et Departments.
CREATE TABLE Departments (
DepartmentID INT PRIMARY KEY,
DepartmentName VARCHAR(50)
);
INSERT INTO Departments (DepartmentID, DepartmentName) VALUES
(1, 'HR'),
(2, 'IT'),
(3, 'Finance'),
(4, 'Marketing');
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
EmployeeName VARCHAR(50),
DepartmentID INT,
FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID)
);
INSERT INTO Employees (EmployeeID, EmployeeName, DepartmentID) VALUES
(1, 'Alice', 1),
(2, 'Bob', 2),
(3, 'Charlie', NULL),
(4, 'David', 3);
LEFT JOIN
Maintenant que nos deux tables sont prêtes, lançons une requête avec un LEFT JOIN.
SELECT Employees.EmployeeID, Employees.EmployeeName,
Departments.DepartmentName
FROM Employees
LEFT JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;

Résultat de la fonction LEFT JOIN. Image par l’auteur
Notre requête avec LEFT JOIN renvoie toutes les lignes de la table de gauche, Employees, et les lignes correspondantes de la table de droite, Departments. En l’absence de correspondance, des valeurs NULL (ou manquantes) sont retournées pour les colonnes de la table Departments, qui est celle de droite.
LEFT OUTER JOIN
Essayons maintenant avec LEFT OUTER JOIN :
SELECT Employees.EmployeeID, Employees.EmployeeName, Departments.DepartmentName
FROM Employees
LEFT OUTER JOIN Departments ON Employees.DepartmentID = Departments.DepartmentID;

Résultat de la fonction LEFT OUTER JOIN. Image par l’auteur
Vous pouvez constater que les deux requêtes produisent le même résultat.
Cas d’usage de LEFT JOIN ou LEFT OUTER JOIN
LEFT JOIN / LEFT OUTER JOIN est extrêmement utile dans de nombreux scénarios. En voici quelques exemples.
-
Identifier les enregistrements non appariés : vous pouvez utiliser un
LEFT JOINouLEFT OUTER JOINpour trouver les enregistrements d’une table qui n’ont pas de correspondance dans une autre. Dans la requête ci‑dessus, vous voyez que c’est notre ami Charlie qui n’a été rattaché à aucun service. -
Vérifications d’intégrité des données : vous pouvez utiliser
LEFT JOINouLEFT OUTER JOINpour contrôler la cohérence des données entre tables en recherchant les enregistrements manquants ou incohérents. Par exemple, nous aurions pu ajouter une clauseWHEREpour ne conserver que les lignes oùDepartments.DepartmentIDestNULLou manquant. -
Combiner des données liées : utilisez
LEFT JOINouLEFT OUTER JOINpour regrouper des données issues de tables liées dans un rapport unique et complet. Cette approche agrège des informations provenant de plusieurs sources, offrant une vue d’ensemble complète de vos données.
Considérations de performance et techniques avancées
Même si LEFT JOIN et LEFT OUTER JOIN sont simples à utiliser, plusieurs points de performance et techniques avancées sont à garder à l’esprit.
Impact sur les performances des requêtes
LEFT JOIN / LEFT OUTER JOIN peut avoir un impact sur les performances avec de grands volumes de données. À mesure que le nombre de lignes augmente, le temps nécessaire pour traiter la jointure et récupérer les résultats s’allonge. Il est donc essentiel de tenir compte de la taille des tables concernées et d’optimiser vos requêtes pour l’efficacité.
Stratégies d’indexation pour améliorer les performances
L’utilisation d’index sur les colonnes impliquées dans les conditions de jointure peut nettement accélérer le traitement. Un index aide la base à retrouver et apparier rapidement les lignes entre tables. Par exemple, si vous joignez souvent sur DepartmentID, créer un index sur la colonne DepartmentID dans les deux tables accélérera le processus, rendant vos requêtes plus efficaces et réactives.
Comparer avec d’autres types de jointures
Savoir quand utiliser les différentes jointures (INNER JOIN, RIGHT JOIN, FULL OUTER JOIN) est important pour optimiser vos requêtes. LEFT JOIN ou LEFT OUTER JOIN est particulièrement utile lorsque vous avez besoin de toutes les lignes de la table de gauche. Si vous n’en avez pas besoin, envisagez un autre type de jointure.
Utilisation avec des sous‑requêtes
Les sous‑requêtes, aussi appelées requêtes imbriquées, sont utiles pour des récupérations de données complexes. Associées à LEFT JOIN ou LEFT OUTER JOIN, elles permettent de filtrer et d’agréger les données, de joindre conditionnellement des tables et de décomposer des requêtes complexes en blocs plus gérables.
Pour conclure
Il est essentiel de comprendre les fonctions LEFT JOIN et LEFT OUTER JOIN en SQL pour une gestion, un reporting et une analyse des données efficaces. Bien qu’elles soient identiques fonctionnellement, connaître leurs cas d’usage, leurs implications en termes de performance et quelques techniques avancées vous aidera à les utiliser au mieux. Pour aller plus loin, explorez les ressources suivantes :
- Introduction to SQL : apprenez à créer et interroger des bases relationnelles avec SQL.
- SQL Fundamentals : acquérez les fondamentaux de SQL pour interagir avec vos données et les interroger.
- Learn SQL : maîtrisez un langage de programmation très recherché pour gérer des données dans des bases relationnelles.
- Reporting in SQL : avec ce cours pratique, apprenez à construire vos propres rapports et tableaux de bord SQL, et développez vos compétences d’exploration, de nettoyage et de validation des données.
Obtenez une certification SQL de haut niveau
Professionnel chevronné de la science des données, de l'intelligence artificielle, de l'analyse et de la stratégie des données.
Questions fréquentes sur SQL
Quelle est la différence entre LEFT JOIN et LEFT OUTER JOIN ?
Aucune différence : LEFT JOIN et LEFT OUTER JOIN remplissent la même fonction et s’emploient indifféremment.
Quand dois‑je utiliser un LEFT JOIN ?
Utilisez LEFT JOIN lorsque vous avez besoin de toutes les lignes de la table de gauche et des lignes correspondantes de la table de droite. Les enregistrements non appariés de la table de droite auront des valeurs NULL.
Un LEFT JOIN renverra‑t‑il plus de lignes que la table de gauche ?
Non. LEFT JOIN renvoie toutes les lignes de la table de gauche et les lignes correspondantes de la table de droite. Il n’augmente pas le nombre de lignes de la table de gauche.
Comment gérer les valeurs NULL dans les résultats d’un LEFT JOIN ?
Vous pouvez utiliser la fonction COALESCE pour remplacer les valeurs manquantes par une valeur par défaut dans le jeu de résultats.
Quels sont les cas d’usage courants d’un LEFT JOIN ?
Les cas d’usage courants incluent l’identification des enregistrements non appariés, les contrôles d’intégrité des données et la combinaison de jeux de données dans des processus ETL.
