Operatory zbiorowe nazywamy również operatorami złączeń pionowych (VERTICAL JOIN), ponieważ łączą kolumny zbiorów wynikowych.
UNION DISTINCT UNION ALL INTERSECT [DISTINCT] [ALL] MINUS [DISTINCT] [ALL]
Użyte tabele: employees, job_history.
Wyrażenia z list SELECT muszą być zgodne pod względem liczby kolumn i typów danych. Nawiasy mogą być użyte do zmiany kolejności wykonania. Klauzula ORDER BY może pojawić się tylko na samym końcu zapytania, przyjmie nazwę kolumny z pierwszego zapytania SELECT.
Zduplikowane wiersze są automatyczne eliminowane przez SZBD Oracle z wyjątkiem UNION ALL.
UNION [DISTINCT]
Suma zbiorów, eliminuje duplikaty.
Załóżmy, że mamy 2 tabele: t1 ma wiersze 1, 2, 3; t2 ma wiersze 2, 3, 4. W wyniku usunięte zostaną zduplikowane wiersze 2, 3.
-- Wyświetla bieżące i poprzednie szczegóły dotyczące zatrudnienia wszystkich pracowników. Wyświetla każdego pracownika tylko raz. SELECT employee_id, job_id FROM employees UNION SELECT employee_id, job_id FROM job_history;
UNION ALL
Suma zbiorów bez eliminowania duplikatów.
Załóżmy, że mamy 2 tabele jak poprzednio. W wyniku znajdą się zduplikowane wiersze 2, 3.
SELECT employee_id, job_id, department_id FROM employees UNION ALL SELECT employee_id, job_id, department_id FROM job_history;
INTERSECT [DISTINCT] [ALL]
Część wspólna zbiorów.
Załóżmy, że mamy 2 tabele jak poprzednio. W wyniku znajdują się tylko wiersze 2, 3.
MINUS
Różnica zbiorów.
Załóżmy, że mamy 2 tabele jak poprzednio. W wyniku znajdzie się tylko wiersz 1.
-- Wyświetl listę identyfikatorów pracowników, którzy nigdy nie zmienili pracy. SELECT employee_id, job_id FROM employees MINUS SELECT employee_id, job_id FROM job_history;
Dopasowanie w klauzulach SELECT
-- Wyświetla id. pracownika, id. stanowiska i wynagr. wszystkich pracowników SELECT employee_id, job_id, salary FROM employees UNION SELECT employee_id, job_id, 0 FROM job_history;
Sortowanie wierszy
COLUMN a_dummy NOPRINT SELECT 'sing' AS "My dream", 3 a_dummy FROM dual UNION SELECT 'I''d like to teach', 1 a_dummy FROM dual UNION SELECT 'the world to', 2 a_dummy FROM dual ORDER BY a_dummy;