Het generieke select statement
select <kolomnamen|*>
from <tabel>
where <conditie>
order by <kolomnaam>Joins
Cartesisch product
Het cartesisch product is een koppeling van alle rijen uit een tabel aan alle rijen uit de andere tabel
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
select s.student_nr
, s.voornaam
, s.tussenvoegsels
, s.achternaam
, k.klas_id
, k.klas_naam
from student s , klas kVan cartesisch product naar join
Wanneer het cartesisch product als uitgangspunt wordt genomen zien we combinaties van alle rijen
- Bijv. 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
Equi join
- We kunnen tabellen aan elkaar joinen op basis van een foreign key die verwijst naar een Primary key
- Dit noemen we een equi join:
- de waardes zijn gelijk
- Wanneer we de foreign key gelijkstellen aan de primary key koppelen we op basis van gelijkheid (equi join)


select s.student_nr
, s.voornaam
, s.tussenvoegsels
, s.achternaam
, s.klas_id
, k.klas_id
, k.klas_naam
from student s
, klas k maar ook waar die moet joinen
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_idEqui Join types
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
Join 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
select *
from student s
join docent d
on(s.slb_id = d.slb_id)Outer Join
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
select voornaam, klas_naam
from student
right outer join klas
on (s.klas_id = k.klas_idTypes outer join
de standaard from leest van links naar rechts standaard is de overlap (inner) bij outer gaan
In de ISO syntax hebben we
- Left outer join
- Right outer join
- Full outer join (niet in MySQL!)
ISO SQL 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
ISO Standaard
International Standards Organisation
- Wereldwijde standaard afspraak voor de schrijfwijze (syntax) van SQL statements
- Hierdoor luisteren alle databases naar hetzelfde SQL statement