MySQL - Opérateur UNION

Salut à toi, futur(e)s mage(s) de la base de données ! Aujourd'hui, nous allons plonger dans un des outils les plus puissants de MySQL : l'opérateur UNION. C'est comme une baguette magique qui nous permet de combiner les résultats de plusieurs requêtes SELECT en un seul jeu de résultats. Excitant, n'est-ce pas ? Partons ensemble dans cette aventure !

MySQL - UNION Operator

Opérateur UNION de MySQL

L'opérateur UNION est utilisé pour combiner les jeux de résultats de deux ou plusieurs requêtes SELECT. C'est comme inviter différents groupes d'amis au même party - ils se retrouvent tous au même endroit !

Voici la syntaxe de base :

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

Voyons un exemple pratique. Imaginez que nous avons deux tables : 'employees' et 'customers'.

-- Créer la table employees
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
);

-- Insérer des données
INSERT INTO employees VALUES
(1, 'John Doe', '[email protected]'),
(2, 'Jane Smith', '[email protected]');

-- Créer la table customers
CREATE TABLE customers (
id INT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
);

-- Insérer des données
INSERT INTO customers VALUES
(1, 'Alice Johnson', '[email protected]'),
(2, 'Bob Wilson', '[email protected]');

-- Maintenant, utilisons UNION
SELECT name, email FROM employees
UNION
SELECT name, email FROM customers;

Cette requête nous donnera une liste combinée de noms et adresses e-mail provenant des deux tables. Génial, non ?

Souvenez-vous, UNION supprime les lignes en double par défaut. C'est comme un videur à notre party, assurant que personne n'entre deux fois !

UNION avec clause WHERE

Nous pouvons rendre notre UNION encore plus puissant en ajoutant des clauses WHERE. Cela nous permet de filtrer les résultats de chaque requête SELECT avant qu'ils ne soient combinés.

SELECT name, email FROM employees WHERE id > 1
UNION
SELECT name, email FROM customers WHERE name LIKE 'B%';

Cette requête nous donnera les employés avec un ID supérieur à 1 et les clients dont les noms commencent par 'B'. C'est comme avoir des sections VIP à notre party !

UNION avec clause ORDER BY

Vous voulez trier vos résultats combinés ? Pas de problème ! Nous pouvons utiliser ORDER BY avec UNION, mais il doit être placé à la fin de l'ensemble de la déclaration UNION.

SELECT name, email FROM employees
UNION
SELECT name, email FROM customers
ORDER BY name ASC;

Cela nous donnera tous les noms et adresses e-mail, triés par ordre alphabétique. C'est comme organiser nos invités de party par ordre alphabétique !

UNION avec des Aliases

Parfois, les colonnes dans nos tables peuvent avoir des noms différents. Pas de souci ! Nous pouvons utiliser des aliases pour les faire correspondre.

SELECT name, email AS contact FROM employees
UNION
SELECT customer_name, customer_email AS contact FROM customers;

Ici, nous supposons que la table customers a des noms de colonnes légèrement différents. Le mot-clé AS nous permet de les renommer sur le fly !

Opérateur UNION ALL

Souvenez-vous de notre videur qui supprimait les doublons ? Parfois, nous voulons tout le monde, y compris les doublons. C'est là que rentre en jeu UNION ALL.

SELECT name FROM employees
UNION ALL
SELECT name FROM customers;

Cela nous donnera tous les noms, même s'il y a des doublons entre les deux tables. C'est comme avoir une politique "tout le monde est le bienvenu" à notre party !

Opérateur UNION dans un Programme Client

Maintenant, voyons comment nous pouvons utiliser l'opérateur UNION dans un programme client. Je vous montrerai un exemple en utilisant Python et la bibliothèque mysql-connector.

import mysql.connector

# Se connecter à la base de données
cnx = mysql.connector.connect(user='your_username', password='your_password',
host='127.0.0.1', database='your_database')
cursor = cnx.cursor()

# Exécuter la requête UNION
query = """
SELECT name, email FROM employees
UNION
SELECT name, email FROM customers
ORDER BY name
"""
cursor.execute(query)

# Récupérer et afficher les résultats
for (name, email) in cursor:
print(f"{name}: {email}")

# Fermer la connexion
cursor.close()
cnx.close()

Ce script se connecte à votre base de données MySQL, exécute une requête UNION et affiche les résultats. C'est comme avoir un assistant personnel pour gérer votre liste d'invités à la party !

Voici un tableau résumant les méthodes UNION que nous avons discutées :

Méthode Description
UNION Combine les résultats, supprime les doublons
UNION ALL Combine les résultats, conserve les doublons
UNION avec WHERE Filtre les résultats avant combinaison
UNION avec ORDER BY Trie les résultats combinés
UNION avec Aliases Renomme les colonnes pour la compatibilité

Et voilà, mes jeunes passionnés de bases de données ! Nous avons traversé le pays des opérateurs UNION, des combinaisons de base aux requêtes complexes avec filtrage et tri. Souvenez-vous, la pratique rend parfait, alors n'ayez pas peur d'expérimenter avec ces requêtes sur vos propres bases de données. Qui sait ? Vous pourriez bien organiser la meilleure party de données de la ville !

Credits: Image by storyset