Złączenia w SQL

1. Co to jest złączenie?

Złączenie (JOIN) pozwala połączyć dane z kilku tabel w jednym zapytaniu. Dzięki temu możesz zobaczyć informacje, które są zapisane w różnych miejscach bazy — np.:

  • imię ucznia i nazwę jego klasy,
  • nazwisko nauczyciela i jego adres e-mail,
  • ucznia i przedmiot, którego się uczy.

2. Najważniejsze rodzaje złączeń

a) INNER JOIN (złączenie wewnętrzne)

Pokazuje tylko te rekordy, które mają dopasowanie w obu tabelach.

Przykład 1: Uczniowie i ich klasy

➡ Wynik: tylko uczniowie, którzy mają przypisaną klasę. Jeśli jakiś uczeń nie ma klasy, nie pojawi się w wynikach.


b) LEFT JOIN (złączenie lewostronne)

Zwraca wszystkie wiersze z lewej tabeli (tej wymienionej jako pierwsza), nawet jeśli nie ma dopasowania w drugiej.

Przykład 2: Nauczyciele i ich dane kontaktowe

➡ Wynik: wszyscy nauczyciele — jeśli ktoś nie ma danych kontaktowych, pola email i numer_telefonu będą puste (NULL).


c) RIGHT JOIN (złączenie prawostronne)

Działa odwrotnie do LEFT JOIN: pokazuje wszystkie rekordy z prawej tabeli, nawet jeśli nie ma dopasowania po lewej stronie.

Przykład 3: Wszystkie klasy i przypisani nauczyciele

➡ Wynik: wszystkie klasy oraz nazwiska nauczycieli. Jeśli jakaś klasa nie ma nauczyciela, zobaczysz NULL w kolumnach z imieniem i nazwiskiem.


d) CROSS JOIN (złączenie krzyżowe)

Tworzy wszystkie możliwe kombinacje rekordów z obu tabel. Każdy wiersz z pierwszej tabeli łączy się z każdym wierszem z drugiej tabeli. Używa się rzadko — np. do testów.

Przykład 4: Każdy nauczyciel z każdym przedmiotem

➡ Wynik: bardzo dużo wierszy — każdy nauczyciel połączony z każdym przedmiotem.


3. Złączenia wielu tabel naraz

Czasami trzeba połączyć więcej niż dwie tabele w jednym zapytaniu.

Przykład 5: Uczniowie, ich klasy i wychowawcy

➡ Wynik: imię i nazwisko ucznia, jego klasa i nauczyciel prowadzący (wychowawca).


4. Złączenia przez tabelę pośrednią

Niektóre tabele łączą dane pośrednio — np. uczniowie i przedmioty są połączeni przez tabelę UczenPrzedmiot.

Przykład 6: Jakie przedmioty ma dany uczeń

➡ Wynik: lista uczniów wraz z ich przedmiotami.


5. Łączenie uczniów z ocenami i przedmiotami

Przykład 7: Oceny uczniów z nazwami przedmiotów

➡ Wynik: każda ocena z imieniem ucznia i nazwą przedmiotu.


6. Dodawanie warunków do złączeń

Możesz używać WHERE, żeby filtrować dane po złączeniu.

Przykład 8: Oceny tylko z matematyki

➡ Wynik: tylko oceny z matematyki.


7. Aliasowanie tabel (czyli skracanie nazw)

Długie nazwy tabel można skrócić za pomocą aliasów:

➡ Zamiast pisać Uczniowie.imie — używasz U.imie. To bardzo przydatne, gdy łączysz kilka tabel.