SQL tiene los siguientes tipos de uniones, todas las cuales provienen directamente de la teoría de conjuntos:
-
Unión interna.
From A inner join Bes el equivalente de A ∩ B, proporcionando el conjunto de elementos comunes a ambos conjuntos. -
Unión externa izquierda.
From A left outer join Bes el equivalente de (A − B) ∪ (A ∩ B). Cada A aparecerá al menos una vez; si hay varias B coincidentes, la A se repetirá una vez por cada B coincidente. -
Unión externa derecha.
From A right outer join Bes el equivalente de (A ∩ B) ∪ (B − A). Es idéntico a una combinación izquierda con las mesas intercambiando lugares. Cada B aparecerá al menos una vez; si hay múltiples As coincidentes, cada B se repetirá una vez por cada B coincidente. -
Unión externa completa.
From A full outer join Bes el equivalente de (A − B) ∪ (A ∩ B) ∪ (B − A). Cada A y cada B aparecerán al menos una vez. Si una A coincide con varias B, se repetirá una vez por coincidencia; si una B coincide con varias As, se repetirá una vez por coincidencia. -
Unión cruzada.
From A cross join Bse produce el producto cartesiano A × B. Cada A se repetirá una vez por cada B. Si A tiene 100 filas y B tiene 100 filas, el conjunto de resultados constará de 10 000 filas.
Cabe señalar que la ejecución teórica de un select la consulta consta de los siguientes pasos realizados en este orden:
-
Calcule el producto cartesiano completo de los conjuntos fuente en el
fromcláusula para preparar el conjunto de resultados candidato. -
Aplicar los criterios de unión en el
fromy reducir el conjunto de resultados candidatos. -
Aplicar los criterios en la cláusula
where clausepara reducir aún más el conjunto de resultados candidatos. -
divida el conjunto de resultados del candidato en grupos según los criterios de
group bycláusula. -
Eliminar del conjunto de resultados de candidatos cualquier columna que no sea la que está involucrada en el
group bycláusula o involucrada en la evaluación de una función agregada. -
Calcule el valor de cualquiera de estas funciones agregadas para cada grupo en el conjunto de resultados candidato.
-
Contraer cada grupo en el conjunto de resultados candidato en una sola fila que consta de las columnas de agrupación y los valores calculados para cada función agregada. El conjunto de resultados de candidatos ahora consta de una fila para cada grupo, con todas las columnas excepto
group byse eliminan las columnas o los valores de cálculo de las funciones agregadas para el grupo. -
Aplicar los criterios en el
havingcláusula para reducir el conjunto de resultados candidatos y producir el conjunto de resultados final. -
Ordene el resultado final establecido por los criterios en
order bycláusula y emitirla.
Hay más pasos que tienen que ver con cosas como compute y compute by cláusulas, pero esto es suficiente para obtener la noción teórica de cómo funciona.
También se debe tener en cuenta que solo la implementación más ingenua evaluaría realmente un select declaración de esta manera, pero los resultados producidos deben ser los mismos que si los pasos anteriores se realizaran en su totalidad.