MySQL - UNION vs UNION ALL
Bonjour, futurs magiciens de la base de données ! Aujourd'hui, nous allons plonger dans le monde fascinant de MySQL et explorer deux opérateurs puissants : UNION et UNION ALL. À la fin de ce tutoriel, vous serez capable de combiner des données comme un pro ! Alors, prenez votre boisson favorite, et c'est parti !
Opérateur UNION de MySQL
Qu'est-ce que UNION ?
UNION est comme une baguette magique dans MySQL qui nous permet de combiner les résultats de deux ou plusieurs requêtes SELECT. C'est comme inviter différents groupes d'amis à une grande fête - tout le monde se joint, mais les doublons sont poliment priés de partir.
Comment UNION fonctionne ?
Lorsque vous utilisez UNION, il effectue les étapes suivantes :
- Exécute plusieurs requêtes SELECT
- Combine les résultats
- Supprime les lignes en double
- Retourne le jeu final et unique de lignes
Syntaxe de UNION
SELECT column1, column2, ... FROM table1
UNION
SELECT column1, column2, ... FROM table2;
Exemple de UNION
Imaginons que nous avons deux tables : fruits
et vegetables
. Nous voulons créer une liste de tous les articles de fruits et légumes.
-- Créer et remplir la table fruits
CREATE TABLE fruits (
id INT PRIMARY KEY,
name VARCHAR(50),
color VARCHAR(20)
);
INSERT INTO fruits (id, name, color) VALUES
(1, 'Apple', 'Red'),
(2, 'Banana', 'Yellow'),
(3, 'Orange', 'Orange'),
(4, 'Grape', 'Purple');
-- Créer et remplir la table vegetables
CREATE TABLE vegetables (
id INT PRIMARY KEY,
name VARCHAR(50),
color VARCHAR(20)
);
INSERT INTO vegetables (id, name, color) VALUES
(1, 'Carrot', 'Orange'),
(2, 'Broccoli', 'Green'),
(3, 'Tomato', 'Red'),
(4, 'Eggplant', 'Purple');
-- Maintenant, utilisons UNION pour combiner fruits et légumes
SELECT name, color FROM fruits
UNION
SELECT name, color FROM vegetables;
Cette requête retournera :
name | color |
---|---|
Apple | Red |
Banana | Yellow |
Orange | Orange |
Grape | Purple |
Carrot | Orange |
Broccoli | Green |
Tomato | Red |
Eggplant | Purple |
Notez comment nous avons 8 lignes au lieu de 10 ? C'est parce que UNION a supprimé les entrées en double 'Orange' et 'Purple' !
Opérateur UNION ALL de MySQL
Qu'est-ce que UNION ALL ?
UNION ALL est comme le cousin plus détendu de UNION. Il combine les résultats de plusieurs requêtes SELECT, mais il ne se soucie pas de supprimer les doublons. C'est comme organiser une fête où tout le monde est invité, et personne n'est écarté à la porte !
Comment UNION ALL fonctionne ?
UNION ALL suit ces étapes :
- Exécute plusieurs requêtes SELECT
- Combine tous les résultats, y compris les doublons
- Retourne le jeu final de lignes (qui peut inclure des doublons)
Syntaxe de UNION ALL
SELECT column1, column2, ... FROM table1
UNION ALL
SELECT column1, column2, ... FROM table2;
Exemple de UNION ALL
Utilisons à nouveau nos tables fruits
et vegetables
, mais cette fois avec UNION ALL :
SELECT name, color FROM fruits
UNION ALL
SELECT name, color FROM vegetables;
Cette requête retournera :
name | color |
---|---|
Apple | Red |
Banana | Yellow |
Orange | Orange |
Grape | Purple |
Carrot | Orange |
Broccoli | Green |
Tomato | Red |
Eggplant | Purple |
Maintenant, nous avons toutes les 10 lignes, y compris les couleurs en double !
MySQL UNION vs MySQL UNION ALL
Maintenant que nous avons vu UNION et UNION ALL en action, comparons-les côte à côte :
Fonctionnalité | UNION | UNION ALL |
---|---|---|
Suppression des doublons | Oui | Non |
Performance | Plus lent (à cause de la déduplication) | Plus rapide |
Utilisation de la mémoire | Plus élevée | Plus faible |
Cas d'utilisation | Lorsque des résultats uniques sont nécessaires | Lorsque tous les résultats, y compris les doublons, sont nécessaires |
Quand utiliser UNION
Utilisez UNION lorsque vous avez besoin de combiner les résultats de plusieurs requêtes et que vous souhaitez vous assurer qu'il n'y a pas de doublons. C'est excellent pour des situations comme :
- Créer une liste unique de clients à partir de différentes bases de données
- Combiner les résultats de recherche à partir de plusieurs tables
- Générer des rapports qui nécessitent des valeurs distinctes
-- Exemple : Trouver toutes les couleurs uniques de fruits et légumes
SELECT color FROM fruits
UNION
SELECT color FROM vegetables;
Quand utiliser UNION ALL
Utilisez UNION ALL lorsque vous souhaitez combiner tous les résultats, y compris les doublons, ou lorsque vous savez qu'il n'y aura pas de doublons et que vous souhaitez une meilleure performance. C'est idéal pour :
- Combiner les données de plusieurs sources de journalisation
- Aggréger des données où les doublons sont importants
- Fusionner des données provenant de jeux de données non chevauchants
-- Exemple : Compter tous les articles de fruits et légumes par couleur, y compris les doublons
SELECT color, COUNT(*) as total FROM (
SELECT color FROM fruits
UNION ALL
SELECT color FROM vegetables
) AS all_produce
GROUP BY color;
Conclusion
Et voilà, mes chers élèves ! Nous avons voyagé à travers le pays de UNION et UNION ALL, explorant leurs similitudes et leurs différences. Souvenez-vous, UNION est comme un hôte de fête attentionné qui s'assure que tout le monde est unique, tandis que UNION ALL est du genre "plus on est, plus on rit" qui accueille tous les invités.
While you continue your MySQL adventure, you'll find countless situations where these operators come in handy. Just remember: when you need unique results, go for UNION. When you want it all and want it fast, UNION ALL is your friend.
Now, it's your turn to practice! Try combining different tables in your database using both UNION and UNION ALL. Experiment, make mistakes, and learn from them. That's the best way to truly master these concepts.
Until next time, happy querying, and may your UNIONs always be successful!
Credits: Image by storyset