Операторы над множествами

Оценить
(0 голоса)

В дополнение к операторам, описанным в предыдущих разделах, существуют три оператора над множествами, поддерживаемых языком Transact-SQL:

♦ union;

♦ intersect;

♦ except.

Оператор над множествами UNION

Результатом объединения (union) двух множеств является множество всех элементов, присутствующих в одном или обоих наборах. Соответственно, объединение двух таблиц является новой таблицей, содержащей все строки, присутствующие в одной или в обеих таблицах.

Общая форма оператора union:

select_l union  [all]  select_2 {[union [all]  select_3]}...

Параметры seiect_i, seiect_2, ... - операторы select, которые составляют объединение. Если используется опция all, то все результирующие строки, включая дубликаты, будут отображаться. Опция all имеет в операторе union такое же значение, что и в списке выбора select. Существует только одно отличие: опция all в операторе select используется по умолчанию, а в операторе union для отображения всех результирующих строк, включая дубликаты, она должна задаваться явно.

База данных sample в ее первоначальной форме не подходит для демонстрации оператора union. По этой причине в данном разделе вводится новая таблица empioyee_enh, которая идентична таблице employee с добавлением в нее нового столбца domicile. Столбец domicile содержит место проживания каждого служащего.

Новая таблица empioyee_enh имеет следующую форму:

 

Операторы над множествами

Операторы над множествами

 

Создание таблицы empioyee_enh предоставляет возможность показать использование предложения into в операторе select. Оператор select into имеет две различные части. Во-первых, он создает новую таблицу со столбцами, соответствующими столбцам, перечисленным в списке выбора select. Во-вторых, он добавляет существующие строки из исходной таблицы в новую таблицу. (Имя новой таблицы появляется в предложении into, а имя исходной таблицы присутствует в предложении from оператора select.)

В примере 6.42 показано создание таблицы employeeenh.

 

Операторы над множествами

 

В примере 6.42 оператор select into генерирует таблицу empioyee_enh и добавляет в нее все строки из исходной таблицы (employee). Под конец оператор alter table добавляет столбец domicile в таблицу employee_enh.

После выполнения примера 6.42 столбец domicile не содержит никаких значений. Значения могут быть добавлены при использовании SQL Server Management Studio или при помощи следующих операторов

update:

 

Операторы над множествами

 

В примере 6.43 показано объединение таблиц employee_enh и department.

Операторы над множествами

 

Две таблицы могут быть соединены при помощи оператора union, если они совместимы друг с другом. Это означает, что оба списка выбора select должны иметь одно и то же количество столбцов и соответствующие столбцы должны иметь совместимые типы данных. Например, integer и smallint являются совместимыми типами данных.

Упорядочение результата объединения может быть выполнено, только если предложение order by используется в последнем операторе select, как показано в примере 6.44. Предложения group by и having могут быть использованы в отдельных операторах select, но не в самом объединении.

 

Операторы над множествами

Операторы над множествами

 

Вместо оператора union можно использовать оператор or, если все операторы select, связанные с одним или более операторами union, ссылаются на одну и ту же таблицу. В этом случае множество операторов select заменяется одним оператором select с множеством операторов or.


Операторы над множествами INTERSECT и EXCEPT
Выражения CASE
Предложение COMPUTE
Временные таблицы
Оператор JOIN

Добавить комментарий


Защитный код
Обновить

© 2018 www.serversql.ru. Все права защищены.