SQL - Full Join : Un Guide Complet pour les Débutants

Bonjour à tous, futurs maîtres de SQL ! Je suis ravi de vous guider dans cette exciting aventure dans le monde des Full Joins en SQL. En tant qu'enseignant en informatique avec des années d'expérience, j'ai vu des dizaines d'étudiants briller当他们最后掌握了这个强大的概念。 Alors, mettons nos manches et plongeons dedans !

SQL - Full Join

La Full Join en SQL

Qu'est-ce qu'une Full Join ?

Imaginez que vous organisez une grande fête et que vous avez deux listes d'invités : une pour vos amis et une autre pour votre famille. Une Full Join est comme combiner ces listes de manière à inclure tout le monde, même s'ils ne sont sur aucune liste. En termes de SQL, une Full Join retourne toutes les lignes des deux tables, peu importe s'il y a une correspondance ou non.

Syntaxe de la Full Join

Voici la syntaxe de base d'une Full Join :

SELECT columns
FROM table1
FULL JOIN table2
ON table1.column = table2.column;

Décomposons cela :

  • SELECT columns : Spécifiez les colonnes que vous souhaitez dans votre résultat.
  • FROM table1 : C'est votre première table.
  • FULL JOIN table2 : Cela indique à SQL que vous souhaitez faire une Full Join avec la deuxième table.
  • ON table1.column = table2.column : C'est votre condition de jointure, spécifiant comment les tables sont liées.

Un Exemple Simple

Disons que nous avons deux tables : Employees et Departments.

-- Créer la table Employees
CREATE TABLE Employees (
EmployeeID INT PRIMARY KEY,
Name VARCHAR(50),
DepartmentID INT
);

-- Créer la table Departments
CREATE TABLE Departments (
DepartmentID INT PRIMARY KEY,
DepartmentName VARCHAR(50)
);

-- Insérer des données
INSERT INTO Employees VALUES (1, 'Alice', 1), (2, 'Bob', 2), (3, 'Charlie', NULL);
INSERT INTO Departments VALUES (1, 'RH'), (2, 'IT'), (3, 'Finance');

-- Effectuer une Full Join
SELECT e.Name, d.DepartmentName
FROM Employees e
FULL JOIN Departments d ON e.DepartmentID = d.DepartmentID;

Cette requête retournera :

Name DepartmentName
Alice RH
Bob IT
Charlie NULL
NULL Finance

Notez comment Charlie (qui n'est affecté à aucun département) et Finance (qui n'a pas d'employés) sont toujours inclus dans le résultat. C'est la magie de la Full Join !

Joindre Plusieurs Tables avec une Full Join

Maintenant, levons le pied. Que se passe-t-il si nous voulons joindre plus de deux tables ? Pas de problème ! Les Full Joins peuvent gérer cela aussi.

Exemple de Jointure à Trois Tables

Ajoutons une table Projects à notre exemple précédent :

-- Créer la table Projects
CREATE TABLE Projects (
ProjectID INT PRIMARY KEY,
ProjectName VARCHAR(50),
DepartmentID INT
);

-- Insérer des données
INSERT INTO Projects VALUES (1, 'Redesign du site Web', 2), (2, 'Sondage des employés', 1), (3, 'Réduction des coûts', 3);

-- Effectuer une Full Join avec trois tables
SELECT e.Name, d.DepartmentName, p.ProjectName
FROM Employees e
FULL JOIN Departments d ON e.DepartmentID = d.DepartmentID
FULL JOIN Projects p ON d.DepartmentID = p.DepartmentID;

Cette requête nous donnera une vue complète des employés, de leurs départements et des projets associés :

Name DepartmentName ProjectName
Alice RH Sondage des employés
Bob IT Redesign du site Web
Charlie NULL NULL
NULL Finance Réduction des coûts

N'est-ce pas incroyable comment nous pouvons voir l'image complète avec une seule requête ? C'est comme avoir la vision X pour votre base de données !

Full Join avec une Clause WHERE

Parfois, nous voulons filtrer nos résultats de Full Join. C'est là que la clause WHERE devient pratique.

Filtrer les Résultats de la Full Join

Modifions notre requête précédente pour n'afficher que les départements avec des projets :

SELECT e.Name, d.DepartmentName, p.ProjectName
FROM Employees e
FULL JOIN Departments d ON e.DepartmentID = d.DepartmentID
FULL JOIN Projects p ON d.DepartmentID = p.DepartmentID
WHERE p.ProjectName IS NOT NULL;

Cela nous donnera :

Name DepartmentName ProjectName
Alice RH Sondage des employés
Bob IT Redesign du site Web
NULL Finance Réduction des coûts

Notez comment Charlie a disparu de nos résultats. C'est parce qu'il n'est associé à aucun projet.

Gérer les Valeurs NULL

Lorsque vous travaillez avec des Full Joins, vous encounterrez souvent des valeurs NULL. Voici un conseil professionnel : utilisez COALESCE pour remplacer les NULL par une valeur par défaut :

SELECT
COALESCE(e.Name, 'Non affecté') AS EmployeeName,
COALESCE(d.DepartmentName, 'Aucun Département') AS DepartmentName,
COALESCE(p.ProjectName, 'Aucun Projet') AS ProjectName
FROM Employees e
FULL JOIN Departments d ON e.DepartmentID = d.DepartmentID
FULL JOIN Projects p ON d.DepartmentID = p.DepartmentID;

Cela nous donnera une sortie plus conviviale :

EmployeeName DepartmentName ProjectName
Alice RH Sondage des employés
Bob IT Redesign du site Web
Charlie Aucun Département Aucun Projet
Non affecté Finance Réduction des coûts

Bien mieux, n'est-ce pas ? Maintenant, nous avons une image claire de toute notre organisation, y compris les employés sans département et les départements sans projets.

Conclusion

Et voilà, les amis ! Nous avons voyagé à travers le pays des Full Joins en SQL, des concepts de base aux techniques plus avancées. Souvenez-vous, les Full Joins sont comme des invitations de fête inclusives - tout le monde est le bienvenu, qu'ils aient une correspondance ou non.

While vous pratiquez ces concepts, vous trouverez que les Full Joins sont des outils incroyablement puissants pour l'analyse et le rapport des données. Ils vous permettent de voir l'image complète de vos données, y compris ce qui pourrait manquer.

Continuez à expérimenter, continuez à joindre, et surtout, continuez à vous amuser avec SQL ! Avant de vous en rendre compte, vous serez le ninja des Full Joins dans votre équipe. Bon codage !

Credits: Image by storyset