Оператори над безліччю

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

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

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

Загальна форма оператора union:

Параметри seiect_i, seiect_2, . - Оператори select, які складають об'єднання. Якщо використовується опція all, всі результуючі рядки, включаючи дублікати, будуть відображатися. Опція all має в операторі union таке саме значення, що й у списку вибору select. Існує лише одна відмінність: опція all в операторі select використовується за замовчуванням, а в операторі union для відображення всіх результуючих рядків, включаючи дублікати, вона повинна задаватися явно.

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

Нова таблиця empioyee_enh має таку форму:

union

Створення таблиці empioyee_enh надає можливість показати використання пропозиції у операторі select. Оператор select into має дві різні частини. По-перше, він створює нову таблицю зі стовпцями, що відповідають стовпцям, переліченим у списку вибору select. По-друге, він додає існуючі рядки з вихідної таблиці до нової таблиці. (Ім'я нової таблиці з'являється у реченні into, а ім'я вихідної таблиці є упропозиції від оператора select.)

У прикладі 6.42 показано створення таблиці працівників.

безліччю

У прикладі 6.42 оператор select into генерує таблицю empioyee_enh і додає до неї всі рядки з вихідної таблиці (employee). Під кінець оператор alter table додає стовпець domicile таблицю employee_enh.

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

union

У прикладі 6.43 показано об'єднання таблиць employee_enh та department.

union

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

Упорядкування результату об'єднання може бути виконане тільки якщо пропозиція order by використовується в останньому операторі select, як показано в прикладі 6.44. Пропозиції group by і having можуть бути використані в окремих операторах select, але не в самому об'єднанні.

union

оператори

Замість оператора union можна використовувати оператор or, якщо всі оператори select, пов'язані з одним або більше операторами union, посилаються на ту саму таблицю. І тут безліч операторів select замінюється одним оператором select з безліччю операторів or.