Łączenie tabel pozwala na złączenie danych z różnych tabel na podstawie relacji między nimi. W SQL dostępnych jest kilka rodzajów złączeń (JOIN).
INNER JOIN
Zwraca rekordy, które mają dopasowanie w obu tabelach. Wiersze bez dopasowania są pomijane.
Skladnia:
SELECT kolumny FROM tabela1 INNER JOIN tabela2 ON warunek;
Przykład: Tabela Klienci
:
ID | Imię |
---|---|
1 | Anna |
2 | Jan |
Tabela Zamowienia
:
ID | Klient_ID | Data |
---|---|---|
1 | 1 | 2025-01-01 |
Zapytanie:
SELECT Klienci.Imię, Zamowienia.Data
FROM Klienci
INNER JOIN Zamowienia ON Klienci.ID = Zamowienia.Klient_ID;
Efekt:
Imię | Data |
---|---|
Anna | 2025-01-01 |
LEFT JOIN
Zwraca wszystkie rekordy z lewej tabeli oraz pasujące rekordy z prawej tabeli. Brakujące dopasowania są uzupełniane wartościami NULL.
Skladnia:
SELECT kolumny FROM tabela1 LEFT JOIN tabela2 ON warunek;
Przykład: Wyświetl wszystkich klientów, nawet jeśli nie złożyli zamówienia:
SELECT Klienci.Imię, Zamowienia.Data
FROM Klienci
LEFT JOIN Zamowienia ON Klienci.ID = Zamowienia.Klient_ID;
RIGHT JOIN
Działa odwrotnie do LEFT JOIN – zwraca wszystkie rekordy z prawej tabeli oraz pasujące rekordy z lewej tabeli.
FULL OUTER JOIN
Zwraca wszystkie rekordy z obu tabel, wypełniając NULL w miejscach, gdzie brakuje dopasowań.
CROSS JOIN
Zwraca iloczyn kartezjański, czyli każdy rekord z jednej tabeli połączony z każdym rekordem drugiej tabeli. Bardzo rzadko używane.
SELECT * FROM tabela1 CROSS JOIN tabela2;