🎯 Cel ćwiczenia
Naucz się efektywnie łączyć tabele w MySQL! JOIN to jedna z najważniejszych funkcji SQL, która pozwala na pobieranie danych z wielu tabel w jednym zapytaniu.
Czego się nauczysz:
- INNER JOIN - podstawowe łączenie tabel
- LEFT JOIN i RIGHT JOIN - łączenie z zachowaniem wszystkich wierszy z jednej tabeli
- FULL OUTER JOIN - łączenie z zachowaniem wszystkich wierszy
- SELF JOIN - łączenie tabeli samej ze sobą
- CROSS JOIN - iloczyn kartezjański
- Łączenie wielu tabel w jednym zapytaniu
- Optymalizacja zapytań z JOIN
📥 Pobierz bazę danych do ćwiczeń
Baza "szkola" zawiera tabele: uczniowie, nauczyciele, przedmioty, oceny, klasy
Plik zawiera kompletną bazę z przykładowymi danymi
🔗 Część 1: Podstawy JOIN
JOIN pozwala na łączenie danych z wielu tabel na podstawie wspólnych kolumn.
Przykład 1: INNER JOIN - podstawowe łączenie
Przykład 2: LEFT JOIN - zachowaj wszystkie wiersze z lewej tabeli
Przykład 3: RIGHT JOIN - zachowaj wszystkie wiersze z prawej tabeli
🔀 Część 2: Zaawansowane JOIN
Przykład 4: Łączenie wielu tabel
Przykład 5: SELF JOIN - łączenie tabeli samej ze sobą
Przykład 6: CROSS JOIN - iloczyn kartezjański
Przykład 7: LEFT JOIN z warunkiem - znajdź uczniów bez ocen
✏️ ZADANIA PRAKTYCZNE - POZIOM PODSTAWOWY
Zadanie 1: Podstawowe JOIN
ŁATWYNapisz zapytania używające JOIN:
- Wyświetl wszystkich uczniów wraz z ich klasami
- Pokaż oceny uczniów wraz z nazwami przedmiotów
- Wyświetl nauczycieli i przedmioty, których uczą
- Pokaż uczniów, którzy mają oceny z matematyki
Zadanie 2: LEFT JOIN i RIGHT JOIN
ŁATWYUżyj LEFT JOIN i RIGHT JOIN:
- Znajdź uczniów, którzy nie mają żadnych ocen
- Pokaż wszystkie przedmioty, nawet te bez przypisanych nauczycieli
- Wyświetl wszystkich nauczycieli, nawet tych bez przypisanych przedmiotów
- Znajdź przedmioty, które nie mają żadnych ocen
✏️ ZADANIA PRAKTYCZNE - POZIOM ZAAWANSOWANY
Zadanie 3: Łączenie wielu tabel
ŚREDNIStwórz złożone zapytania łączące wiele tabel:
- Wyświetl uczniów, ich oceny, przedmioty i nauczycieli tych przedmiotów
- Pokaż średnią ocen każdego ucznia z każdego przedmiotu
- Wyświetl ranking klas według średniej ocen
- Pokaż nauczycieli i liczbę uczniów, których uczą
Zadanie 4: SELF JOIN i CROSS JOIN
ŚREDNIUżyj SELF JOIN i CROSS JOIN:
- Znajdź pary uczniów z tej samej klasy (SELF JOIN)
- Utwórz plan zajęć - wszystkie możliwe kombinacje klas i przedmiotów (CROSS JOIN)
- Znajdź uczniów, którzy mają taką samą średnią ocen (SELF JOIN)
- Utwórz kalendarz ocen - wszystkie możliwe kombinacje uczniów i miesięcy (CROSS JOIN)
Zadanie 5: Analiza danych z JOIN
TRUDNYStwórz zaawansowane analizy:
- Pokaż uczniów, którzy mają oceny wyższe niż średnia ich klasy
- Wyświetl nauczycieli i średnią ocen z ich przedmiotów
- Znajdź pary przedmiotów, które mają podobną średnią ocen
- Pokaż trendy w ocenach - porównaj średnie z różnych miesięcy
💡 WSKAZÓWKI PRO
1. Używaj aliasów dla czytelności
2. Uważaj na duplikaty w JOIN
JOIN może tworzyć duplikaty, jeśli w jednej z tabel są powtarzające się wartości w kolumnie łączącej.
3. Optymalizuj zapytania z JOIN
- Używaj WHERE do filtrowania przed JOIN
- Twórz indeksy na kolumnach używanych w JOIN
- Unikaj SELECT * - wybieraj tylko potrzebne kolumny
Częste błędy w JOIN:
- ❌ Zapominanie o warunku JOIN - tworzy iloczyn kartezjański
- ❌ Mylenie INNER JOIN z LEFT JOIN
- ❌ Używanie WHERE zamiast ON dla warunków łączenia
- ❌ Nieprawidłowe aliasy
- ❌ Łączenie zbyt wielu tabel na raz - utrudnia czytelność
🏆 MEGA WYZWANIE - System Raportowania
Stwórz kompletny system raportowania używając JOIN:
- Raport uczniów: Pokaż wszystkich uczniów z ich średnimi ocen i liczbą ocen
- Raport klas: Wyświetl klasy z ich średnimi, najlepszymi uczniami i nauczycielami
- Raport nauczycieli: Pokaż nauczycieli z przedmiotami, średnimi ocen i liczbą uczniów
- Analiza trendów: Porównaj średnie ocen z różnych miesięcy
- Wykrywanie anomalii: Znajdź uczniów, których oceny znacząco odbiegają od średniej klasy
📚 DODATKOWE ZASOBY
🎓 Test Wiedzy - JOIN w MySQL
Pytania kontrolne:
- Jaka jest różnica między INNER JOIN a LEFT JOIN? (Odp: INNER JOIN zwraca tylko pasujące wiersze, LEFT JOIN zwraca wszystkie wiersze z lewej tabeli)
- Do czego służy SELF JOIN? (Odp: Do łączenia tabeli samej ze sobą)
- Czym jest iloczyn kartezjański? (Odp: Każdy wiersz z pierwszej tabeli połączony z każdym wierszem z drugiej tabeli)
- Jak znaleźć rekordy, które nie mają pasujących rekordów w innej tabeli? (Odp: Użyć LEFT JOIN z warunkiem IS NULL)
- Dlaczego warto używać aliasów w JOIN? (Odp: Dla czytelności i skrócenia zapytania)
🎉 GRATULACJE!
Ukończyłeś ćwiczenie z JOIN w MySQL! Jesteś teraz w stanie:
- ✅ Łączyć tabele za pomocą INNER JOIN, LEFT JOIN, RIGHT JOIN
- ✅ Używać SELF JOIN do porównywania wierszy w tej samej tabeli
- ✅ Tworzyć zapytania łączące wiele tabel
- ✅ Znajdować rekordy bez pasujących wartości
- ✅ Optymalizować zapytania z JOIN
JOIN to potężne narzędzie - wykorzystuj je mądrze! 🚀💪