Podstawy baz danych - Łączenia tabel

1. Do pobierania danych z wielu tabel używamy złączeń i podzapytań. 

2. Podział połączeń: 
  • ze względu na konstrukcje łączenia (proste, złożone)
  • ze względu na postać warunku połączenia (równościowe, nierównościowe). Równościowe możemy podzielić na naturalne i zwykłe.
  • ze względu na sposób dopasowania rekordów łączonych relacji (wewnętrzne, zewnętrzne)
  • ze względu na łączone relacje (zwykłe, zwrotne)
3. Złączenia proste pozwalają na łączenie wierszy, które dla różnych tabel mają takie same wartości wyspecjalizowanych kolumn 

np.
SELECT locations.location_id, city, department_name FROM locations, departments WHERE locations.location_id=departments.location_id;

Wzór polecenia SQL:
SELECT tabela1.atrybut11, tabela2.atrybut22 FROM tabela1, tabela2 WHERE tabela1.id_tabela1= tabela2.id_tabela1;

4. Łączenia złożone pozwalają na określanie dodatkowych kryteriów klauzuli WHERE.

np.
SELECT locations.location_id, city, department_name FROM locations, departments WHERE locations.location_id=departments.location_id AND country_id!='US';

5. Aliasy tabel służą do zmniejszenia rozmiarów kodu SQL w poleceniach SELECT. 

np.
SELECT l.location_id, city, department_name FROM locations l, departments d WHERE l.location_id=d.location_id AND country_id!='US';

Aliasy w tym przypadku to l i d. Aliasy deklaruje się między FROM i WHERE.

6. Łączenia nierównościowe to takie, które zawierają coś innego niż znak równości (np. znak większości, mniejszości, a nawet BETWEEN).

np.
SELECT e.last_name, e.salary, j.job_id, j.min_salary, j.max_salary FROM employees e, jobs j WHERE e.salary BETWEEN j.min_salary AND j.max_salary ORDER BY e.last_name;

7. Łączenia zewnętrzne to takie, które pozwala na wyświetlanie wierszy, które nie spełniają warunku łącznia. Operatorem łączenia zewnętrznego jest znak dodawania (+) i umieszcza się go po stronie warunku łączącego, po której brakuje informacji. Nie może być ono użyte z innym warunkiem za pomocą operatorów OR lub IN.
  • FULL OUTER JOIN
  • LEFT OUTER JOIN
  • RIGHT OUTER JOIN
np.
SELECT z.id_zesp, z.nazwa, p.nazwisko FROM zespoly z, pracownicy p WHERE p.id_zesp (+) = z.id_zesp;

Lub:

SELECT z.id_zesp, z.nazwa, p.nazwisko FROM zespoly z LEFT OUTER JOIN pracownicy p ON p.id_zesp= z.id_zesp;

8. Łączenie zwrotne to takie, przy którym łączymy się z tą samą tabelą. Obowiązkowe jest użycie aliasów.

np.
SELECT p.nazwisko, s.nazwisko FROM pracownicy p, pracownicy s WHERE p.id_szefa = s.id_prac;

9. Łączenie naturalne to takie, które bazuje na wszystkich kolumnach z dwóch tabel, które mają taką samą nazwę i typ danych. Łączenie wykonywane jest od lewej do prawej tabeli więc kolejność tabel jest istotna.

np.
SELECT location_id, city, department_name FROM locations NATURAL JOIN departments;