SQL har følgende typer joins, som alle kommer direkte fra mængdeteori:
-
Indre sammenføjning.
From A inner join B
er ækvivalent med A ∩ B, hvilket giver det sæt af elementer, der er fælles for begge sæt. -
Venstre ydre samling.
From A left outer join B
er ækvivalent med (A − B) ∪ (A ∩ B). Hvert A vises mindst én gang; hvis der er flere matchende B'er, vil A'et blive gentaget én gang pr. matchende B. -
Højre ydre samling.
From A right outer join B
er ækvivalent med (A ∩ B) ∪ (B − A). Det er identisk med en venstre join med bordene, der handler med pladser. Hver B vises mindst én gang; hvis der er flere matchende As, vil hver B blive gentaget én gang pr. matchende B. -
Fuld ydre forbindelse.
From A full outer join B
er ækvivalent med (A − B) ∪ (A ∩ B) ∪ (B − A). Hver A og hver B vises mindst én gang. Hvis et A matcher flere B'er, vil det blive gentaget én gang pr. match; hvis et B matcher flere Som det vil blive gentaget én gang pr. match. -
Cross Join.
From A cross join B
er producerer det kartesiske produkt A × B. Hver A gentages én gang for hver B. Hvis A har 100 rækker og B har 100 rækker, vil resultatsættet bestå af 10.000 rækker.
Det skal bemærkes, at den teoretiske udførelse af en select
forespørgslen består af følgende trin udført i denne rækkefølge:
-
Beregn det fulde kartesiske produkt af kildesættet(erne) i
from
klausul for at prime kandidatresultatsættet. -
Anvend joinkriterierne i
from
klausul og reducere kandidatresultatsættet. -
Anvend kriterierne i
where clause
for yderligere at reducere kandidatresultatsættet. -
opdele kandidatresultatsættet i grupper baseret på kriterierne i
group by
klausul. -
Fjern fra kandidatresultatsættet andre kolonner end dem, der er involveret i
group by
klausul eller involveret i evalueringen af en samlet funktion. -
Beregn værdien af sådanne samlede funktioner for hver gruppe i kandidatresultatsættet.
-
Skjul hver gruppe i kandidatresultatsættet i en enkelt række bestående af grupperingskolonnerne og de beregnede værdier for hver aggregeret funktion. Kandidatresultatsættet består nu af én række for hver gruppe, med alle kolonner bortset fra
group by
kolonner eller beregningsværdierne for aggregerede funktioner for gruppen elimineres. -
Anvend kriterierne i
having
klausul for at reducere kandidatresultatsættet og producere det endelige resultatsæt. -
Bestil det endelige resultat efter kriterierne i
order by
klausul og udsende den.
Der er flere trin, der har at gøre med ting som compute
og compute by
klausuler, men dette er tilstrækkeligt til at få den teoretiske opfattelse af, hvordan det fungerer.
Det skal også bemærkes, at intet andet end den mest naive implementering faktisk ville evaluere en select
erklæring på denne måde, men de producerede resultater skal være de samme, som hvis ovenstående trin blev udført fuldt ud.