Практическое занятие № 3
Тема: Создание запросов с командой UNION, INTERSECT
Цель работы: освоить создание SQL-запросов с использованием команд UNION, INTERSECT.
Приобретаемые умения и навыки: умение работать с командами UNION, INTERSECT в SQL Server Management Studio.
Норма времени: 2 часа.
Оборудование: Компьютер с установленным программным обеспечением и подключенный к Internet.
Методические указания по выполнению практической работы
Команды UNION, INTERSECT и EXCEPT (или MINUS) в SQL – это мощные инструменты, позволяющие комбинировать результаты нескольких SELECT запросов для получения более сложных и информативных наборов данных. Они относятся к операторам теории множеств.
1. UNION:
• Назначение: объединяет результаты двух или более SELECT запросов в один результирующий набор. Представляет собой операцию объединения множеств.
• Синтаксис:
SELECT column1, column2, ... FROM table1
UNION [ALL]
SELECT column1, column2, ... FROM table2
[UNION [ALL]
SELECT column1, column2, ... FROM tableN];
* Требования:
• Совместимость структуры: Все SELECT запросы в операторе UNION должны иметь одинаковое количество столбцов.
• Совместимость типов данных: Типы данных соответствующих столбцов в каждом SELECT запросе должны быть совместимы. Это не обязательно должны быть абсолютно идентичные типы, но СУБД должна уметь неявно или явно преобразовать их друг в друга.
• Порядок столбцов: Порядок столбцов в каждом SELECT запросе должен быть одинаковым. Именно порядок определяет, какие столбцы будут объединены.
• Поведение:
• Удаление дубликатов (UNION): По умолчанию, UNION удаляет все дублирующиеся строки из результирующего набора. То есть, если одна и та же строка присутствует в результатах нескольких SELECT запросов, она появится в результирующем наборе только один раз.
• Сохранение дубликатов (UNION ALL): Ключевое слово ALL после UNION указывает, что дублирующиеся строки должны быть сохранены в результирующем наборе. Это может быть полезно, если требуется точное количество строк из каждого запроса или если удаление дубликатов занимает много времени.
• NULL значения: NULL значения рассматриваются как равные друг другу при удалении дубликатов с помощью UNION.
• Пример: Предположим, у нас есть таблицы ActiveCustomers и InactiveCustomers, содержащие информацию о клиентах. Мы хотим получить полный список всех клиентов (активных и неактивных):
SELECT CustomerID, CustomerName FROM ActiveCustomers
UNION
SELECT CustomerID, CustomerName FROM InactiveCustomers;
2. INTERSECT:
• Назначение: Возвращает только те строки, которые присутствуют в результатах всех SELECT запросов. Представляет собой операцию пересечения множеств.
• Синтаксис:
SELECT column1, column2, ... FROM table1
INTERSECT
SELECT column1, column2, ... FROM table2
[INTERSECT
SELECT column1, column2, ... FROM tableN];
* Требования:
Требования к совместимости структуры и типов данных аналогичны UNION.
• Поведение:
• Удаление дубликатов: INTERSECT автоматически удаляет дублирующиеся строки. В отличие от UNION, нет способа сохранить дубликаты. Строка должна присутствовать в каждом результирующем наборе для того, чтобы попасть в конечный результат.
• NULL значения: NULL значения рассматриваются как равные друг другу при определении пересечения.
• Пример: Предположим, у нас есть таблицы Employees и Managers, содержащие информацию о сотрудниках и менеджерах. Мы хотим найти сотрудников, которые также являются менеджерами:
SELECT EmployeeID, EmployeeName FROM Employees
INTERSECT
SELECT EmployeeID, ManagerName FROM Managers;
Ход работы
1. Создать запрос с командой UNION.
2. Создать запрос с командой INTERSECT.
Контрольные вопросы:
Для чего используется команда UNION?
Для чего используется команда INTERSECT?