Accéder au contenu principal

SQL INNER JOIN vs. OUTER JOIN : Principales différences

Comprendre SQL INNER JOIN vs. OUTER JOIN avec des exemples et des aides visuelles pour améliorer vos compétences en gestion de base de données.
Actualisé 6 mars 2025  · 4 min de lecture

Dans ce tutoriel, j'expliquerai la différence entre SQL INNER JOIN et OUTER JOIN et j'utiliserai des exemples. Après avoir résolu ce problème, vous voudrez peut-être suivre notre cours Joining Data in SQL, qui couvre d'autres jointures intéressantes, comme SELF JOIN et CROSS JOIN, ainsi que des idées plus larges, comme la théorie des ensembles.

Réponse rapide

INNER JOIN renvoie uniquement les lignes correspondantes entre les tableaux basés sur une colonne commune, à l'exclusion des lignes non correspondantes. Par exemple, la requête ci-dessous n'affiche les commandes avec les détails du client que lorsqu'il y a une correspondance.

-- Inner Join: Returns only matching rows from both tables
SELECT o.OrderID, c.CustomerName
FROM Orders o
INNER JOIN Customers c ON o.CustomerID = c.CustomerID;

OUTER JOIN inclut les lignes correspondantes ainsi que les lignes non correspondantes d'un ou des deux tableaux. La requête ci-dessous renvoie tous les clients, y compris ceux qui n'ont pas passé de commande.

-- Left Outer Join: Returns all rows from Customers and matching rows from Orders
SELECT c.CustomerName, o.OrderID
FROM Customers c
LEFT JOIN Orders o ON c.CustomerID = o.CustomerID;

Un examen approfondi de SQL INNER JOIN et OUTER JOIN

Examinons maintenant de plus près SQL INNER JOIN et OUTER JOIN, l'un après l'autre. Pour chacun d'entre eux, examinez les deux tableaux suivants :

Exemple de tableau des salariés.

Exemple de tableau des salariés. Image par l'auteur.

Exemple de tableau des départements.

Exemple de tableau des départements. Image par l'auteur.

Fonctionnement de l'INNER JOIN

Une adresse INNER JOIN permet d'extraire uniquement les lignes correspondant aux deux tableaux en fonction de la condition spécifiée. 

La requête suivante sélectionne les fichiers employee_id, demployee_name, department_name, et salary et renvoie les lignes où department_id existe.

-- Example: Get employees with matching departments
SELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
INNER JOIN departments
-- Returns only employees assigned to a department
ON employees.department_id = departments.department_id;

Exemple de tableau fusionné à l'aide de SQL INNER JOIN.

Exemple de tableau fusionné à l'aide de SQL INNER JOIN. Image par l'auteur.

Fonctionnement de l'OUTER JOIN

Le site OUTER JOIN inclut les lignes non appariées d'un ou des deux tableaux, selon le type de OUTER JOIN utilisé.

JOINTURE EXTERNE GAUCHE (JOINTURE GAUCHE)

Le site LEFT OUTER JOIN renvoie tous les enregistrements du tableau de gauche et les enregistrements correspondants du tableau de droite. S'il n'y a pas de correspondance, les valeurs NULL sont renvoyées pour les tableaux de droite.

L'exemple suivant permet de récupérer tous les enregistrements du tableau employees, même s'il y a des enregistrements non correspondants. L'adresse department_name manquante pour les salariés est renvoyée sous la forme NULL.

-- Get all employees, even those without a department
SELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.department_id;

Exemple de tableau joint à l'aide de la jointure externe gauche SQL

Exemple de tableau joint à l'aide de la jointure externe gauche SQL. Image par l'auteur.

LEFT JOIN et LEFT OUTER JOIN sont utilisés de manière interchangeable en SQL car les deux requêtes récupèrent tous les tableaux du tableau de gauche et les tableaux correspondants du tableau de droite.

JOINTURE EXTERNE DROITE (JOINTURE DROITE)

Le site RIGHT OUTER JOIN renvoie tous les enregistrements du tableau de droite et les enregistrements correspondants du tableau de gauche. Les tableaux non appariés du tableau de gauche renvoient NULL.

La requête ci-dessous renvoie tous les enregistrements du tableau departments, même s'il n'y a pas de salariés correspondants.

-- Get all departments, even those without employees
SELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
RIGHT JOIN departments
ON employees.department_id = departments.department_id;

Exemple de conte joint à l'aide de la jointure externe droite SQL.

Exemple de conte joint à l'aide de la jointure externe droite SQL. Image par l'auteur.

JOINTURE EXTERNE COMPLÈTE

Le site FULL OUTER JOIN combine les résultats des jointures externes gauche et droite. Il renvoie tous les enregistrements des deux tableaux, en remplissant NULL lorsqu'il n'y a pas de correspondance.

La requête ci-dessous renvoie tous les tableaux employees et departments, même si les lignes ne sont pas appariées.

-- Combine all employees and departments
SELECT employees.employee_id, employees.employee_name, departments.department_name, employees.salary
FROM employees
FULL JOIN departments
ON employees.department_id = departments.department_id;

Exemple de tableau joint à l'aide de la jointure externe complète SQL.

Exemple de tableau joint à l'aide de la jointure externe complète SQL. Image par l'auteur.

INNER JOIN vs. OUTER JOIN : Principales différences

INNER JOIN et OUTER JOIN diffèrent fondamentalement dans la façon dont ils traitent les lignes non appariées lors de la fusion des tableaux. Il est important de comprendre ces différences pour choisir le bon type de jointure dans vos requêtes de base de données. Comparons ces différences.

Ce que renvoie la fonction INNER JOIN

INNER JOIN ne renvoie que les lignes dont les valeurs correspondent dans les deux tableaux. Ce type de jointure est utilisé lorsque vous avez besoin de données dans les deux ensembles de données.

La requête suivante permet d'extraire les enregistrements de employees dont les tableaux correspondent à ceux de departments.

-- Example: Get employees with matching departments
SELECT employees.employee_id, employees.employee_name, departments.department_name
FROM employees
INNER JOIN departments
-- Returns only employees assigned to a department
ON employees.department_id = departments.department_id;

Exemple de tableau joint à l'aide de la jointure interne SQL.

Exemple de tableau joint à l'aide de SQL INNER JOIN. Image par l'auteur.

Ce que renvoie l'OUTER JOIN

OUTER JOIN inclut les lignes non appariées d'un tableau ou des deux tableaux, selon le type de OUTER JOIN. Par exemple, le site LEFT OUTER JOIN renvoie tous les tableaux du tableau de gauche et les tableaux correspondants du tableau de droite. Les tableaux non appariés du bon tableau auront des NULL.

La requête suivante permet de récupérer les enregistrements des employés, même ceux qui n'ont pas de département.

-- Get all employees, even those without a department
SELECT employees.employee_id, employees.employee_name, departments.department_name
FROM employees
LEFT JOIN departments
ON employees.department_id = departments.department_id;

Exemple de données extraites à l'aide de la jointure externe gauche SQL.

Exemple de données extraites à l'aide de SQL LEFT OUTER JOIN. Image par l'auteur.

Quand utiliser SQL INNER JOIN et OUTER JOIN ?

INNER JOIN et OUTER JOIN diffèrent également dans leurs cas d'utilisation pratique pour la recherche de données.

Quand utiliser INNER JOIN

INNER JOIN est plus efficace lorsque vous n'avez besoin que des données croisées de deux tableaux. Par exemple, vous pouvez utiliser INNER JOIN lorsque vous analysez des données de vente pour trouver des produits qui ont été vendus, notamment lorsque les tableaux des produits et des ventes contiennent des entrées correspondantes.

Quand utiliser OUTER JOIN

OUTER JOIN est approprié lorsque vous avez besoin de renvoyer un jeu de données complet, y compris les lignes non appariées. Par exemple, lorsque vous générez un rapport qui affiche tous les employés, y compris ceux qui n'ont pas d'affectation à un département, ou tous les départements, y compris ceux qui n'ont pas d'employés.

Conclusion

Il est important de comprendre la différence entre INNER JOIN et OUTER JOIN pour rédiger des requêtes efficaces. L'apprentissage de ces techniques permet également d'améliorer l'optimisation des requêtes pour une récupération plus rapide des données. Je vous encourage à continuer à vous entraîner pour acquérir de nouvelles compétences en matière de gestion de bases de données.

Je vous recommande d'essayer notre cursus Associate Data Analyst in SQL pour devenir un bon analyste de données. Notre cours Reporting in SQL vous aidera également à maîtriser la création de rapports et de tableaux de bord complexes pour une présentation efficace des données. Si vous vous préparez à un entretien au cours duquel vous devrez démontrer vos compétences en SQL, je vous recommande de consulter notre blog, 20 Top SQL Joins Interview Questions, pour vous aider à vous préparer à l'entretien.

Obtenez une certification SQL de haut niveau

Démontrez vos compétences de base en SQL et faites progresser votre carrière dans le domaine des données.
Obtenez la certification SQL

Allan Ouko's photo
Author
Allan Ouko
LinkedIn
Je crée des articles qui simplifient la science des données et l'analyse, en les rendant faciles à comprendre et accessibles.

FAQ SQL INNER JOIN et OUTER JOIN

Quelle est la différence entre INNER JOIN et OUTER JOIN en SQL ?

INNER JOIN renvoie uniquement les lignes correspondantes des deux tableaux, tandis que OUTER JOIN inclut les lignes non correspondantes, avec des NULL pour combler les lacunes lorsqu'aucune donnée correspondante n'est trouvée.

Quand dois-je utiliser un INNER JOIN en SQL ?

Utilisez un JION INNER lorsque vous devez récupérer uniquement les lignes dont les valeurs correspondent dans les deux tableaux.

Quels sont les types de JOINTS EXTERNES en SQL ?

Les types de JOINTS EXTERNES sont le JOINTS EXTERNES GAUCHES, le JOINTS EXTERNES DROITS et le JOINTS EXTERNES COMPLETS.

Comment fonctionne un LEFT OUTER JOIN en SQL ?

Une jointure externe gauche renvoie toutes les lignes du tableau de gauche, les lignes correspondantes du tableau de droite et les lignes non correspondantes du tableau de gauche.

Qu'est-ce qu'un FULL OUTER JOIN en SQL ?

Un FULL OUTER JOIN renvoie toutes les lignes des deux tableaux, y compris les lignes non appariées de chaque tableau.

Sujets

Apprenez SQL avec DataCamp

Certification disponible

cours

Jointure de données en SQL

4 hr
207.8K
Améliorez vos connaissances en SQL et apprenez à joindre des tableaux, à appliquer la théorie des ensembles relationnels et à travailler avec des sous-requêtes.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow