Operator INTERSECT należy do tzw. operatorów zbiorowych w SQL, czyli takich, które łączą wyniki dwóch zapytań w jeden wynik w oparciu o logikę teorii zbiorów.
Znaczenie INTERSECT jest następujące: zwraca część wspólną wyników, czyli te wiersze, które pojawiają się w obu zbiorach wynikowych. Innymi słowy, aby rekord znalazł się w rezultacie, musi wystąpić zarówno w pierwszym, jak i w drugim zapytaniu.
- Dlaczego "Zwraca część wspólną wyników dwóch zapytań." jest poprawne?
Bo dokładnie opisuje przecięcie zbiorów: wynik zawiera elementy wspólne dla obu zapytań. - Dlaczego odpowiedzi o wierszach "z pierwszego, ale nie z drugiego" oraz "z drugiego, ale nie z pierwszego" są błędne?
To opis różnicy zbiorów (w SQL często realizowanej operatorem typu EXCEPT / MINUS, zależnie od systemu), a nie przecięcia. - Dlaczego odpowiedź o "liście wyników z pierwszego oraz listę wyników z drugiego" jest błędna?
To opis działania sumy zbiorów (UNION). UNION łączy wyniki obu zapytań, zazwyczaj usuwając duplikaty, natomiast INTERSECT nic "nie dokłada", tylko filtruje do wspólnych wierszy.
W praktyce, aby operatory zbiorowe działały poprawnie, oba zapytania muszą zwracać kompatybilne wyniki (np. tę samą liczbę kolumn i zgodne typy danych na odpowiadających pozycjach). Warto też pamiętać, że wsparcie dla INTERSECT zależy od konkretnego systemu bazy danych: w jednych jest dostępny, w innych może go nie być, ale tam gdzie występuje, jego sens pozostaje taki sam.
Wskazówka egzaminacyjna: zapamiętaj triadę działań na zbiorach: suma (UNION), część wspólna (INTERSECT), różnica (EXCEPT/MINUS). To pozwala szybko rozpoznać poprawną definicję po opisie.