0Pricing
SQL Academy · Lekcja

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_id

NATURAL 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 filter

Mnoż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

  1. Dlaczego używamy złączeń (powtórka z modelu relacyjnego)
  2. Mechanika INNER JOIN
  3. LEFT/RIGHT JOIN i złączenia OUTER
  4. Złączenia tabeli z samą sobą i aliasy
← Powrót do SQL Academy