Mechanika INNER JOIN
Poznaj INNER JOIN jako filtrowany iloczyn kartezjański, pisz warunki złączeń i analizuj wynik EXPLAIN dla złączeń.
Mechanika INNER JOIN to bezpłatna lekcja SQL Academy na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej SQL Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs SQL Academy zawiera 4 lekcji w sumie.
Złączenie INNER JOIN
INNER JOIN zwraca tylko wiersze, które mają odpowiadającą parę w OBU tabelach, zgodnie z warunkiem ON.
Podstawowe INNER JOIN
Pobieranie każdego zamówienia wraz z jego użytkownikiem:
SELECT o.id, o.total, u.email
FROM orders o
INNER JOIN users u ON u.id = o.user_id;
-- INNER is the default — you can also write:
SELECT o.id, o.total, u.email
FROM orders o
JOIN users u ON u.id = o.user_id;Wiele warunków w ON
Klauzula ON jest zwykłym wyrażeniem logicznym:
SELECT *
FROM events e
JOIN sessions s
ON s.user_id = e.user_id
AND e.created_at BETWEEN s.start_at AND s.end_at;Aliasy
Aliasy skracają zapytania i zapobiegają niejednoznacznym odwołaniom do kolumn:
SELECT o.id, u.email
FROM orders AS o -- AS is optional
JOIN users AS u ON u.id = o.user_id;Łączenie co najmniej trzech tabel
Należy łączyć tabele łańcuchowo, powtarzając klauzulę JOIN:
SELECT o.id, u.email, p.name AS product
FROM orders o
JOIN users u ON u.id = o.user_id
JOIN products p ON p.id = o.product_id;USING (column)
Gdy kolumna używana do złączenia ma tę samą nazwę w obu tabelach, można użyć USING — eliminuje ono duplikat kolumny w wyniku:
SELECT o.id, total, email
FROM orders
JOIN users USING (user_id); -- requires both tables to have user_idNATURAL JOIN
Łączy tabele według każdej kolumny o tej samej nazwie — należy zachować ostrożność, ponieważ rozwiązanie staje się kruche po dodaniu kolumn.
-- Avoid in production code:
SELECT * FROM orders NATURAL JOIN users;Warunki JOIN a WHERE
W przypadku INNER JOIN warunek w ON jest logicznie równoważny warunkowi w WHERE. Przyjęta konwencja: filtry definiujące relację JOIN umieszcza się w ON, a filtry wierszy w WHERE.
SELECT * FROM orders o
JOIN users u ON u.id = o.user_id -- join condition
WHERE u.country = 'US'; -- row filterMnożenie wyników
Jeśli wiersz w A pasuje do trzech wierszy w B, wynik zawiera trzy wiersze. To normalne, ale może zaskoczyć, gdy się o tym zapomni. W przypadku agregacji należy ostrożnie używać COUNT(*).
Zapowiedź self-join
Można połączyć tabelę z samą sobą, nadając każdej jej instancji inny alias:
SELECT e.full_name AS employee, m.full_name AS manager
FROM employees e
JOIN employees m ON m.id = e.manager_id;Wydajność INNER JOIN
Wewnętrzne złączenia są szybkie, gdy:
- kolumna używana do złączenia jest zindeksowana (szczególnie po stronie klucza obcego)
- jedna tabela jest mała (złączenie haszujące) lub obie są posortowane (złączenie sortująco-scalające)
- filtrowanie odbywa się wcześnie, aby liczba wierszy pośrednich pozostała mała
Podsumowanie
INNER JOIN zachowuje tylko pasujące pary.
- JOIN oznacza domyślnie INNER JOIN
- ON wyraża warunek złączenia
- Aliasy skracają zapytania
- Kolumny używane do złączeń powinny być zindeksowane
Szybkie sprawdzenie
Co zwróci orders INNER JOIN users ON users.id = orders.user_id, gdy zamówienie nie ma odpowiadającego użytkownika (jest osierocone)?
Często zadawane pytania
Czy lekcja „Mechanika INNER JOIN” jest bezpłatna?
Tak — pełny tekst „Mechanika INNER JOIN” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu SQL Academy, przejdź na CoddyKit PRO. Kurs SQL Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Mechanika INNER JOIN”?
Poznaj INNER JOIN jako filtrowany iloczyn kartezjański, pisz warunki złączeń i analizuj wynik EXPLAIN dla złączeń. Ćwiczysz SQL Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć SQL Academy?
Nie wymagamy żadnego doświadczenia. SQL Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Mechanika INNER JOIN”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji SQL Academy?
Tak. Każda lekcja SQL Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Dlaczego używamy złączeń (powtórka z modelu relacyjnego)
- Mechanika INNER JOIN
- LEFT/RIGHT JOIN i złączenia OUTER
- Złączenia tabeli z samą sobą i aliasy