WHAT IS THE DIFFERENCE BETWEEN UNION AND JOIN IN SQL?
Si vous êtes un développeur SQL, vous êtes probablement familier avec les opérateurs JOIN, UNION, INTERSECT et EXCEPT. Bien que ces opérateurs soient tous utilisés pour combiner des données de différentes tables, il est important de comprendre leurs différences et comment les utiliser correctement.
Dans certains systèmes de bases de données comme SQL Server, PostgreSQL et SQLite, nous utilisons l’opérateur EXCEPT. Dans d’autres systèmes de bases de données (comme MySQL et Oracle), cet opérateur porte un nom différent : MINUS. Les deux opérateurs fonctionnent de la même manière.
TL;DR : EXCEPT == MINUS
Dans cet article, nous utiliserons des exemples SQL Server avec EXCEPT. Si vous utilisez une autre base de données, il suffit de remplacer EXCEPT par MINUS.
UNION : COMBINER LES RÉSULTATS DE PLUSIEURS REQUÊTES
L’opérateur UNION prend les résultats de deux requêtes et les fusionne en un seul ensemble de résultats. Par exemple, supposons que vous ayez une table de produits et une table de commandes, et que vous souhaitiez trouver toutes les commandes passées pour les produits dont le prix est inférieur à 100 cents :
“`sql
SELECT product_id FROM products WHERE price < 100
UNION
SELECT product_id FROM orders
```
Ce code renvoie les identifiants de produits pour tous les produits qui coûtent moins de 100 cents, ainsi que les identifiants de produits pour tous les produits dans toutes les commandes.
Il existe également une variante UNION ALL de l'opérateur UNION, qui ne supprime pas les doublons entre les deux ensembles de résultats.
JOIN : COMBINER LES COLONNES DE DEUX OU PLUS TABLES DE DONNÉES
L'opérateur JOIN combine les colonnes de deux tables de données à l'aide d'une colonne liée entre elles. Il existe plusieurs types de jointures, notamment INNER JOIN, LEFT JOIN et RIGHT JOIN.
```sql
SELECT orders.order_id, products.product_name
FROM orders
INNER JOIN products
ON orders.product_id = products.product_id
```
Ce code renvoie les identifiants de commande et les noms de produits pour toutes les commandes passées, en combinant les informations de la table des commandes et de la table des produits à l'aide de l'identifiant de produit.
INTERSECT : TROUVER LES ENSEMBLES COMMUNS
L'opérateur INTERSECT trouve les ensembles communs entre deux requêtes. Par exemple, si vous souhaitez trouver tous les produits vendus aux États-Unis qui ont également été retournés :
```sql
SELECT product_id FROM sales WHERE country = 'USA'
INTERSECT
SELECT product_id FROM returns
```
Ce code renvoie les identifiants de produits pour tous les produits vendus aux États-Unis qui ont également été retournés.
EXCEPT : TROUVER LES ÉLÉMENTS QUI N'APPARTIENNENT PAS À UN ENSEMBLE
L'opérateur EXCEPT trouve les éléments d'une table qui ne sont pas présents dans un autre ensemble d'enregistrements. Par exemple, si vous souhaitez trouver tous les pays dont la population est inférieure à 1 million mais qui ne contiennent pas la lettre 'c' dans leur nom :
```sql
SELECT name FROM countries WHERE population < 1000000
EXCEPT
SELECT name FROM countries WHERE NAME LIKE '%c%'
```
Ce code renvoie les noms de tous les petits pays qui ne contiennent pas la lettre 'c' dans leur nom.
CONCLUSION
En résumé, UNION combine les résultats de deux requêtes, JOIN combine les colonnes de deux tables de données, INTERSECT trouve les ensembles communs, et EXCEPT trouve les éléments d'une table qui ne sont pas présents dans un autre ensemble d'enregistrements. Il est important de connaître les différences entre ces opérateurs et de les utiliser correctement dans vos requêtes SQL.
SOURCES:
- Article original : https://medium.com/better-programming/what-is-the-difference-between-union-and-join-in-sql-55d80e163eb8
- Image de l'article : https://miro.medium.com/max/700/1*tWXO-xNcDiYLN0vyKiOo_A.png