Introducción a los tipos de combinaciones en SQL

Una cláusula Join en SQL sirve para combinar filas de dos o más tablas. El proceso de combinar filas depende de una columna relacionada con ellas. Los cuatro tipos diferentes de combinaciones en SQL se denominan combinación interna, combinación izquierda, combinación derecha y combinación completa. Antes de que realmente podamos comenzar a usar cualquier tipo de combinación, necesitamos un RDBMS o un Sistema de gestión de bases de datos relacionales donde cargaremos los datos. Una de las formas muy fáciles de entender las uniones es mediante el uso del diagrama de Venn. El uso de un diagrama de Venn facilita la medición de todas las relaciones posibles y lógicas entre diferentes conjuntos de datos. Comprendamos esto uno por uno usando el diagrama de Venn. Más adelante entenderemos la diferencia entre estos utilizando algunos ejemplos prácticos. Supongamos que hay dos conjuntos de datos en nuestra base de datos almacenados en forma de Tabla Uno y Tabla Dos. Existe alguna relación entre las dos tablas que se especifica en forma de una clave primaria y un concepto de clave externa. Si une dos tablas que tienen algún tipo de relación, la representación del diagrama de Venn del escenario será algo así como,

La cantidad de esta superposición determinará el grado de similitud entre las dos tablas, es decir, la Tabla A y la Tabla B. Esto significa que el número de registros de la tabla uno, que coinciden con los registros de la tabla dos, está representado por la sección de superposición. Este es un subconjunto de datos. Obtenemos cuatro tipos diferentes de combinaciones en función del subconjunto de datos que seleccionamos de las dos tablas.

Sintaxis de unirse:

SELECT column-names FROM table-name1 JOIN table-name2 ON column-name1 = column-name2 WHERE condition

Tipos de combinaciones en SQL

  1. Unir internamente
  2. Izquierda unirse
  3. Únete a la derecha
  4. Únete completo

A continuación explicamos diferentes tipos de Uniones en Detallado.

1. Unión interna

En una unión interna, solo seleccionamos los datos que son comunes en ambas tablas. (es decir, parte 3 aquí) Para hacerlo más preciso, todos los registros de ambas tablas que coinciden con la condición mencionada con la unión se seleccionan en esta unión.

Sintaxis de la unión interna:

SELECT column-names FROM table-name1 INNER JOIN table-name2 ON column-name1 = column-name2 WHERE condition

2. Izquierda unirse

En la unión izquierda, seleccionamos todos los datos de la tabla izquierda y de la tabla derecha solo seleccionamos el conjunto de datos que coincide con la condición mencionada con la unión (aquí área 1 + 3)

Sintaxis de Left Join:

SELECT column-names FROM table-name1 LEFT JOIN table-name2 ON column-name1 = column-name2 WHERE condition

3. Únete a la derecha

En la unión derecha, seleccionamos todos los datos de la tabla derecha y de la tabla izquierda solo seleccionamos el conjunto de datos que coincide con la condición mencionada con la unión (aquí 3 + 2)

Sintaxis de Right Join:

SELECT column-names FROM table-name1 RIGHT JOIN table-name2 ON column-name1 = column-name2 WHERE condition

4. Unión completa

En la unión completa, todos los registros de ambas tablas se fusionan y seleccionan independientemente de la condición mencionada con la unión cumplida o no. (aquí 1 + 2 + 3)

Sintaxis de la unión completa:

SELECT column-names FROM table-name1 FULL JOIN table-name2 ON column-name1 = column-name2 WHERE condition

Ejemplos de combinaciones en SQL

Considere las dos tablas que figuran a continuación:

1. Ejemplo de un ORDER_DETAILS

El pedido de la tabla contiene los detalles del pedido realizado por el cliente, como la identificación del pedido, la cantidad de productos solicitados, la cantidad del pedido, la identificación del cliente que realizó el pedido y la fecha en que se realizó el pedido. Este tipo de tabla puede ser utilizada por cualquier sitio web en línea para almacenar los detalles del pedido.

ORDER_DETAILS Tabla:

Solicitar ID No_de_artículos Total de la orden Identificación del cliente Fecha de orden
123 3 5500 P_1 20/01/2019
234 2 6500 P_12 10/02/2019
345 1 10000 P_13 27/05/2019
456 4 4 4000 P_14 11/07/2019
567 2 20656 P_1 15/12/2019
678 3 15000 P_11 27/10/2019

2. Ejemplo de CUSTOMER_DETAILS

Ahora tomemos otra tabla en la que se almacenarán los detalles del cliente para poder entregar el pedido a sus respectivas direcciones. Por lo tanto, la tabla de clientes tendrá los detalles del cliente, como la identificación del cliente (cust_id), que será única para cada cliente. Ahora el nombre y el apellido se almacenan en el campo llamado - Cust_First_Name y Cust_Last_Name. Los otros campos almacenarán la información, como la identificación del correo electrónico, el número de teléfono móvil del cliente junto con la dirección, el código postal, la ciudad y el estado. Por lo tanto, podemos ver que nuestra tabla de Clientes se verá algo así como:

Tabla CUSTOMER_DETAILS:

Cust_Id Cust_First_Name Cust_Last_Name Código PIN Habla a Cust_Mobile Ciudad Estado Cust_email
P_50 Alicia Peter 111111 330 xyz street 123 Bangalore KA
P_12 James Dsouza 155511 Colonia 420 abc 234 Hyderabad AP
P_15 Harry Alfarero 123456 551 mg por carretera 444 Noida Delhi
P_40 Miley Parker 111121 Camino de 11 pies 224 Bangalore KA
P_10 Germán Arbusto 123423 34 th thanco Street 432 Delhi Delhi
P_18 Dan marrón 134523 50º camino independiente 145 Gurugram Hariana
P_20 James Russel 111111 101 mg de carretera 678 Bangalore KA
P_1 Miley Madison 100011 45º diseño de kaverappa 987 Chennai Tennesse

Ahora, usando este ejemplo, comprendamos la funcionalidad de las uniones. Podemos ver que la relación entre las dos tablas, es decir, la tabla ORDER_DETAILS y la tabla CUSTOMER_DETAILS, se establece mediante la clave que tiene el valor del ID del cliente, es decir, Customer_Id, que es una clave principal en la tabla CUSTOMER_DETAILS y una clave externa en Tabla ORDER_DETAILS.

Algunos puntos importantes a tener en cuenta aquí antes de continuar son:

  • No todos los clientes de nuestra tabla CUSTOMER_DETAILS han realizado una solicitud de pedido.
  • No todas las solicitudes de pedido que tenemos en nuestra tabla ORDER_DETAILS tienen un customer_id que está presente en nuestra tabla CUSTOMER_DETAILS, lo que significa que para algunos pedidos no hay detalles del cliente.

3. Unión interna

Inner Join le dará solo aquellos registros para los que se cumple la condición.

Consulta:

select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
inner join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id

Salida:

Cust_First_Name Cust_email No_de_artículos Total de la orden Fecha de orden
Miley 3 5500 20/01/2019
James 2 6500 10/02/2019
Miley 2 20656 15/12/2019

4. Izquierda unirse

Left Join le dará todos los registros de la tabla izquierda, es decir, la tabla CUSTOMER_DETAILS. Si el cliente no realiza ningún pedido, devolverá un valor nulo para las columnas de la tabla ORDER_DETAILS.

Consulta:

select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
left join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id

Salida:

Cust_First_Name Cust_email No_de_artículos Total de la orden Fecha de orden
Alicia NULO NULO NULO
James 2 6500 10/02/2019
Harry NULO NULO NULO
Miley NULO NULO NULO
Germán NULO NULO NULO
Dan NULO NULO NULO
James NULO NULO NULO
Miley 3 5500 20/01/2019
Miley 2 20656 15/12/2019

5. Únete a la derecha

Derecha, Join le dará todos los registros de la tabla derecha, es decir, la tabla ORDER_DETAILS. Si no se encuentran registros de clientes para el pedido, devolverá un valor nulo para las columnas en la tabla CUSTOMER_DETAILS.

Consulta:

select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
right join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id

Salida:

Cust_First_Name Cust_email No_de_artículos Total de la orden Fecha de orden
Miley 3 5500 20/01/2019
James 2 6500 10/02/2019
NULO NULO 1 10000 27/05/2019
NULO NULO 4 4 4000 11/07/2019
Miley 2 20656 15/12/2019
NULO NULO 3 15000 27/10/2019

6. Unión completa

Full Join le dará todos los registros especificados de ambas tablas.

Consulta:

select Cust_First_Name, Cust_email, No_of_Items, Order_Amount, Order_Date
from CUSTOMER_DETAILS cd
full join ORDER_DETAILS od
on cd.Cust_Id = od.Customer_Id

Salida:

Cust_First_Name Cust_email No_de_artículos Total de la orden Fecha de orden
Alicia NULO NULO NULO
James 2 6500 10/02/2019
Harry NULO NULO NULO
Miley NULO NULO NULO
Germán NULO NULO NULO
Dan NULO NULO NULO
James NULO NULO NULO
Miley 3 5500 20/01/2019
Miley 2 20656 15/12/2019
NULO NULO 1 10000 27/05/2019
NULO NULO 4 4 4000 11/07/2019
NULO NULO 3 15000 27/10/2019

Ventajas de las uniones en SQL

  1. Ejecución más rápida, lo que significa una recuperación más rápida de las columnas deseadas.
  2. Optimizado, legible y comprensible
  3. Incremento en el rendimiento.

Conclusión

Como se ve, usamos JOINs para agregar y obtener los campos de diferentes tablas.

  • Inner Join obtiene registros donde se cumple la condición dada.
  • Left Join le dará todas las filas de la tabla izquierda, incluso cuando la condición dada no coincida.
  • Right Join le dará todas las filas de la tabla izquierda, incluso cuando la condición dada no coincida.
  • Full Join devuelve todas las filas cuando hay una coincidencia en una de las tablas.
  • Las consultas de combinación se pueden usar con comandos como: SELECCIONAR, INSERTAR, ACTUALIZAR, ELIMINAR.
  • Las uniones también se llevan bien con diferentes cláusulas como: GROUP BY, SUB QUERIES, WHERE, AGGREGATE FUNCTIONS, etc.

Artículo recomendado

Esta ha sido una guía de Tipos de combinaciones en SQL. Aquí discutimos los diferentes tipos de combinaciones en SQL y sus ventajas junto con ejemplos. También puede consultar nuestros otros artículos sugeridos para obtener más información:

  1. Ventajas de NoSQL
  2. Herramientas de administración de SQL
  3. Base de datos en SQL
  4. Comodín en SQL
  5. Los 6 tipos principales de combinaciones en MySQL con ejemplos