dr inż. Michał Malinowski

bazy grafowe, sztuczna inteligencja, cyberbezpieczeństwo

Rodzaje JOIN-ów w SQL


Przewodnik po operacjach łączenia tabel


October 31, 2024

Zapytania SQL – złączenia tabel INNER
Zapytania SQL – złączenia tabel INNER
W SQL istnieje kilka typów operacji łączenia (JOIN), które umożliwiają integrację danych z różnych tabel na podstawie wspólnych kluczy. JOIN-y pozwalają na elastyczne przetwarzanie danych, uzyskiwanie odpowiedzi na złożone zapytania i organizowanie wyników w sposób odpowiadający naszym potrzebom analitycznym. Przedstawimy tutaj różne rodzaje JOIN-ów, ich wyniki oraz odpowiednie zapytania SQL dla każdego typu, co ułatwi zrozumienie, jak i kiedy stosować każdy z nich.

Typy JOIN-ów i ich zastosowania

  1. INNER JOIN
    • Opis: INNER JOIN zwraca tylko te wiersze, które mają dopasowanie w obu tabelach. Oznacza to, że jeśli rekord nie ma pary w obu tabelach, nie zostanie uwzględniony w wyniku.
    • Zapytanie SQL: Użyj polecenia „SELECT * FROM A INNER JOIN B ON A.key = B.key”, aby wyświetlić tylko te rekordy, które są wspólne dla obu tabel.
    • Przykład zastosowania: Stosowany, gdy chcemy uzyskać tylko wspólne dane, np. użytkowników, którzy dokonali zakupu (wspólne dane z tabeli użytkowników i zakupów).
  2. FULL JOIN
    • Opis: FULL JOIN zwraca wszystkie wiersze z obu tabel, niezależnie od tego, czy mają dopasowanie w drugiej tabeli. Rekordy, które nie mają dopasowania, są uzupełniane wartościami NULL.
    • Zapytanie SQL: Wykorzystaj polecenie „SELECT * FROM A FULL JOIN B ON A.key = B.key”, aby uzyskać pełny zestaw danych z obu tabel, nawet jeśli niektóre z nich są niepełne.
    • Przykład zastosowania: Używany, gdy chcemy uzyskać pełny zestaw danych, nawet jeśli występują niepełne informacje pochodzące z różnych tabel, np. pełna lista klientów i ich potencjalnych zamówień, niezależnie od tego, czy złożyli zamówienie.
  3. FULL JOIN z warunkiem NULL
    • Opis: Zwraca tylko te rekordy, które nie mają dopasowania w obu tabelach. Jest to różnica symetryczna – pokazuje, gdzie brakuje wspólnych danych między tabelami.
    • Zapytanie SQL: Użyj „SELECT * FROM A FULL JOIN B ON A.key = B.key WHERE A.key IS NULL OR B.key IS NULL”, aby wyświetlić tylko te rekordy, które nie mają odpowiedników w obu tabelach.
    • Przykład zastosowania: Przydatne, gdy chcemy znaleźć rekordy, które są unikalne dla jednej z tabel, np. klienci, którzy jeszcze nie dokonali zakupu.
  4. LEFT JOIN
    • Opis: LEFT JOIN zwraca wszystkie rekordy z lewej tabeli (A) oraz dopasowane rekordy z prawej tabeli (B). Jeśli w tabeli B nie ma dopasowania, wyniki są uzupełniane wartością NULL.
    • Zapytanie SQL: Skorzystaj z polecenia „SELECT * FROM A LEFT JOIN B ON A.key = B.key”, aby wyświetlić wszystkie dane z tabeli A wraz z dopasowaniami z tabeli B.
    • Przykład zastosowania: Używany, gdy interesują nas wszystkie dane z jednej tabeli, nawet jeśli nie mają one dopasowania w drugiej tabeli, np. lista wszystkich klientów i ich zamówień, z możliwością braku zamówienia.
  5. LEFT JOIN z warunkiem NULL
    • Opis: LEFT JOIN, ale z dodatkowym filtrem, który pokazuje tylko te rekordy z lewej tabeli, które nie mają dopasowania w prawej tabeli.
    • Zapytanie SQL: Wprowadź „SELECT * FROM A LEFT JOIN B ON A.key = B.key WHERE B.key IS NULL”, aby wyświetlić tylko te rekordy, które są obecne w tabeli A, ale nie mają odpowiedników w tabeli B.
    • Przykład zastosowania: Służy do znajdowania danych, które istnieją w lewej tabeli, ale nie mają odpowiednika w prawej, np. klienci bez zamówień.
  6. RIGHT JOIN
    • Opis: RIGHT JOIN działa podobnie jak LEFT JOIN, ale zwraca wszystkie rekordy z prawej tabeli (B) i tylko te dopasowane z lewej tabeli (A). Rekordy z tabeli A, które nie mają odpowiedników, będą miały wartości NULL.
    • Zapytanie SQL: Użyj „SELECT * FROM A RIGHT JOIN B ON A.key = B.key”, aby uzyskać wszystkie rekordy z tabeli B wraz z dopasowaniami z tabeli A.
    • Przykład zastosowania: Stosowany, gdy zależy nam na kompletności danych z tabeli B, niezależnie od obecności odpowiedników w tabeli A, np. lista wszystkich zamówień i przypisanych im klientów.
  7. RIGHT JOIN z warunkiem NULL
    • Opis: RIGHT JOIN z filtrem na wartości NULL, pokazujący tylko rekordy z prawej tabeli, które nie mają dopasowania w lewej.
    • Zapytanie SQL: Użyj „SELECT * FROM A RIGHT JOIN B ON A.key = B.key WHERE A.key IS NULL”, aby wyświetlić te rekordy, które są obecne w tabeli B, ale nie mają dopasowania w tabeli A.
    • Przykład zastosowania: Przydatny, gdy chcemy znaleźć dane z prawej tabeli, które nie mają odpowiedników w lewej, np. zamówienia niezwiązane z żadnym klientem.

Podsumowanie

Każdy typ JOIN w SQL pełni unikalną funkcję i pozwala uzyskać różne widoki na dane. Wybór odpowiedniego rodzaju JOIN-u zależy od tego, jakie informacje chcemy uzyskać i jak mają być one powiązane. W praktyce, znajomość działania JOIN-ów pozwala na efektywniejsze zapytania i lepsze zrozumienie relacji w bazie danych, co jest kluczowe w pracy z dużymi zbiorami danych. 
#SQL #BazyDanych #JOIN #InnerJoin #LeftJoin #RightJoin #FullJoin #DataScience #SQLQueries 

Share

Tools
Translate to