MySQL JOINS Tutorial: INTERIOR, EXTERIOR, IZQUIERDA, DERECHA, CRUZADA

¿Qué son UNIDOS?

Se une para ayudar a recuperar datos de dos o más tablas de bases de datos.

Las tablas se relacionan mutuamente utilizando claves primarias y externas.

Nota: JOIN es el tema más incomprendido entre los usuarios de SQL. En aras de la simplicidad y la facilidad de comprensión, utilizaremos una nueva base de datos para practicar la muestra. Como se muestra abajo

carné de identidad nombre de pila apellido movie_id
1 Adán Herrero 1
2 Ravi Kumar 2
3 Susana Davidson 5
4 Jenny Adrianna 8
6 Sotavento Apestar 10

 

carné de identidad título categoría
1 EL CREDO DEL ASESINO: EMBERS Animaciones
2 Real Steel (2012) Animaciones
3 Alvin y las ardillas Animaciones
4 Las aventuras de Tintin Animaciones
5 Seguro (2012) Acción
6 Casa segura (2012) Acción
7 GIA 18+
8 Fecha límite 2009 18+
9 La imagen sucia 18+
10 Marley y yo Romance

 

Tipos de uniones

 

Cross JOIN

Cross JOIN es la forma más simple de JOINs que combina cada fila de una tabla de base de datos con todas las filas de otra.

En otras palabras, nos da combinaciones de cada fila de la primera tabla con todos los registros en la segunda tabla.

Supongamos que queremos obtener todos los registros de los miembros con todos los registros de las películas, podemos usar el script que se muestra a continuación para obtener los resultados deseados.

MySQL JOINS Tutorial: INNER, OUTER, LEFT, RIGHT, CROSS

Ejecutar el script anterior en MySQL workbench nos da los siguientes resultados.

 

carné de identidad título   carné de identidad nombre de pila apellido movie_id
1 EL CREDO DEL ASESINO: EMBERS Animaciones 1 Adán Herrero 1
1 EL CREDO DEL ASESINO: EMBERS Animaciones 2 Ravi Kumar 2
1 EL CREDO DEL ASESINO: EMBERS Animaciones 3 Susana Davidson 5
1 EL CREDO DEL ASESINO: EMBERS Animaciones 4 Jenny Adrianna 8
1 EL CREDO DEL ASESINO: EMBERS Animaciones 6 Sotavento Apestar 10
2 Real Steel (2012) Animaciones 1 Adán Herrero 1
2 Real Steel (2012) Animaciones 2 Ravi Kumar 2
2 Real Steel (2012) Animaciones 3 Susana Davidson 5
2 Real Steel (2012) Animaciones 4 Jenny Adrianna 8
2 Real Steel (2012) Animaciones 6 Sotavento Apestar 10
3 Alvin y las ardillas Animaciones 1 Adán Herrero 1
3 Alvin y las ardillas Animaciones 2 Ravi Kumar 2
3 Alvin y las ardillas Animaciones 3 Susana Davidson 5
3 Alvin y las ardillas Animaciones 4 Jenny Adrianna 8
3 Alvin y las ardillas Animaciones 6 Sotavento Apestar 10
4 Las aventuras de Tintin Animaciones 1 Adán Herrero 1
4 Las aventuras de Tintin Animaciones 2 Ravi Kumar 2
4 Las aventuras de Tintin Animaciones 3 Susana Davidson 5
4 Las aventuras de Tintin Animaciones 4 Jenny Adrianna 8
4 Las aventuras de Tintin Animaciones 6 Sotavento Apestar 10
5 Seguro (2012) Acción 1 Adán Herrero 1
5 Seguro (2012) Acción 2 Ravi Kumar 2
5 Seguro (2012) Acción 3 Susana Davidson 5
5 Seguro (2012) Acción 4 Jenny Adrianna 8
5 Seguro (2012) Acción 6 Sotavento Apestar 10
6 Casa segura (2012) Acción 1 Adán Herrero 1
6 Casa segura (2012) Acción 2 Ravi Kumar 2
6 Casa segura (2012) Acción 3 Susana Davidson 5
6 Casa segura (2012) Acción 4 Jenny Adrianna 8
6 Casa segura (2012) Acción 6 Sotavento Apestar 10
7 GIA 18+ 1 Adán Herrero 1
7 GIA 18+ 2 Ravi Kumar 2
7 GIA 18+ 3 Susana Davidson 5
7 GIA 18+ 4 Jenny Adrianna 8
7 GIA 18+ 6 Sotavento Apestar 10
8 Fecha límite (2009) 18+ 1 Adán Herrero 1
8 Fecha límite (2009) 18+ 2 Ravi Kumar 2
8 Fecha límite (2009) 18+ 3 Susana Davidson 5
8 Fecha límite (2009) 18+ 4 Jenny Adrianna 8
8 Fecha límite (2009) 18+ 6 Sotavento Apestar 10
9 La imagen sucia 18+ 1 Adán Herrero 1
9 La imagen sucia 18+ 2 Ravi Kumar 2
9 La imagen sucia 18+ 3 Susana Davidson 5
9 La imagen sucia 18+ 4 Jenny Adrianna 8
9 La imagen sucia 18+ 6 Sotavento Apestar 10
10 Marley y yo Romance 1 Adán Herrero 1
10 Marley y yo Romance 2 Ravi Kumar 2
10 Marley y yo Romance 3 Susana Davidson 5
10 Marley y yo Romance 4 Jenny Adrianna 8
10 Marley y yo Romance 6 Sotavento Apestar 10

 

 

UNIR INTERNAMENTE

El JOIN interno se usa para devolver filas de ambas tablas que satisfacen la condición dada.

Supongamos que desea obtener una lista de miembros que han alquilado películas junto con títulos de películas alquiladas por ellos. Simplemente puede usar INNER JOIN para eso, que devuelve filas de ambas tablas que satisfacen las condiciones dadas.

MySQL JOINS Tutorial: INNER, OUTER, LEFT, RIGHT, CROSS

La ejecución de la secuencia de comandos anterior da

nombre de pila apellido título
Adán Herrero EL CREDO DEL ASESINO: EMBERS
Ravi Kumar Real Steel (2012)
Susana Davidson Seguro (2012)
Jenny Adrianna Fecha límite (2009)
Sotavento Apestar Marley y yo

Tenga en cuenta que el script de resultados anterior también se puede escribir de la siguiente manera para lograr los mismos resultados.

JUNTAS externas

MySQL Outer JOINs devuelve todos los registros coincidentes de ambas tablas.

Puede detectar registros que no tienen coincidencia en la tabla unida. Devuelve valores NULL para los registros de la tabla unida si no se encuentra ninguna coincidencia.

Suena confuso? Veamos un ejemplo –

LEFT JOIN

Supongamos ahora que desea obtener títulos de todas las películas junto con los nombres de los miembros que las han alquilado. Está claro que algunas películas no han sido alquiladas por nadie. Simplemente podemos usar LEFT JOIN para este propósito.

MySQL JOINS Tutorial: INNER, OUTER, LEFT, RIGHT, CROSS

LEFT JOIN devuelve todas las filas de la tabla de la izquierda, incluso si no se han encontrado filas coincidentes en la tabla de la derecha. Donde no se encontraron coincidencias en la tabla de la derecha, se devuelve NULL.

 

Ejecutar la secuencia de comandos anterior en MySQL workbench da. Puede ver que en el resultado devuelto que se enumera a continuación que para las películas que no se alquilan, los campos de nombre de miembro tienen valores NULOS. Eso significa que ningún miembro coincidente encontró la tabla de miembros para esa película en particular.

título nombre de pila apellido
EL CREDO DEL ASESINO: EMBERS Adán Herrero
Real Steel (2012) Ravi Kumar
Seguro (2012) Susana Davidson
Fecha límite (2009) Jenny Adrianna
Marley y yo Sotavento Apestar
Alvin y las ardillas NULO NULO
Las aventuras de Tintin NULO NULO
Casa segura (2012) NULO NULO
GIA NULO NULO
La imagen sucia NULO NULO

Nota: Se devuelve nulo para las filas que no coinciden en la derecha

 

DERECHO ÚNASE

RIGHT JOIN es obviamente lo opuesto a LEFT JOIN. RIGHT JOIN devuelve todas las columnas de la tabla de la derecha, incluso si no se han encontrado filas coincidentes en la tabla de la izquierda. Donde no se encontraron coincidencias en la tabla de la izquierda, se devuelve NULL.

En nuestro ejemplo, supongamos que necesita obtener los nombres de los miembros y las películas alquiladas por ellos. Ahora tenemos un nuevo miembro que todavía no ha alquilado ninguna película

MySQL JOINS Tutorial: INNER, OUTER, LEFT, RIGHT, CROSS

 

Ejecutar el script anterior en MySQL workbench da los siguientes resultados.

nombre de pila apellido título
Adán Herrero EL CREDO DEL ASESINO: EMBERS
Ravi Kumar Real Steel (2012)
Susana Davidson Seguro (2012)
Jenny Adrianna Fecha límite (2009)
Sotavento Apestar Marley y yo
NULO NULO Alvin y las ardillas
NULO NULO Las aventuras de Tintin
NULO NULO Casa segura (2012)
NULO NULO GIA
NULO NULO La imagen sucia

Nota: Se devuelve nulo para las filas que no coinciden a la izquierda

Cláusulas “ON” y “USING”

En los ejemplos de consulta de JOIN anteriores, hemos utilizado la cláusula ON para hacer coincidir los registros entre tablas.

La cláusula USING también se puede usar para el mismo propósito. La diferencia con USING es que necesita tener nombres idénticos para las columnas coincidentes en ambas tablas.

 

Hasta el momento, en la tabla de “películas” usamos su clave principal con el nombre “id”. Nos referimos a lo mismo en la tabla de “miembros” con el nombre “movie_id”.

 

Cambiemos el nombre del campo “id” de las “películas” por el nombre “movie_id”. Hacemos esto para tener nombres de campo coincidentes idénticos.

A continuación, usemos USING con el ejemplo de LEFT JOIN anterior.

Además de usar ON y USING con JOINs , puedes usar muchas otras cláusulas de MySQL como GROUP BY, WHERE e incluso funciones como SUM , AVG , etc.

 

¿Por qué deberíamos usar uniones?

Ahora puede pensar, por qué usamos JOINs cuando podemos hacer la misma tarea ejecutando consultas. Especialmente si tiene experiencia en la programación de bases de datos, sabe que podemos ejecutar consultas una a una, use la salida de cada una de ellas en consultas sucesivas. Por supuesto, eso es posible. Pero al utilizar JOINs, puede realizar el trabajo utilizando solo una consulta con los parámetros de búsqueda. Por otro lado, MySQL puede lograr un mejor rendimiento con JOINs, ya que puede usar Indexación. Simplemente el uso de la consulta única JOIN en lugar de ejecutar múltiples consultas reduce la sobrecarga del servidor. El uso de múltiples consultas en su lugar lleva a más transferencias de datos entre MySQL y aplicaciones (software). Además, requiere más manipulaciones de datos en el final de la aplicación también.

Está claro que podemos lograr mejores desempeños de MySQL y aplicaciones mediante el uso de JOINs.

 

Resumen

  • LAS UNIDAS nos permiten combinar datos de más de una tabla en un solo conjunto de resultados.
  • LAS UNIONES tienen un mejor rendimiento en comparación con las consultas secundarias
  • INNER JOINS solo devuelve filas que cumplen los criterios especificados.
  • OUTER JOINS también puede devolver filas donde no se encontraron coincidencias. Las filas no coincidentes se devuelven con la palabra clave NULL.
  • Los principales tipos de JOIN incluyen Inner, Left Outer, Right Outer, Cross JOINS, etc.
  • La cláusula frecuentemente utilizada en las operaciones JOIN es “ON”. La cláusula “USING” requiere que las columnas coincidentes tengan el mismo nombre.
  • JOINS también se puede utilizar en otras cláusulas como GROUP BY, WHERE, SUB QUERIES, AGREGATE FUNCTIONS, etc.

 

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *