cours
UNION vs UNION ALL en SQL
Dans l'univers SQL, la possibilité de combiner des données provenant de plusieurs requêtes est une exigence fondamentale, et SQL offre des fonctions puissantes telles que UNION
et UNION ALL
pour y parvenir.
Comme vous le verrez, il est impératif de comprendre les différences subtiles entre les fonctions UNION
et UNION ALL
dans SQL pour pouvoir interroger et gérer efficacement les données. Ce tutoriel explique leurs principales similitudes et différences, ainsi que des scénarios d'utilisation utilisant des ensembles de données complémentaires pour vous aider à optimiser vos requêtes SQL.
La réponse courte : SQL UNION vs. UNION TOUS
La principale différence est que UNION
supprime les enregistrements en double, alors que UNION ALL
inclut tous les enregistrements en double. Cette distinction ne modifie pas seulement le nombre de lignes dans le résultat de la requête, mais elle a également un impact sur les performances.
Considérons deux tableaux types, employees_2023
et employees_2024
, représentant les enregistrements des employés pour deux années différentes.
SELECT *
FROM employees_2023
employee_id |
nom |
département |
1 |
Alice |
HR |
2 |
Bob |
IT |
3 |
Charlie |
Finances |
SELECT *
FROM employees_2024
employee_id |
nom |
département |
2 |
Bob |
IT |
3 |
Charlie |
Finances |
4 |
David |
Marketing |
Joignons maintenant nos deux tableaux à l'aide de la fonction UNION
.
SELECT employee_id, name, department FROM employees_2023
UNION
SELECT employee_id, name, department FROM employees_2024;
employee_id |
nom |
département |
1 |
Alive |
HR |
2 |
Bob |
IT |
3 |
Charlie |
Finances |
4 |
David |
Marketing |
Dans ce résultat, les enregistrements en double sont supprimés. Comparons maintenant ce résultat avec celui que nous obtenons en utilisant UNION ALL
.
SELECT employee_id, name, department FROM employees_2023
UNION ALL
SELECT employee_id, name, department FROM employees_2024;
employee_id |
nom |
département |
1 |
Alive |
HR |
2 |
Bob |
IT |
3 |
Charlie |
Finances |
2 |
Bob |
Bob |
3 |
Charlie |
Finances |
4 |
David |
Marketing |
Dans ce résultat, tous les enregistrements sont inclus et les doublons ne sont pas supprimés.
Qu'est-ce que l'UNION en SQL ?
La fonction UNION
combine les résultats de deux ou plusieurs requêtes SELECT
en un seul ensemble de résultats, en supprimant les lignes en double. Chaque déclaration SELECT
à l'intérieur de UNION
doit avoir le même nombre de colonnes. Ils doivent également avoir des types de données similaires et les colonnes doivent être dans le même ordre. Pour comprendre la fonction, créons deux tableaux types ci-dessous.
CREATE TABLE sales_team (
employee_id INT,
employee_name VARCHAR(50)
);
INSERT INTO sales_team (employee_id, employee_name) VALUES
(1, 'Alice'),
(2, 'Bob'),
(3, 'Charlie');
CREATE TABLE support_team (
employee_id INT,
employee_name VARCHAR(50)
);
INSERT INTO support_team (employee_id, employee_name) VALUES
(3, 'Charlie'),
(4, 'David'),
(5, 'Eve');
Le code ci-dessus crée les deux tableaux que nous utiliserons dans ce tutoriel, sales_team
et support_team
, respectivement. Vous pouvez visualiser les tableaux à l'aide du code ci-dessous.
SELECT *
FROM sales_team
Enregistrements dans le tableau sales_team. Image par l'auteur
SELECT *
FROM support_team
Enregistrements dans le tableau support_team. Image par l'auteur
Il s'agit de petits tableaux de trois enregistrements chacun, dont les noms de colonnes sont explicites. Maintenant que nous avons créé nos deux tableaux, appliquons la fonction UNION
.
SELECT employee_id, employee_name
FROM sales_team
UNION
SELECT employee_id, employee_name
FROM support_team;
Sortie de la fonction UNION. Image par l'auteur
Vous pouvez constater que l'entrée dupliquée de employee_id
, qui prend la valeur de 3
, est supprimée.
Quels sont les cas d'utilisation de l'UNION en SQL ?
Voici quelques cas d'utilisation courants de la fonction UNION
.
-
Combinaison de résultats provenant de différents tableaux : Lorsque vous souhaitez combiner des données provenant de plusieurs tableaux et vous assurer qu'il n'y a pas d'enregistrements en double,
UNION
est la fonction à utiliser. -
Gestion de différentes sources de données :
UNION
est utile pour combiner des tableaux provenant de différentes sources de données. -
Suppression des doublons entre les requêtes : Lorsque vous souhaitez garantir l'unicité de l'ensemble des résultats combinés, utilisez
UNION
.
Qu'est-ce que UNION ALL en SQL ?
La fonction UNION ALL
combine les résultats de deux ou plusieurs requêtes SELECT
, y compris toutes les lignes dupliquées. Cette fonction est plus rapide que UNION
car elle ne se préoccupe pas de supprimer les doublons.
SELECT employee_id, employee_name
FROM sales_team
UNION ALL
SELECT employee_id, employee_name
FROM support_team;
Sortie de la fonction UNION ALL. Image par l'auteur
Vous pouvez constater que, dans ce cas, les entrées en double sont répétées et non supprimées.
Quels sont les cas d'utilisation de UNION ALL en SQL ?
Voici quelques cas d'utilisation courants de la fonction UNION ALL
.
- Combiner les résultats avec les doublons : Utilisez
UNION ALL
lorsque vous devez combiner les résultats de plusieurs requêtes et préserver toutes les lignes en double. - Considérations relatives aux performances :
UNION ALL
est plus efficace en termes de temps que la fonctionUNION
, car il n'est pas nécessaire de supprimer les doublons. - Agrégation de données provenant de différentes périodes : Lorsque vous agrégez des données provenant de périodes ou de sources différentes et que vous devez préserver les entrées en double, il est préférable d'utiliser le site
UNION ALL
. - Rapports et analyses : Pour les rapports où chaque enregistrement, y compris les doublons, est nécessaire,
UNION ALL
convient.
UNION et UNION TOUTES : Similitudes et différences
Dressons un tableau récapitulatif des similitudes et des différences.
Fonctionnalité |
UNION |
UNION TOUS |
Lignes en double |
Supprimé |
Inclus |
Performance |
Plus lent |
Plus vite |
Cas d'utilisation |
Lorsque vous avez besoin d'enregistrements uniques |
Lorsque vous avez besoin de tous les documents |
Taille du résultat |
Plus petit |
Plus grand |
Différences de syntaxe entre UNION et UNION ALL selon les dialectes SQL
Si la syntaxe de base reste la même dans les différents dialectes SQL, il existe de légères variations en fonction de la plate-forme. Si vous examinez le code de la plupart des plateformes, telles que SQL Server, Oracle, MySQL, PostgreSQL ou BigQuery, il ressemblera à ce qui est illustré ci-dessous.
SELECT employee_id, employee_name
FROM sales_team
UNION ALL
SELECT employee_id, employee_name
FROM support_team;
Les commandes de base de ces dialectes SQL restent les mêmes, avec quelques nuances et différences :
- Gestion des NULL et des collations : Les différents dialectes SQL peuvent avoir des règles différentes pour gérer les valeurs
NULL
et la collation des chaînes de caractères. - Optimisation des performances : Les optimisations de performance et l'efficacité d'exécution peuvent varier.
- Gestion des erreurs et avertissements : Les dialectes peuvent gérer différemment les erreurs et les avertissements lors de l'utilisation de ces fonctions.
- Fonctions et caractéristiques spécifiques à la plate-forme : Certains dialectes SQL peuvent offrir des fonctions ou des caractéristiques supplémentaires qui peuvent être utilisées conjointement avec
UNION
etUNION ALL
pour des scénarios plus complexes.
La commande est sensiblement différente dans le cas de PySpark, qui fonctionne dans un environnement distribué. Le code est donné ci-dessous, en supposant que df1
et df2
sont les noms des deux cadres de données constitués des deux tableaux que nous avons créés ci-dessus. :
df1.union(df2)
Réflexions finales
Il est essentiel de comprendre l'application de UNION
par opposition à UNION ALL
dans la gestion efficace des données à l'aide de SQL. Alors que UNION
ne sélectionne que les enregistrements distincts, UNION ALL
les sélectionne tous, ce qui affecte les performances et la taille de l'ensemble des résultats. Utilisez ces connaissances pour choisir la fonction appropriée à vos besoins spécifiques.
Pour en savoir plus, vous pouvez consulter les sources suivantes :
- Introduction à SQL: Apprenez à créer et à interroger des bases de données relationnelles à l'aide de SQL.
- Principes fondamentaux de SQL : Acquérir les compétences SQL fondamentales dont vous avez besoin pour interagir avec vos données et les interroger.
- Certification SQL Associate : Démontrez vos compétences en SQL en extrayant les données appropriées d'une base de données et en les utilisant pour répondre à des questions courantes sur les données.
- SQL intermédiaire : Avec ce cours pratique, vous apprendrez tout ce que vous devez savoir pour analyser des données en utilisant votre propre code SQL dès aujourd'hui.

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équemment posées
Quelle est la principale différence entre SQL UNION et UNION ALL ?
UNION
supprime les enregistrements en double, tandis que UNION ALL
inclut tous les enregistrements en double.
Y a-t-il une différence de performance entre UNION et UNION ALL ?
Oui, UNION
est généralement plus lent car il supprime les doublons.
Existe-t-il des cas d'utilisation spécifiques où UNION ALL est préférable à UNION ?
UNION ALL
est préférable lorsque vous avez besoin de tous les enregistrements, y compris les doublons, par exemple dans le cadre de rapports et d'analyses.
Quand dois-je utiliser SQL UNION au lieu de UNION ALL ?
Utilisez UNION
lorsque vous avez besoin d'un ensemble de résultats combinés sans doublons.
Comment les différents dialectes SQL affectent-ils l'utilisation de UNION et UNION ALL ?
Bien que la syntaxe de base soit cohérente, il peut y avoir de légères variations au niveau des performances, de la gestion des NULL et de la collation entre les différents dialectes SQL.
Apprenez SQL avec DataCamp
cours
Jointure de données en SQL
cours