SQL propose les types de jointures suivants, qui proviennent tous directement de la théorie des ensembles :
-
Jointure interne.
From A inner join B
est l'équivalent de A ∩ B, fournissant l'ensemble des éléments communs aux deux ensembles. -
Jointure externe gauche.
From A left outer join B
est l'équivalent de (A − B) ∪ (A ∩ B). Chaque A apparaîtra au moins une fois ; s'il y a plusieurs B correspondants, le A sera répété une fois par B correspondant. -
Jointure externe droite.
From A right outer join B
est l'équivalent de (A ∩ B) ∪ (B − A). Elle est identique à une jointure gauche avec les tables d'échange de places. Chaque B apparaîtra au moins une fois ; s'il y a plusieurs As correspondants, chaque B sera répété une fois par B correspondant. -
Jointure externe complète.
From A full outer join B
est l'équivalent de (A − B) ∪ (A ∩ B) ∪ (B − A). Chaque A et chaque B apparaîtront au moins une fois. Si un A correspond à plusieurs B, il sera répété une fois par match ; si un B correspond à plusieurs A, il sera répété une fois par match. -
Jointure croisée.
From A cross join B
est produit le produit cartésien A × B. Chaque A sera répété une fois pour chaque B. Si A a 100 lignes et B a 100 lignes, le jeu de résultats sera composé de 10 000 lignes.
A noter que l'exécution théorique d'un select
requête se compose des étapes suivantes exécutées dans cet ordre :
-
Calculer le produit cartésien complet du ou des ensembles sources dans le
from
clause pour amorcer le jeu de résultats candidat. -
Appliquer les critères de jointure dans le
from
clause et réduire l'ensemble de résultats candidats. -
Appliquer les critères dans la
where clause
pour réduire davantage l'ensemble de résultats candidats. -
partitionnez l'ensemble de résultats candidats en groupes en fonction des critères du
group by
clause. -
Supprimez du jeu de résultats candidat toutes les colonnes autres que celles impliquées dans le
group by
clause ou impliqué dans l'évaluation d'une fonction d'agrégation. -
Calculez la valeur de ces fonctions d'agrégation pour chaque groupe dans l'ensemble de résultats candidats.
-
Réduisez chaque groupe du jeu de résultats candidat en une seule ligne composée des colonnes de regroupement et des valeurs calculées pour chaque fonction d'agrégation. L'ensemble de résultats candidats se compose désormais d'une ligne pour chaque groupe, avec toutes les colonnes autres que
group by
colonnes ou les valeurs de calcul des fonctions d'agrégation pour le groupe sont éliminées. -
Appliquer les critères dans le
having
clause pour réduire le jeu de résultats candidat et produire le jeu de résultats final. -
Ordonner le résultat final défini par les critères dans
order by
clause et émettez-la.
Il y a plus d'étapes, ayant à voir avec des choses comme compute
et compute by
clauses, mais cela est suffisant pour avoir la notion théorique de son fonctionnement.
Il convient également de noter que seule l'implémentation la plus naïve évaluerait réellement un select
déclaration de cette façon, mais les résultats produits doivent être les mêmes que si les étapes ci-dessus avaient été effectuées dans leur intégralité.