SQL har följande typer av joins, som alla kommer direkt från mängdteorin:
-
Inre sammanfogning.
From A inner join Bär ekvivalenten med A ∩ B, vilket ger den uppsättning element som är gemensamma för båda uppsättningarna. -
Vänster yttre sammanfogning.
From A left outer join Bär ekvivalenten med (A − B) ∪ (A ∩ B). Varje A kommer att visas minst en gång; om det finns flera matchande B, kommer A:et att upprepas en gång per matchande B. -
Höger yttre sammanfogning.
From A right outer join Bär ekvivalenten med (A ∩ B) ∪ (B − A). Det är identiskt med en vänsterkoppling med bordshandelsplatserna. Varje B kommer att visas minst en gång; om det finns flera matchande As, kommer varje B att upprepas en gång per matchande B. -
Fullständig yttre sammanfogning.
From A full outer join Bär ekvivalenten med (A − B) ∪ (A ∩ B) ∪ (B − A). Varje A och varje B kommer att visas minst en gång. Om ett A matchar flera B kommer det att upprepas en gång per match; om ett B matchar flera As kommer det att upprepas en gång per match. -
Cross Join.
From A cross join Bär producerar den kartesiska produkten A × B. Varje A kommer att upprepas en gång för varje B. Om A har 100 rader och B har 100 rader kommer resultatuppsättningen att bestå av 10 000 rader.
Det bör noteras att det teoretiska utförandet av en select fråga består av följande steg utförda i denna ordning:
-
Beräkna hela kartesiska produkten av källuppsättningen/källuppsättningarna i
fromklausul för att prima kandidatresultatuppsättningen. -
Tillämpa kopplingskriterierna i
fromklausul och minska kandidatresultatuppsättningen. -
Tillämpa kriterierna i
where clauseför att ytterligare minska kandidatresultatet. -
partitionera kandidatresultatuppsättningen i grupper baserat på kriterierna i
group byklausul. -
Ta bort från kandidatresultatuppsättningen andra kolumner än de som är involverade i
group byklausul eller involverad i utvärderingen av en aggregerad funktion. -
Beräkna värdet av sådana aggregerade funktioner för varje grupp i kandidatresultatuppsättningen.
-
Komprimera varje grupp i kandidatresultatuppsättningen till en enda rad som består av grupperingskolumnerna och de beräknade värdena för varje aggregerad funktion. Kandidatresultatuppsättningen består nu av en rad för varje grupp, med alla kolumner utom
group bykolumner eller beräkningsvärdena för aggregerade funktioner för gruppen elimineras. -
Tillämpa kriterierna i
havingklausul för att minska kandidatresultatuppsättningen och producera den slutliga resultatuppsättningen. -
Beställ det slutliga resultatet enligt kriterierna i
order byklausul och avge den.
Det finns fler steg som har att göra med saker som compute och compute by klausuler, men detta är tillräckligt för att få en teoretisk uppfattning om hur det fungerar.
Det bör också noteras att inget annat än den mest naiva implementeringen faktiskt skulle utvärdera en select på detta sätt, men resultatet måste vara detsamma som om ovanstående steg utfördes i sin helhet.