SQLShack (Español)

Este artículo proporcionará una descripción completa con ejemplos de la combinación externa de SQL, incluida la combinación externa completa, derecha e izquierda, así como cubrir la unión entre las combinaciones externas izquierda y derecha de SQL.

Es esencial comprender el proceso para obtener los datos de los múltiples mesas. Un principiante puede no tener la idea de Joins en SQL Server. En este consejo, tomaremos una descripción general de las uniones SQL, aprenderemos SQL OUTER JOIN junto con su sintaxis, ejemplos y casos de uso.

En un sistema de base de datos relacional, es una buena práctica seguir los principios de Normalización, en la que, básicamente, dividimos tablas grandes en tablas más pequeñas. En una declaración de selección, podemos recuperar los datos de estas tablas mediante combinaciones. Podemos unir las tablas y obtener los campos obligatorios de estas tablas en el conjunto de resultados. Estas tablas deben tener algún campo común para relacionarse entre sí. Puede encontrar datos divididos en múltiples bases de datos y, a veces, también es una estructura muy compleja. Con Joins, podemos unir los datos de las múltiples tablas, bases de datos de una manera fácil de usar y representar estos datos en la aplicación.

Podemos representar un SQL JOIN usando la siguiente imagen

Podemos muchos tipos de SQL Join en SQL Server. En la siguiente imagen, puede ver las categorías de SQL Joins

Exploremos SQL Outer Join en detalle en la próxima sección.

Descripción general de SQL OUTER JOIN

Usamos SQL OUTER JOIN para hacer coincidir filas entre tablas. Es posible que deseemos obtener filas coincidentes junto con filas no coincidentes también de una o ambas tablas. Tenemos los siguientes tres tipos de UNIONES EXTERIORES SQL.

  1. Unión externa completa SQL
  2. Unión externa izquierda SQL
  3. Unión externa derecha SQL

Exploremos cada una de las combinaciones externas de SQL con ejemplos.

Unión externa completa de SQL

En la combinación externa completa de SQL, se incluyen todas las filas de ambas tablas . Si hay filas no coincidentes, muestra valores NULL para ellos.

Podemos entender de manera eficiente usando ejemplos. Creemos una tabla de muestra e insertemos datos en ella.

Puede consultar el siguiente modelo de datos de ambas tablas.

Inserte datos en la tabla de empleados con la siguiente secuencia de comandos.

Inserte datos en la tabla de departamentos

Podemos representar una relación lógica entre dos tablas usando un diagrama de Venn. En un diagrama de Venn contiene varios círculos superpuestos y cada círculo representa una entidad o tabla. El área común o el área superpuesta en el diagrama de Venn representa los valores comunes entre ambas tablas.

Por ejemplo, en la siguiente captura de pantalla, tenemos dos círculos superpuestos. Cada círculo reenvía una mesa (Empleados y Departamentos). Comprendamos la unión externa COMPLETA usando el siguiente ejemplo.

Tenemos un campo común (EmpID) en ambas tablas; por tanto, podemos unir la tabla con esta columna. En la siguiente consulta, definimos la UNIÓN EXTERIOR COMPLETA entre los departamentos y la tabla Empleado en la columna EMPID de ambas tablas.

1
2
3

SELECCIONAR *
DE Empleado
FULL OUTER JOIN Departments ON Employee.EmpID = Departments.EmpID;

La combinación externa completa de SQL proporciona las siguientes filas en una salida

  • Filas coincidentes entre ambas tablas
  • Filas no coincidentes de ambas tablas (valores NULL )

Ejecutemos esta consulta para devolver la salida de la consulta Full Outer Join. Obtenemos el siguiente resultado.

También podemos ver algunos registros con valores NULL. Entendamos esto de una mejor manera usando un diagrama de Venn.

En la siguiente captura de pantalla, puede ver la siguiente información

  • EmpID 1, 2,3,4,5 , 6,10 existe en la tabla Empleados y Departamentos. En la salida de la consulta Full Outer Join, obtenemos todas estas filas con datos de ambas tablas
  • EmpID 7, 8, 9 existe en la tabla Empleado pero no en la tabla Departamentos. No incluye filas coincidentes en la tabla de departamentos; por lo tanto; obtenemos valores NULL para esos registros

Ahora, para fines de demostración, insertemos un registro más en las tablas de Departamentos . En esta consulta, insertamos EmpID 11 que no existe en la tabla Empleado.

Vuelva a ejecutar la consulta SQL Full Outer Join. En la siguiente imagen, obtiene una fila adicional con valores NULL. No tenemos ninguna fila coincidente para EmpID 11 en la tabla de empleados.Debido a esto, obtenemos valores NULL para él en la salida.

Como resumen, podemos representar la unión externa completa de SQL usando el siguiente diagrama de Venn. Obtenemos lo que está representado en el área resaltada en la salida de Full Outer Join.

SQL FULL OUTER JOIN y cláusula WHERE

Podemos agregar una cláusula WHERE con un SQL FULL OUTER JOIN para obtener filas sin datos coincidentes entre ambas tablas de combinación.

En la siguiente consulta, agregamos una cláusula where a mostrar solo los registros que tienen valores NULL.

1
2
3
4
5

SELECCIONAR *
DE Empleado
FULL OUTER JOIN Departments ON Employee.EmpID = Departments.EmpID
DONDE Employee.EmpID ES NULL
O Departments.EmpID IS NULL;

Ejecute este comando y vea el resultado. Solo devuelve filas que no coinciden en la tabla Empleado o Departamentos.

SQL LEFT OUTER JOIN

En un SQL Left Outer Join, obtenemos las siguientes filas en nuestra salida.

  • Da el resultado de la fila coincidente entre ambas tablas
  • Si ningún registro coincide de la tabla de la izquierda, también muestra aquellos registros con valores NULL

Ejecute el siguiente código para devolver la salida SQL LEFT OUTER JOIN

1
2
3

SELECT *
FROM Employee
IZQUIERDA EXTERIOR JOIN Departments ON Employee.EmpID = Departments.EmpID

En la siguiente imagen, puede ver que tenemos valores NULL para EmpID 7,8 y 9. Estos EmpID no existen en el lado derecho Tabla de departamentos.

Necesitamos anotar la posición de la tabla en la instrucción Join. Actualmente, tenemos una tabla de empleados en el lado izquierdo y una tabla de departamentos en el lado derecho.

Reescribamos la consulta e intercambiemos la posición de las tablas en la consulta. En esta consulta, tenemos la tabla de departamentos en la posición izquierda, por lo que la unión externa izquierda debe verificar los valores de esta tabla y devolver un valor NULO en caso de una discrepancia.

En la siguiente captura de pantalla, puede ver que solo un valor NULL para EmpID 11. Es porque EmpID 11 no está disponible en la tabla de Empleado.

Como En resumen, podemos representar SQL Left Outer Join usando el siguiente diagrama de Venn. Obtenemos el área resaltada en la salida de SQL Left Outer Join.

SQL Right OUTER JOIN

En SQL Right Outer Join, obtenemos las siguientes filas en nuestra salida.

  • Da la salida de la fila coincidente entre ambas tablas
  • Si ningún registro coincide con la tabla de la derecha, también muestra aquellos registros con valores NULL

Ejecute la siguiente consulta para obtener el resultado de Right Outer Join

1
2
3

SELECCIONAR *
DE Empleado
UNIRSE EXTERIOR DERECHO Departamentos EN Empleado.EmpID = Departamentos.EmpID

En la siguiente imagen, puede ver que obtenemos todas las filas coincidentes junto con una fila con valores NULL. La fila de valor nulo tiene EmpID 11 porque no existe en la tabla Empleado. También puede notar que la posición de la tabla Departamento está en la posición correcta en Unir. Debido a esto, no obtenemos valores de la tabla Empleado (posición izquierda) que no coincide con la tabla Departamento (lado derecho).

Como se destacó anteriormente, la posición de la tabla es importante en la instrucción JOIN. Si cambiamos las posiciones de la tabla, obtenemos una salida diferente. En la siguiente consulta, tenemos la tabla Departamentos (izquierda) y la tabla Empleado (derecha).

1
2
3
4

SELECCIONAR *
DE Departamentos
UNIRSE EXTERIOR DERECHO Empleado EN Departments.EmpID = Employee.EmpID

Puede notar la diferencia en la unión externa derecha después de intercambiar las posiciones de las tablas en la consulta anterior.

Como resumen, podemos representar la unión externa derecha SQL usando el siguiente diagrama de Venn. Obtenemos el área resaltada en la salida de SQL Right Outer Join.

La unión entre SQL Left Outer Join y SQL Right Outer Join

En los ejemplos anteriores, exploramos la unión externa izquierda de SQL y la unión externa derecha de SQL con diferentes ejemplos. Podemos hacer una Unión del resultado de SQL Left Outer Join y SQL Right Outer Join. Proporciona la salida de SQL Full Outer Join.

Ejecute la siguiente consulta como alternativa a SQL Full Outer Join.

1
2
3
4
5
6
7

SELECT *
FROM Employee
IZQUIERDA EXTERIOR JOIN Departamentos ON Employee.EmpID = Departments.EmpID
UNION ALL
SELECT *
FROM Employee
UNIÓN EXTERIOR DERECHA Departamentos ON Employee.EmpID = Departments.EmpID

En el siguiente resultado, obtenemos todos registros coincidentes, registros no coincidentes de la tabla izquierda y registros no coincidentes de la tabla derecha. Es similar a una salida de SQL Full Outer Join.

Conclusión

En este artículo, exploramos SQL Outer Join y sus tipos junto con ejemplos. Espero que este artículo le haya resultado útil. No dude en enviarnos sus comentarios en los comentarios a continuación.

  • Autor
  • Publicaciones recientes
Como entrenador certificado por MCSA y certificado por Microsoft en Gurgaon, India, con 13 años de experiencia, Rajendra trabaja para una variedad de grandes empresas que se enfocan en la optimización del rendimiento, monitoreo, alta disponibilidad y estrategias e implementación de recuperación de desastres. Es autor de cientos de artículos autorizados sobre SQL Server, Azure, MySQL, Linux, Power BI, Performance tuning, AWS / Amazon RDS, Git y tecnologías relacionadas que han sido vistos por más de 10 millones de lectores hasta la fecha.
Es el creador de una de las mayores colecciones gratuitas de artículos en línea sobre un solo tema, con su serie de 50 partes sobre los grupos de disponibilidad Always On de SQL Server. Basado en su contribución a la comunidad de SQL Server, ha sido reconocido con varios premios, incluido el prestigioso «Mejor autor del año» de forma continua en 2020 y 2021 en SQLShack.
Raj siempre está interesado en nuevos desafíos, así que si necesita consultoría ayuda sobre cualquier tema cubierto en sus escritos, puede ser contactado en [email protected]
Ver todas las publicaciones de Rajendra Gupta

Últimas publicaciones de Rajendra Gupta (ver todas)
  • Tiempos de espera de sesión en SQL Server Always On Availability Grupos: 8 de febrero de 2021
  • Realización de actualizaciones de versiones menores y mayores para AWS RDS SQL Server: 29 de enero de 2021
  • Implementación de instancias de AWS RDS PostgreSQL: 27 de enero de 2021

Write a Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *