Cartesisch product
Het cartesisch product is een koppeling van alle rijen uit de ene tabel aan alle rijen uit de andere tabel.
Cartesisch product wordt ook wel cross join genoemd.

Bijvoorbeeld:
select * from student
, klas;
Wanneer een join conditie ontbreekt verkrijg je altijd het cartesisch product
De relatie tussen tabellen is terug te vinden in de tabellen
Equi join
We kunnen tabellen aan elkaar koppelen op basis van een foreign key die verwijst naar een primary key
Wanneer we de foreign key gelijkstellen aan de primary key koppelen we op basis van gelijkheid (equi join)
Dit noemen we een equi join: de waardes zijn gelijk
select s.student_nr
, s.voornaam
, s.tussenvoegsels
, s.achternaam
, s.klas_id
, k.klas_id
, k.klas_naam from student s
, klas k
where s.klas_id = k.klas_id
Van Cartesisch product naar join
Wanneer het cartesisch product als uitgangspunt wordt genomen zien we combinaties van alle rijen
Een student koppelen we aan alle klassen
Door de conditie er op te leggen dat klas_id = klas_id filteren we op rijen waarbij de fk = pk

ISO syntax
ISO: Internationale Organisatie voor Standaardisatie
Op internationaal niveau is een syntax afgesproken voor het schrijven van query’s zodat alle relationele databases dezelfde syntax begrijpen
Hierdoor luisteren alle databases naar hetzelfde SQL statement
Equi join
De equi join kunnen we herschrijven:
- natural join
- join using
- join on
Natural join
Een natural join zal op basis van gelijke kolomnamen tabellen koppelen
select voornaam
, achternaam
, klas_naam
from student
natural join klasJoin using
Als in een tabel meerdere kolommen voor komen met dezelfde naam kun je met join using aangeven welke kolom je daar uit wilt gebruiken
select *
from student
join docent using(slb_id)Join on
Om tabellen te koppelen die geen overeenkomstige namen hebben gebruik je join on
select *
from student s
join docent d
on(s.slb_id = d.slb_id)Outer joins
Bij sommige rijen zul je geen match hebben met een andere rij
Bijvoorbeeld: Er zijn geen studenten voor klas Bin-2a
Als je zo’n rij toch wilt zien gebruik je een outer join
ISO syntax
select voornaam
, klas_naam
from student
right outer join klas
using (klas_id)