Tags: MySQL

MySQL: Jaka jest różnica między INNER JOIN, LEFT JOIN, RIGHT JOIN i FULL JOIN?

W języku zapytań SQL, takim jak MySQL, różne typy operacji łączenia (join) pozwalają na łączenie danych z różnych tabel. Oto podstawowe różnice między najpopularniejszymi rodzajami łączenia: INNER JOIN, LEFT JOIN (także znany jako LEFT OUTER JOIN), RIGHT JOIN (także znany jako RIGHT OUTER JOIN) i FULL JOIN (także znany jako FULL OUTER JOIN):

INNER JOIN

1. - Zwraca tylko te wiersze, które mają odpowiadające pary w obu tabelach.
- Jeśli nie ma pasujących par w drugiej tabeli, wiersze z pierwszej tabeli nie zostaną uwzględnione w wynikach.

Przykład:
SELECT customers.name, orders.order_id
FROM customers
INNER JOIN orders ON customers.customer_id = orders.customer_id;

LEFT JOIN (LEFT OUTER JOIN)

2. - Zwraca wszystkie wiersze z lewej tabeli (pierwszej tabeli w zapytaniu), a także pasujące pary z prawej tabeli (drugiej tabeli w zapytaniu).
- Jeśli nie ma pasujących par w drugiej tabeli, wiersze z lewej tabeli zostaną uwzględnione, a wartości z prawej tabeli będą NULL.

Przykład:
SELECT customers.name, orders.order_id
FROM customers
LEFT JOIN orders ON customers.customer_id = orders.customer_id;

RIGHT JOIN (RIGHT OUTER JOIN)

3. - Jest przeciwieństwem LEFT JOIN.
- Zwraca wszystkie wiersze z prawej tabeli (drugiej tabeli w zapytaniu), a także pasujące pary z lewej tabeli (pierwszej tabeli w zapytaniu).
- Jeśli nie ma pasujących par w pierwszej tabeli, wiersze z prawej tabeli zostaną uwzględnione, a wartości z lewej tabeli będą NULL.

Przykład:
SELECT customers.name, orders.order_id
FROM customers
RIGHT JOIN orders ON customers.customer_id = orders.customer_id;

FULL JOIN (FULL OUTER JOIN)

4. - Zwraca wszystkie wiersze z obu tabel.
- Jeśli nie ma pasujących par w jednej z tabel, odpowiednie wartości w wyniku będą NULL.

Przykład:
SELECT customers.name, orders.order_id
FROM customers
FULL JOIN orders ON customers.customer_id = orders.customer_id;

Warto zaznaczyć, że dostępność różnych rodzajów łączenia może się różnić w zależności od systemu zarządzania bazą danych (DBMS). Przy tworzeniu zapytań SQL z użyciem operacji łączenia, ważne jest dokładne zrozumienie struktury danych w tabelach i celu, jaki ma być osiągnięty, aby wybrać odpowiedni rodzaj łączenia.