MySQL - Оператор UNION

Здравствуйте, будущие маги баз данных! Сегодня мы окунемся в один из самых мощных инструментов MySQL: оператор UNION. Это как магическая палочка, которая позволяет нам combine результаты нескольких операторов SELECT в один набор результатов. Волнительно, правда? Давайте отправимся в это приключение вместе!

MySQL - UNION Operator

Оператор UNION в MySQL

Оператор UNION используется для combine результатов двух или более операторов SELECT. Это как пригласить разные компании друзей на одну вечеринку - они все собираются в одном месте!

Вот базовая синтаксис:

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

Давайте рассмотрим практический пример. Представьте, у нас есть две таблицы: 'employees' и 'customers'.

-- Создание таблицы employees
CREATE TABLE employees (
id INT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
);

-- Вставка данных
INSERT INTO employees VALUES
(1, 'John Doe', '[email protected]'),
(2, 'Jane Smith', '[email protected]');

-- Создание таблицы customers
CREATE TABLE customers (
id INT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
);

-- Вставка данных
INSERT INTO customers VALUES
(1, 'Alice Johnson', '[email protected]'),
(2, 'Bob Wilson', '[email protected]');

-- Теперь давайте используем UNION
SELECT name, email FROM employees
UNION
SELECT name, email FROM customers;

Этот запрос даст нам combine список имен и адресов электронной почты из обеих таблиц. Круто, правда?

Remember, UNION по умолчанию удаляет дублирующиеся строки. Это какouncer на нашей вечеринке, который следит за тем, чтобы никто не вошел дважды!

UNION с предложением WHERE

Мы можем сделать наш UNION еще мощнее, добавив предложения WHERE. Это позволяет нам отфильтровать результаты каждого оператора SELECT перед их combine.

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

Этот запрос даст нам сотрудников с ID больше 1 и клиентов, чьи имена начинаются с 'B'. Это как если бы у нас были VIP-зоны на нашей вечеринке!

UNION с предложением ORDER BY

Хотите отсортировать свои combine результаты? Нет проблем! Мы можем использовать ORDER BY с UNION, но он должен стоять в конце всего оператора UNION.

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

Это даст нам все имена и адреса электронной почты, отсортированные по алфавиту по имени. Это как если бы мы расставили наших гостей на вечеринке в алфавитном порядке!

UNION с别名ами

Иногда имена столбцов в наших таблицах могут отличаться. Не волнуйтесь! Мы можем использовать alias, чтобы они совпали.

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

Здесь мы предполагаем, что таблица клиентов имеет slightly разные имена столбцов. Ключевое слово AS позволяет намrename их на лету!

Оператор UNION ALL

Remember нашегоouncer, который удалял дубликаты? Иногда мы хотим впустить всех, даже если есть дубликаты. Для этого используется UNION ALL.

SELECT name FROM employees
UNION ALL
SELECT name FROM customers;

Этот запрос даст нам все имена, даже если есть дубликаты между двумя таблицами. Это как если бы у нас была политика "все欢迎" на нашей вечеринке!

Оператор UNION в клиентской программе

Теперь давайте посмотрим, как мы можем использовать оператор UNION в клиентской программе. Я покажу вам пример с использованием Python и библиотеки mysql-connector.

import mysql.connector

# Подключение к базе данных
cnx = mysql.connector.connect(user='your_username', password='your_password',
host='127.0.0.1', database='your_database')
cursor = cnx.cursor()

# Выполнение запроса UNION
query = """
SELECT name, email FROM employees
UNION
SELECT name, email FROM customers
ORDER BY name
"""
cursor.execute(query)

# Получение и печать результатов
for (name, email) in cursor:
print(f"{name}: {email}")

# Закрытие подключения
cursor.close()
cnx.close()

Этот скрипт подключается к вашей базе данных MySQL, выполняет запрос UNION и выводит результаты. Это как если бы у вас был личный assistant для управления списком гостей на вашей вечеринке!

Вот таблица, резюмирующая методы UNION, которые мы обсуждали:

Метод Описание
UNION Combine результаты, удаляет дубликаты
UNION ALL Combine результаты, сохраняет дубликаты
UNION с WHERE Фильтрует результаты перед combine
UNION с ORDER BY Сортирует combine результаты
UNION с alias Переименовывает столбцы для совместимости

И вот оно, мои молодые энтузиасты баз данных! Мы прошли через страну операторов UNION, от базовых combine до сложных запросов с фильтрацией и сортировкой. Помните, практика делает perfect, так что не бойтесь экспериментировать с этими запросами на своих базах данных. Кто знает? Может быть, вы просто устроите самую лучшую вечеринку с данными в городе!

Credits: Image by storyset