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.