Dzisiaj poznamy operator UNION. Relacyjne bazy danych umożliwiają działania na zbiorach SQL Oracle. Bazy danych składają się z rekordów, które podlegają grupowaniu, segregowaniu, wydzielaniu i szukaniu części wspólnych.
Prowadząc działania na zbiorach SQL wykorzystuje się operatory teoriomnogościowe.
Argumentami operatorów teoriomnogościowych muszą być dane składające się z tej samej ilości kolumn
Działania na zbiorach SQL prowadzi się używając następujących operatorów teoriomnogościowych:
Skorzystamy z tabel EMPLOYEES, JOBS z bezpłatnej bazy Oracle HR dostępnej tutaj:
http://www.oracle.com/technetwork/database/express-edition/downloads/index.html
Operator UNION
Operator UNION służy do łączenia tabel. Spróbujmy połączyć obie tabele zwykłą instrukcją SELECT i FROM.
SELECT SALARY, MIN_SALARY
FROM EMPLOYEES, JOBS;
Otrzymujemy tabelę wynikową:
Uzyskaliśmy iloczyn kartezjański czyli kombinację wszystkich wierszy z pierwszej tabeli ze wszystkimi wierszami drugiej tabeli. Instrukcja była więc błędna. Teraz zostanie użyty operator UNION.
SELECT SALARY
FROM EMPLOYEES
UNION
SELECT MIN_SALARY
FROM JOBS;
Otrzymujemy tabelę wynikową:
Otrzymaliśmy wszystkie indywidualne wartości ze zbioru EMPLOYEES i wszystkie indywidualne wartości ze zbioru JOBS. To tak ja byśmy użyli tabeli przestawnej aby wylistowała wszystkie wartości bez powtórzeń. UNION łączy więc wszystkie liczby obu zbiorów eliminuje powtarzające się wartości i przedstawia to w formie posortowanej rosnąco listy.
Operatory teoriomnogościowe (UNION, INTERSEC, MINUS) eliminują domyślnie z tabeli wynikowej powtarzające się wiersze , co odpowiada omówionej wcześniej klauzuli DISTINCT.
Gdybyśmy chcieli zrezygnować z eliminacji powtórek, możemy zastosować UNION ALL.
SELECT SALARY
FROM EMPLOYEES
UNION ALL
SELECT MIN_SALARY
FROM JOBS;
Otrzymujemy tabelę wynikową:
Operator UNION ALL wylistował obie wskazane w tabelach kolumnach, zachowując ich kolejność i powtarzające się wartości. Czerwona linia wskazuje gdzie kończy się tabela EMPLOYEES a zaczyna tabela JOBS.




