SQL má následující typy spojení, z nichž všechny pocházejí přímo z teorie množin:
-
Vnitřní spojení.
From A inner join Bje ekvivalentem A ∩ B, poskytuje množinu prvků společných oběma množinám. -
Levý vnější spoj.
From A left outer join Bje ekvivalent (A − B) ∪ (A ∩ B). Každé A se objeví alespoň jednou; pokud existuje více odpovídajících B, bude se A opakovat jednou pro odpovídající B. -
Pravý vnější spoj.
From A right outer join Bje ekvivalentem (A ∩ B) ∪ (B − A). Je identický s levým spojením s obchodními místy stolů. Každé B se objeví alespoň jednou; pokud existuje více odpovídajících As, každé B se bude opakovat jednou pro odpovídající B. -
Úplné vnější spojení.
From A full outer join Bje ekvivalentem (A − B) ∪ (A ∩ B) ∪ (B − A). Každé A a každé B se objeví alespoň jednou. Pokud se A shoduje s více B, bude se opakovat jednou za shodu; pokud B odpovídá více As, bude se opakovat jednou za shodu. -
Křížové připojení.
From A cross join Bvytváří karteziánský součin A × B. Každé A se bude opakovat jednou pro každé B. Pokud A má 100 řádků a B má 100 řádků, bude sada výsledků obsahovat 10 000 řádků.
Je třeba poznamenat, že teoretické provedení select dotaz se skládá z následujících kroků provedených v tomto pořadí:
-
Vypočítejte úplný kartézský součin zdrojové sady (sad) v
fromklauzule, která připraví sadu výsledků kandidáta. -
Použijte kritéria spojení v
fromklauzule a redukovat kandidátní sadu výsledků. -
Použijte kritéria v
where clausek dalšímu snížení sady výsledků kandidátů. -
rozdělte kandidátní sadu výsledků do skupin na základě kritérií v
group bydoložka. -
Odstraňte ze sady výsledků kandidátů všechny sloupce kromě těch, které jsou součástí
group byklauzule nebo se účastní hodnocení agregační funkce. -
Vypočítejte hodnotu všech takových agregačních funkcí pro každou skupinu v sadě výsledků kandidátů.
-
Sbalte každou skupinu v kandidátské sadě výsledků do jednoho řádku sestávajícího ze sloupců seskupení a vypočtených hodnot pro každou agregační funkci. Kandidátní sada výsledků se nyní skládá z jednoho řádku pro každou skupinu se všemi sloupci kromě
group bysloupce nebo výpočetní hodnoty agregačních funkcí pro skupinu jsou odstraněny. -
Použijte kritéria v
havingklauzule ke zmenšení sady výsledků kandidátů a vytvoření konečné sady výsledků. -
Seřaďte konečný výsledek nastavený podle kritérií v
order byklauzule a vydat ji.
Existuje více kroků, které souvisí s věcmi jako compute a compute by klauzule, ale to je dostatečné k získání teoretické představy o tom, jak to funguje.
Je třeba také poznamenat, že nic jiného než ta nejnaivnější implementace by ve skutečnosti nevyhodnotila select tímto způsobem, ale získané výsledky musí být stejné, jako kdyby byly výše uvedené kroky provedeny v plném rozsahu.