Введение
Тип операции в SQL Операции набора в SQL - это тип операций, которые позволяют объединить результаты нескольких запросов в единый набор результатов. Операторы множества в SQL включают UNION, INTERSECT и EXCEPT, которые математически соответствуют понятиям союза, пересечения и разницы множества.
Set operations in SQL is a type of operations which allow the results of multiple queries to be combined into a single result set. Set operators in SQL include UNION, INTERSECT, and EXCEPT, which mathematically correspond to the concepts of union, intersection and set difference.
Оператор UNION
В SQL пункт UNION объединяет результаты двух SQL-запросов в одну таблицу со всеми совпадающими строками. Два запроса должны привести к одинаковому количеству столбцов и совместимым типам данных, чтобы объединиться. Любые дублирующие записи автоматически удаляются, если не используется UNION ALL. UNION может быть полезен в приложении хранилища данных, где таблицы не полностью нормализованы. Простым примером может служить база данных, содержащая таблицы sales2005 и sales2006 с идентичной структурой, но разделенной по соображениям эффективности. Запрос UNION может объединять результаты из обеих таблиц. Обратите внимание, что UNION ALL не гарантирует порядок рядов. Строки второго операнда могут появляться до, после или смешанные с строками первого операнда. В ситуациях, когда требуется конкретный порядок, необходимо использовать ORDER BY. Обратите внимание, что UNION ALL может быть намного быстрее, чем обычный UNION.
Оператор INTERSECT
Оператор SQL INTERSECT принимает результаты двух запросов и возвращает только строки, которые появляются в обоих наборах результатов. Для удаления дубликатов оператор INTERSECT не различает NULL. Оператор INTERSECT удаляет дублирующие строки из окончательного набора результатов. Оператор INTERSECT ALL не удаляет дублирующие строки из окончательного набора результатов, но если строка появляется X раз в первом запросе и Y раз во втором, она будет появляться в набор результатов.
ИЗОДЛЕЧЕНИЕ оператора
Оператор SQL EXCEPT принимает отдельные строки одного запроса и возвращает строки, которые не появляются во втором наборе результатов. Для целей удаления строк и удаления дубликатов оператор EXCEPT не различает NULL. Оператор EXCEPT ALL не удаляет дубликаты, но если строка появляется X раз в первом запросе и Y раз во втором, она будет появляться в результате. В частности, платформа Oracle предоставляет оператор MINUS, который функционально эквивалентен стандартному оператору SQL EXCEPT DISTINCT.