Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Bazy danych

Czym różni się operator UNION od UNION ALL przy łączeniu wyników dwóch zapytań SELECT?

A. UNION działa tylko na jednej tabeli, a UNION ALL na wielu tabelach.
Źle. Oba operatory działają zarówno na jednej tabeli, jak i na wielu. Różnią się obsługą duplikatów.
B. UNION usuwa powtarzające się wiersze, a UNION ALL zwraca wszystkie wiersze, także powtórzone.
Dobrze. UNION zostawia każdy wiersz raz, a UNION ALL zwraca wszystkie, także powtórzone.
C. UNION ALL usuwa powtarzające się wiersze, a UNION zwraca wszystkie wiersze.
Źle. Role są odwrócone. ALL oznacza zachowanie wszystkich wierszy, także duplikatów.
D. UNION łączy kolumny obu zapytań obok siebie, a UNION ALL wiersze jeden pod drugim.
Źle. Kolumny obok siebie łączy JOIN. Oba operatory UNION dokładają wiersze pod spodem.

Oba operatory sklejają wyniki dwóch zapytań SELECT jeden pod drugim. UNION dodatkowo usuwa duplikaty: jeśli identyczny wiersz wystąpi w obu wynikach, pojawi się raz. UNION ALL niczego nie sprawdza i zwraca wszystkie wiersze, także powtórzone. Słowo ALL można zapamiętać jako „weź wszystko”.

Usuwanie duplikatów wymaga porównania wierszy, więc UNION ALL działa szybciej i stosuje się go, gdy powtórzeń być nie może albo są potrzebne, np. przy sumowaniu sprzedaży z dwóch tabel. Oba zapytania muszą zwracać tyle samo kolumn o zgodnych typach, a nazwy kolumn wyniku pochodzą z pierwszego zapytania.

Sortowanie całego wyniku dopisuje się raz, na końcu ostatniego zapytania.

Najczęstszy błąd to zamiana ról: odwrotne przypisanie usuwania duplikatów nie ma oparcia w nazwach. Słowo ALL dopisuje się właśnie po to, żeby zachować wszystkie wiersze, łącznie z powtórzonymi.

Łączenie kolumn dwóch tabel obok siebie to zadanie złączenia JOIN, np. SELECT * FROM uczniowie JOIN klasy ON uczniowie.id_klasy = klasy.id. Obie wersje UNION zawsze dokładają wiersze, a liczba kolumn wyniku się nie zmienia.

Liczba tabel też nie ma znaczenia. Oba operatory mogą łączyć zapytania do tej samej tabeli, np. mieszkańców dwóch miast, albo do zupełnie różnych tabel. Jedyna różnica między nimi dotyczy duplikatów.

Gdy wiadomo, że powtórzeń nie będzie, lepiej wybrać szybszy UNION ALL, bo serwer nie musi porównywać wierszy.

Przykład: mieszkaniec zapisany w obu wynikach pojawi się dwa razy po UNION ALL i raz po UNION.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.