SQL JOIN y diferentes tipos de JOINs
¿Qué es un JOIN
SQL y cuáles son los diferentes tipos?
236
3
¿Qué es un JOIN
SQL y cuáles son los diferentes tipos?
Una ilustración de W3schools:
INNER JOIN - Sólo los registros que cumplen la condición en ambas tablas]1
LEFT JOIN - Todos los registros de la tabla 1 junto con los registros que cumplen la condición en la tabla 2]2
RIGHT JOIN - Todos los registros de la tabla 2 junto con los registros de la tabla 1 que cumplen la condición]3
FULL OUTER JOIN - Combinación de las uniones externas izquierda y derecha que coinciden con la cláusula ON pero conservando ambas tablas]4
¿Qué es el
SQL JOIN
?El
SQL JOIN
es un método para recuperar datos de dos o más tablas de la base de datos.¿Cuáles son los diferentes
SQL JOIN
s?Hay un total de cinco
JOIN
s. Son los siguientes:JOIN o INNER JOIN :
En este tipo de
JOIN
, obtenemos todos los registros que coinciden con la condición en ambas tablas, y los registros de ambas tablas que no coinciden no se reportan.En otras palabras, el
INNER JOIN
se basa en el único hecho de que: SÓLO los registros que coinciden en AMBAS tablas DEBEN ser listados.Tenga en cuenta que un
JOIN
sin ninguna otra palabra claveJOIN
(comoINNER
,OUTER
,LEFT
, etc) es unINNER JOIN
. En otras palabras,JOIN
es un azúcar sintáctico para elINNER JOIN
(véase: https://stackoverflow.com/questions/565620/difference-between-join-and-inner-join).OUTER JOIN :
El
OUTER JOIN
recuperaO bien las filas coincidentes de una tabla y todas las filas de la otra tabla O bien todas las filas de todas las tablas (no importa si hay o no coincidencia).
Hay tres tipos de Outer Join :
2.1 LEFT OUTER JOIN o LEFT JOIN
Esta unión devuelve todas las filas de la tabla izquierda junto con las filas coincidentes de la tabla tabla derecha. Si no hay columnas que coincidan en la tabla derecha, devuelve valores
NULL
.2.2 RIGHT OUTER JOIN o RIGHT JOIN
Este
JOIN
devuelve todas las filas de la tabla derecha junto con las filas coincidentes de la tabla izquierda. Si no hay columnas que coincidan en la tabla izquierda, devuelve valoresNULL
.2.3 FULL OUTER JOIN o FULL JOIN
Este
JOIN
combina elLEFT OUTER JOIN
y elRIGHT OUTER JOIN
. Devuelve filas de cualquiera de las dos tablas cuando se cumplen las condiciones y devuelve el valorNULL
cuando no hay coincidencias.En otras palabras,
OUTER JOIN
se basa en el hecho de que SÓLO deben aparecer las entradas que coincidan en UNA de las tablas (DERECHA o IZQUIERDA) o en AMBAS tablas (COMPLETA).JOIN NATURAL :
Se basa en las dos condiciones :
JOIN
se realiza en todas las columnas con el mismo nombre para la igualdad.Esto parece ser más de naturaleza teórica y como resultado (probablemente) la mayoría de los DBMS ni siquiera se molestan en soportarlo.
CROSS JOIN :
Es el producto cartesiano de las dos tablas implicadas. El resultado de un
CROSS JOIN
no tendrá sentido en la mayoría de las situaciones. Además, no lo necesitaremos en absoluto (o necesita lo mínimo, para ser precisos).SELF JOIN :
No es una forma diferente de
JOIN
, sino que es unJOIN
(INNER
,OUTER
, etc) de una tabla a sí misma.JOINs basados en Operadores
Dependiendo del operador utilizado para una cláusula
JOIN
, puede haber dos tipos deJOIN
. Estos sonEqui JOIN
Theta JOIN
Equi JOIN :
Para cualquier tipo de
JOIN
(INNER
,OUTER
, etc), si utilizamos SOLO el operador de igualdad (=), entonces decimos que elJOIN
es unEQUI JOIN
.Theta JOIN :
Es lo mismo que
EQUI JOIN
pero permite todos los demás operadores como >, = etc.Muchos consideran que tanto el
EQUI JOIN
como elJOIN
de Theta son similares a losINNER
,OUTER
, etc.Definición:
Los JOINS son una forma de consultar los datos que se combinan juntos de varias tablas simultáneamente.
Tipos de JOINS:
Con respecto a los RDBMS hay 5 tipos de joins:
Equi-Join: Combina los registros comunes de dos tablas basándose en la condición de igualdad. Técnicamente, la unión se realiza utilizando el operador de igualdad (=) para comparar los valores de la clave primaria de una tabla y los valores de la clave externa de otra tabla, por lo que el conjunto de resultados incluye registros comunes (coincidentes) de ambas tablas. Para la implementación vea INNER-JOIN.
Natural-Join: Es una versión mejorada de Equi-Join, en la que la operación SELECT omite la columna duplicada. Para la implementación ver INNER-JOIN
Non-Equi-Join: Es la versión inversa de Equi-join donde la condición de unión se utiliza en lugar del operador igual (=), por ejemplo, !=, =, >, < o BETWEEN etc. Para la implementación, véase INNER-JOIN.
Auto-Join:: Un comportamiento personalizado de join en el que una tabla se combina consigo misma; Normalmente se necesita para consultar tablas autorreferenciadas (o entidad de relación unitaria). Para la implementación ver INNER-JOINs.
Producto cartesiano:** Combina de forma cruzada todos los registros de ambas tablas sin ninguna condición. Técnicamente, devuelve el conjunto de resultados de una consulta sin cláusula WHERE.
Según la preocupación y el avance de SQL, hay 3 tipos de uniones y todas las uniones RDBMS se pueden lograr utilizando estos tipos de uniones.
**Combina (o combina) las filas coincidentes de dos tablas y las filas no coincidentes con valores NULL. Sin embargo, puede personalizar la selección de las filas no coincidentes, por ejemplo, seleccionando la fila no coincidente de la primera tabla o de la segunda tabla por subtipos: LEFT OUTER JOIN y RIGHT OUTER JOIN.
2.1. 2.1. JUNIÓN EXTERIOR IZQUIERDA (también conocida como LEFT-JOIN): Devuelve las filas coincidentes de dos tablas y las no coincidentes de la tabla IZQUIERDA (es decir, la primera tabla) solamente.
2.2. JOIN EXTERIOR DERECHO (también conocido como RIGHT-JOIN): Devuelve las filas coincidentes de dos tablas y las no coincidentes de la tabla DERECHA solamente.
2.3. 2.3. FULL OUTER JOIN (también conocido como OUTER JOIN): Devuelve las filas coincidentes y no coincidentes de ambas tablas.
[introduzca aquí la descripción de la imagen][1] Nota: La autounión puede realizarse mediante INNER-JOIN, OUTER-JOIN y CROSS-JOIN según los requisitos, pero la tabla debe unirse a sí misma.
Para más información:][2]
Ejemplos:
1.1: INNER-JOIN: Implementación de Equi-join
1.2: INNER-JOIN: Implementación de Natural-JOIN
1.3: INNER-JOIN con implementación NON-Equi-join