Język SQL: łączenie tabel

article-thumbnail

Łączenie tabel

Łączenie tabel umożliwia odczytywanie danych z wielu tabel jednocześnie. Tabele zostają połączone pomiędzy kluczem podstawowym jednej tabeli, a kluczem obcym drugiej (klucz obcy to kolumna, która stanowi klucz podstawowy w innej tabeli). Połączenia tabel dzielą się na wewnętrzne i zewnętrzne.

Połączenia wewnętrzne są realizowane przy pomocy instrukcji INNER JOIN, która wybiera rekordy posiadające takie same wartości w obu tabelach. Jej składnia wygląda następująco:

tabela1 INNER JOIN  tabela2
ONtabela1.kolumna1=tabela2.kolumna2

Przykładowo, wypisanie idZamowienia z tabeli zamowienia i nazwa_klienta z tabeli klienci:

SELECT zamowienia.idZamowienia, klienci.nazwa_klienta
FROM zamowienia
INNER JOIN klienci ON zamowienia.idKlienta = klienci.IdKlienta;

Połączenia zewnętrzne definiuje się za pomocą poleceń:

LEFT OUTER JOIN – zwraca wszystkie wiersze z pierwszej tabeli i pasujące wierszej z drugiej
RIGHT OUTER JOIN – zwraca wszystkie wiersze z drugiej tabeli i pasujące wierszej z pierwszej
FULL OUTER JOIN – zwraca wszystkie pasujące i niepasujące wiersze z obu tabel

Przykładowo:Wypisanie nazwy klientów z tabeli klienci i identyfikatorów zamówień z tabeli zamowienia

SELECT zamowienia.IdZamowienia, pracownicy.nazwisko, pracownicy.imie
FROM zamowienia
RIGHT OUTER JOIN  pracownicy ON zamowienia.IdPracownika = pracownicy.IdPracownika
ORDER BY zamowienia.IdZamowienia;

Wypisanie nazwy klientów z tabeli klienci i identyfikatorów zamówień z tabeli zamowienia

SELECT klienci.nazwa_klienta, zamowienia.IdZamowienia
FROM Klienci
FULL OUTER JOIN  zamowienia ON klienci.IdKlienta=zamowienia.IdKlienta
ORDER BY Klienci.nazwa_klienta;

Więzy integralności

Więzy integralności między tabelami tworzy się w celu automatycznego sprawdzania przez serwer poprawności dokonywanych wpisów, co w efekcie niweluje błędy, jakie można popełnić przy wprowadzaniu nowych danych. W tym celu konieczne jest utworzenie klucza obcego za pomocą polecenia:

ALTER TABLE tabela1
ADD FOREIGN KEY (kolumna1) REFERENCES tabela2(kolumna2);

Przykładowo, dodanie klucza obcego na kolumnie IdKlienta w tabeli zamowienia połączonego z kluczem podstawowym – kolumną IdKlienta w tabeli klienci:

ALTER TABLE zamowienia
ADD FOREIGN KEY (IdKlienta) REFERENCES klienci(IdKlienta);

Autor tekstu: Filip Kmiecik