Operator używany do łączenia lub łączenia dwóch zapytań to nic innego jak operatory SET. Operatory podzielone na operatory SET są następujące:
- Operator UNION.
- Operator UNION ALL”.
- Operator PRZECIĘCIE.
- Operator MINUS.
Zasady, których należy przestrzegać, aby korzystać z Operatora SET, są następujące:
- Liczba kolumn i kolejność kolumn muszą być takie same.
- Typ danych musi być zgodny.
Zrozummy każdy z operatorów SET na przykładach.
Rozważ poniższe tabele wraz z podanymi rekordami.
Tabela 1:Pracownicy
ID PRACOWNIKA | FIRST_NAME | LAST_NAME | WYNAGRODZENIE | MIASTO | DZIAŁ | IDENTYFIKATOR KIEROWCY | ROBOCZE_GODZINY | PŁEĆ |
1001 | VAIBHAVI | MISHRA | 65000 | PUNE | WYROCZNIA | 1 | 12 | F |
1002 | VAIBHAV | SHARMA | 60000 | NOIDA | WYROCZNIA | 1 | 9 | M |
1003 | NIKHIL | VANI | 50000 | JAIPUR | FMW | 2 | 10 | M |
2001 | PRACI | SHARMA | 55500 | CZANDIGAR | WYROCZNIA | 1 | 10 | F |
2002 | PRZYJMUJ SIĘ | JAIN | 65500 | PUNE | FMW | 2 | 12 | M |
2003 | RUCHIKA | JAIN | 50000 | MUMBAJ | TESTOWANIE | 4 | 9 | F |
3001 | PRANOTI | SHENDE | 55500 | PUNE | JAVA | 3 | 9 | F |
3002 | ANUJA | GDZIE | 50500 | JAIPUR | FMW | 2 | 9 | F |
3003 | DEEPAM | JAUHARI | 58500 | MUMBAJ | JAVA | 3 | 12 | M |
4001 | RAJESH | GOUD | 60500 | MUMBAJ | TESTOWANIE | 4 | 10 | M |
Tabela2:Pracownik.
ID PRACOWNIKA | FIRST_NAME | LAST_NAME | WYNAGRODZENIE | MIASTO | DZIAŁ | IDENTYFIKATOR KIEROWCY | ROBOCZE_GODZINY | PŁEĆ |
1001 | Vaibhav | Szarma | 65000 | PUNE | WYROCZNIA | 1 | 12 | M |
1002 | Nikhil | Wani | 60000 | NOIDA | WYROCZNIA | 1 | 9 | M |
1003 | Waibhavi | Miszra | 50000 | JAIPUR | FMW | 2 | 10 | F |
2001 | Ruchika | Jain | 55500 | CZANDIGAR | WYROCZNIA | 1 | 10 | F |
2002 | Praci | Szarma | 65500 | PUNE | FMW | 2 | 12 | F |
2003 | Bhawesz | Jain | 50000 | MUMBAJ | TESTOWANIE | 4 | 9 | M |
3001 | Deepam | Jauhari | 55500 | PUNE | JAVA | 3 | 9 | M |
3002 | ANUJA | GDZIE | 50500 | JAIPUR | FMW | 2 | 9 | F |
3003 | Pranoti | Shende | 58500 | MUMBAJ | JAVA | 3 | 12 | F |
4001 | RAJESH | GOUD | 60500 | MUMBAJ | TESTOWANIE | 4 | 10 | M |
Tabela3:Menedżer.
Identyfikator menedżera | nazwa_menedżera | manager_department |
1 | Snehdeep Kaur | WYROCZNIA |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manish | JAVA |
4 | Anupam Mishra | TESTOWANIE |
Tabela 4:Menedżer1.
Identyfikator menedżera | nazwa_menedżera | manager_department |
1 | Ishita Agrawal | WYROCZNIA |
2 | Kirti Kirtane | FMW |
3 | Abhishek Manish | JAVA |
4 | Paweł Oakip | TESTOWANIE |
Operator UNION
Operator UNION jest pierwszym operatorem używanym do scalania lub łączenia dwóch lub więcej instrukcji SELECT. Wtedy i tylko wtedy, gdy ich liczba kolumn i kolejność kolumn są takie same.
Zduplikowane wiersze nie będą brane pod uwagę w wyniku uzyskanym po wykonaniu operacji UNION.
Składnia operacji UNION jest następująca:
SELECT * FROM TABLE_NAME1 UNION SELECT * FROM TABLE_NAME2;
Przykład 1: Wykonaj zapytanie, aby wykonać operację UNION między tabelą pracowników a tabelą pracowników.
SELECT * FROM EMPLOYEES UNION SELECT * FROM EMPLOYEE;
W powyższym zapytaniu użyliśmy dwóch zapytań SELECT. Pierwsze zapytanie SELECT pobiera dane od pracowników, a drugie zapytanie SELECT pobiera dane z danych pracowników, a na obu zapytaniach SELECT wykonywana jest operacja UNION.
Operacja UNION odrzuci zduplikowane wiersze między obiema tabelami. Następujące dane wyjściowe są pokazane jako:
Wyświetlane są oba rekordy tabeli z wyjątkiem zduplikowanych rekordów.
Przykład 2: Wykonaj zapytanie, aby wykonać operację UNION między tabelą Employees a tabelą Employee. Ale wyświetlaj tylko te rekordy pracowników z tabeli pracowników, które należą do miasta Bombaj, a z tabeli pracowników tylko te rekordy pracowników, których wynagrodzenie jest większe niż 50000 i mniejsze niż 60000.
SELECT * FROM EMPLOYEES WHERE CITY = 'MUMBAI' UNION SELECT * FROM EMPLOYEE WHERE SALARY > 50000 AND SALARY < 60000;
W powyższym zapytaniu użyliśmy dwóch zapytań SELECT. Pierwsze zapytanie SELECT pobiera tylko te rekordy, których pracownik należy do miasta Bombaj z tabeli Pracownicy. Wykonanie operacji UNION z drugim zapytaniem SELECT spowoduje pobranie z tabeli pracowników tylko tych rekordów, których wynagrodzenie pracownika jest większe niż 50000, ale mniejsze niż 60000. Operacja UNION odrzuci zduplikowane wiersze między obiema tabelami.
Następujące dane wyjściowe są pokazane jako:
Wyświetlane są oba rekordy tabeli z wyjątkiem zduplikowanych rekordów.
Przykład 3: Wykonaj zapytanie, aby wykonać operację UNION między tabelą Employees a tabelą Employee. Chcemy tylko te rekordy z tabeli Pracownicy, których miasto pracownika należy do „Pune” i „Jaipur”.
SELECT* FROM EMPLOYEES WHERE CITY IN ('PUNE', 'JAIPUR') UNION SELECT * FROM EMPLOYEE;
W powyższym zapytaniu użyliśmy dwóch zapytań SELECT. Pierwsze zapytanie SELECT pobiera te rekordy, których pracownicy należą do miast „Pune” i „Jaipur” z tabeli Pracownicy. Operacja UNION jest wykonywana na rekordach pobranych z drugiego zapytania SELECT od pracownika tabeli.
Operacja UNION odrzuci zduplikowane wiersze między obiema tabelami. Następujące dane wyjściowe są pokazane jako:
Jak wszyscy widzimy, wynik pierwszych pięciu rekordów to ci pracownicy, którzy należą do miasta Pune lub Jaipur. Pozostałe rekordy pochodzą z tabeli pracowników, drugiego zapytania SELECT.
Wyświetlane są oba rekordy tabeli z wyjątkiem zduplikowanych rekordów.
Przykład 4: Wykonaj zapytanie, aby wykonać operację UNION między tabelą Employees a tabelą Employee. Chcemy tylko te rekordy z tabeli Pracownik, którego imię zaczyna się na V.
SELECT * FROM EMPLOYEES UNION SELECT * FROM EMPLOYEE WHERE FIRST_NAME LIKE 'V%';
W powyższym zapytaniu użyliśmy dwóch zapytań SELECT. Pierwsze zapytanie SELECT pobiera wszystkie rekordy z tabeli Pracownicy. Operacja UNION jest wykonywana na rekordach pobranych z drugiego zapytania SELECT od pracownika tabeli, którego imię zaczyna się na 'V'.
Operacja UNION odrzuci zduplikowane wiersze między obiema tabelami. Następujące dane wyjściowe są pokazane jako:
Jak wszyscy możemy, pierwsze 10 wyników pochodzi z tabeli Pracownicy, a pozostałe z tabeli Pracownicy, których imię zaczyna się na „V”.
Przykład 5: Wykonaj zapytanie, aby wykonać operację UNION między tabelą menedżera a tabelą menedżera1.
SELECT * FROM MANAGER UNION SELECT * FROM MANAGER1;
W powyższym zapytaniu użyliśmy dwóch zapytań SELECT. Pierwsze zapytanie SELECT pobiera dane z menedżera, a drugie zapytanie SELECT pobiera dane z danych menedżera1, a na obu zapytaniach SELECT wykonywana jest operacja UNION.
Operacja UNION odrzuci zduplikowane wiersze między obiema tabelami. Następujące dane wyjściowe są pokazane jako:
Wyświetlane są oba rekordy tabeli z wyjątkiem zduplikowanych rekordów.
UNON ALL Operatorzy
Operator UNION ALL łączy wszystkie dane z obu zapytań. W operatorze UNION zduplikowane rekordy nie były uwzględniane w wyniku, ale UNION ALL uważał za zduplikowane rekordy w wyniku uzyskanym po wykonaniu operacji UNION ALL.
Składnia operacji UNION ALL jest następująca:
SELECT * FROM TABLE_NAME1 UNION ALL SELECT * FROM TABLE_NAME2;
Przykład 1: Wykonaj zapytanie, aby wykonać operację UNION ALL między tabelą Employees a tabelą Employee.
SELECT * FROM EMPLOYEES UNION ALL SELECT * FROM EMPLOYEE;
W powyższym zapytaniu użyliśmy dwóch zapytań SELECT. Pierwsze zapytanie SELECT pobiera dane od pracowników i wykonuje operację UNION ALL na danych pobranych przez Drugie zapytanie SELECT pobiera dane z tabeli pracowników.
Następujące dane wyjściowe są pokazane jako:
Wszystkie rekordy zostaną wyświetlone zarówno z tabel Pracownicy, jak i Pracownik, duplikaty rekordów również zostaną wyświetlone, gdy wykonujemy operację UNION ALL.
Przykład 2: Wykonaj zapytanie, aby wykonać operację UNION ALL między tabelą Employees a tabelą Employee. Ale wyświetl tylko te rekordy pracowników z tabeli pracowników, które należą do miasta Bombaj. Z tabeli pracowników tylko te rekordy pracowników, których wynagrodzenie pracownika wynosi 60500, a miasto to „Mumbai”.
SELECT * FROM EMPLOYEES WHERE CITY = 'MUMBAI' UNION ALL SELECT * FROM EMPLOYEE WHERE SALARY = 60500 AND CITY = 'MUMBAI';
W powyższym zapytaniu użyliśmy dwóch zapytań SELECT. Pierwsze zapytanie SELECT pobiera tylko te rekordy, których pracownik należy do miasta Bombaj z tabeli Pracownicy. I wykonaj operację UNION ALL z drugim zapytaniem SELECT, aby pobrać z tabeli pracowników tylko te rekordy, których wynagrodzenie pracownika wynosi 60500 i miasto to „Mumbai”.
Następujące dane wyjściowe są pokazane jako:
Wyświetlane są oba rekordy tabeli, w tym zduplikowane rekordy, gdy wykonujemy operacje UNION ALL.
Przykład 3: Wykonaj zapytanie, aby wykonać operację UNION między tabelą Employees a tabelą Employee. Chcemy tylko te rekordy z tabeli Pracownicy, których miasto pracownika należy do „Pune”, „Mumbai” i „Jaipur”.
SELECT* FROM EMPLOYEES WHERE CITY IN ('PUNE', 'MUMBAI', 'JAIPUR') UNION ALL SELECT * FROM EMPLOYEE;
W powyższym zapytaniu użyliśmy dwóch zapytań SELECT. Pierwsze zapytanie SELECT pobiera te rekordy, których pracownicy należą do miast „Pune”, „Mumbai” i „Jaipur” z tabeli Pracownicy. Operacja UNION ALL jest wykonywana na rekordach pobranych z drugiego zapytania SELECT od pracownika tabeli.
Następujące dane wyjściowe są pokazane jako:
Wyświetlane są oba rekordy tabeli, w tym zduplikowane rekordy, gdy wykonujemy operacje UNION ALL.
Przykład 4: Wykonaj zapytanie, aby wykonać operację UNION ALL między tabelą Manager a tabelą Manager1.
SELECT * FROM MANAGER UNION ALL SELECT * FROM MANAGER1;
W powyższym zapytaniu użyliśmy dwóch zapytań SELECT. Pierwsze zapytanie SELECT pobiera dane z Managera i wykonuje operacje UNION ALL na danych pobranych przez Drugie zapytanie SELECT pobiera dane z tabeli manager1.
Następujące dane wyjściowe są pokazane jako:
Wszystkie rekordy zostaną wyświetlone z obu tabel Manager i Manager1; zduplikowane rekordy są wyświetlane, gdy wykonujemy operacje UNION ALL.
OPERATORY PRZECIĘCIA
Operator przecięcia służy do łączenia dwóch lub więcej instrukcji SELECT, ale wyświetla tylko dane podobne do instrukcji SELECT.
Składnia operacji INTERSECT jest następująca:
SELECT * FROM TABLE_NAME1 INTERSECT SELECT * FROM TABLE_NAME2;
Przykład 1: Wykonaj zapytanie, aby wykonać operację INTERSECT między tabelą pracowników a tabelą pracowników.
SELECT * FROM EMPLOYEES INTERSECT SELECT * FROM EMPLOYEE;
W powyższym zapytaniu użyliśmy dwóch zapytań SELECT. Pierwsze zapytanie SELECT pobiera dane od pracowników i wykonuje operację INTERSECT na danych pobranych przez drugie zapytanie SELECT pobiera dane z tabeli pracowników.
Następujące dane wyjściowe są pokazane jako:
Tylko podobne rekordy zostaną wyświetlone z obu tabel, ponieważ wykonaliśmy operację INTERSECT między tabelą Employees a tabelą Employee.
Przykład 2: Wykonaj zapytanie, aby wykonać operację INTERSECT między tabelą menedżera a tabelą menedżera1.
SELECT * FROM MANAGER INTERSECT SELECT * FROM MANAGER1;
W powyższym zapytaniu użyliśmy dwóch zapytań SELECT. Pierwsze zapytanie SELECT pobiera dane z Managera i wykonuje operację INTERSECT na danych pobranych przez Drugie zapytanie SELECT pobiera dane z tabeli Manager1.
Następujące dane wyjściowe są pokazane jako:
Tylko podobne rekordy zostaną wyświetlone z obu tabel, ponieważ wykonaliśmy operację INTERSECT między tabelą Manager a tabelą Manager1.
Operatorzy MINUS
Operator MINUS służy do zwracania wierszy obecnych w pierwszym zapytaniu, ale nieobecnych w pozostałych zapytaniach bez duplikatów.
Składnia operacji MINUS jest następująca.
SELECT * FROM TABLE_NAME1 EXCEPT SELECT * FROM TABLE_NAME2;
Uwaga: Słowo kluczowe MINUS obsługiwane jest tylko w bazach danych ORACLE. Możemy użyć słowa kluczowego EXCEPT dla innych baz danych, aby wykonać podobną operację.
Przykład 1: Wykonaj zapytanie, aby wykonać operację MINUS między tabelą Employees a tabelą Employee.
SELECT * FROM EMPLOYEES EXCEPT SELECT * FROM EMPLOYEE;
W powyższym zapytaniu użyliśmy dwóch zapytań SELECT. Pierwsze zapytanie SELECT pobiera dane od pracowników i wykonuje operację MINUS na danych pobranych przez Drugie zapytanie SELECT pobiera dane z tabeli pracowników.
Następujące dane wyjściowe są pokazane jako:
Tylko niepasujące rekordy zostaną wyświetlone z obu tabel, ponieważ wykonaliśmy operację MINUS między tabelą Employees a tabelą Employee.
Przykład 2: Wykonaj zapytanie, aby wykonać operację MINUS między tabelą menedżera a tabelą menedżera1.
SELECT * FROM MANAGER EXCEPT SELECT * FROM MANAGER1;
W powyższym zapytaniu użyliśmy dwóch zapytań SELECT. Pierwsze zapytanie SELECT pobiera dane z Managera i wykonuje operację MINUS na danych pobranych przez Drugie zapytanie SELECT pobiera dane z tabeli Manager1.
Następujące dane wyjściowe są pokazane jako:
Tylko niedopasowane rekordy zostaną wyświetlone z obu tabel, ponieważ wykonaliśmy operację MINUS między tabelą Manager a tabelą Manager1.