Unión externa SQL

Union Externa Sql



No hace falta decir que las uniones son una de las características más identificables de las bases de datos relacionales. Las uniones nos permiten combinar los datos de una o más tablas en función de una condición relacionada para crear una operación de datos coherente.

Hay varios tipos de combinaciones en SQL, cada una con una forma única de manejar los datos de las tablas participantes o del conjunto resultante. Uno de los tipos de unión más comunes en SQL es una UNIÓN EXTERNA.







Una OUTER JOIN en SQL recupera todas las filas coincidentes de las tablas involucradas, así como las filas no coincidentes de una o ambas tablas. Resulta útil cuando se trata de tablas que contienen valores NULL o conjuntos faltantes.



Exploremos más a fondo qué hacen estas uniones, cómo funcionan y cómo podemos usarlas en una base de datos SQL.



Requisitos:

Para este tutorial, trabajaremos con MySQL 8.0 y usaremos la base de datos de muestra Sakila. Sin embargo, no dude en utilizar cualquier otro conjunto de datos que considere aplicable.





Tipos de uniones externas

Hay tres tipos principales de UNIONES EXTERNAS en SQL. Estos tipos de UNIONES EXTERIORES incluyen:

  1. UNIONES EXTERNAS Izquierdas

  2. En el caso de LEFT OUTER JOINS, la combinación recupera todas las filas de la tabla de la izquierda y solo las filas coincidentes de la tabla de la derecha. Si no hay filas coincidentes en la tabla de la derecha, la combinación devuelve los valores NULL para las columnas de la tabla de la derecha.



  3. UNIONES EXTERIORES derechas

  4. Esto es similar a una UNIÓN EXTERIOR DERECHA. Sin embargo, recupera todas las filas de la tabla derecha pero solo las filas coincidentes de la tabla izquierda. Si no hay filas coincidentes de la tabla de la izquierda, la combinación incluye los valores NULL para las columnas de la tabla de la izquierda.

  5. JUNTAS EXTERIORES COMPLETAS

  6. Por último, tenemos las UNIONES EXTERIORES COMPLETAS. Este tipo de unión combina las uniones exteriores DERECHA e IZQUIERDA. Como resultado, la combinación recupera todas las filas cuando hay una coincidencia en la tabla izquierda o derecha. Si no hay ninguna coincidencia, la combinación devuelve los valores NULL para las columnas de la tabla que no coinciden.

Sintaxis de SQL OUTER JOIN

A continuación se expresa la sintaxis de SQL OUTER JOIN. Sin embargo, es bueno tener en cuenta que la sintaxis puede variar ligeramente según el motor de base de datos de destino.

La siguiente es una estructura general:

SELECCIONAR columnas
DE la tabla 1
[IZQUIERDA | DERECHA | COMPLETO] UNIÓN EXTERNA tabla2
ON tabla1.nombre_columna = tabla2.nombre_columna;

La sintaxis de una OUTER JOIN en SQL se explica por sí misma.

Ejemplos:

Veamos algunos ejemplos de uso sobre cómo podemos aplicar los distintos tipos de UNIONES EXTERNAS en SQL.

Como mencionamos, usaremos la base de datos de muestra de Sakila para demostración. En este caso utilizamos las tablas “cliente” y “pago”.

Ejemplo 1: UNIÓN EXTERIOR IZQUIERDA

Comencemos con una UNIÓN EXTERNA. Supongamos que queremos recuperar toda la información del cliente junto con su información de pago, si está disponible.

Esto hace que se aplique una UNIÓN EXTERNA IZQUIERDA, ya que queremos toda la información del cliente (a la izquierda) y la información de pago, si está disponible (derecha).

Si el cliente no ha realizado ningún pago, la unión mostrará los valores NULL para las columnas relacionadas con el pago.

Un ejemplo es el siguiente:

SELECCIONAR
c.id_cliente,
c.primer_nombre,
c.apellido,
p.cantidad,
p.fecha_pago
DE
cliente c
Pago de UNIÓN EXTERIOR IZQUIERDA p
EN
c.id_cliente = p.id_cliente;

En la consulta dada, incluimos las columnas 'customer_id', 'first_name' y 'last_name' de la tabla 'cliente'. También incluimos el monto y la “fecha_pago” de la tabla “pago”.

Luego realizamos una UNIÓN EXTERNA IZQUIERDA entre las tablas 'cliente' y 'pago' según el 'cliente_id'.

Estos son todos los clientes (ya sea que hayan realizado el pago o no) junto con sus datos de pago (si los hubiera).

Un resultado de ejemplo es el siguiente:

Ejemplo 2: UNIÓN EXTERIOR DERECHA

Ahora, pasemos a la UNIÓN EXTERIOR DERECHA. Supongamos que deseamos incluir toda la información de pago y el cliente asociado en este caso, si lo hubiera.

En este caso, si un cliente realiza un pago, la unión mostrará los detalles de ese cliente. Si hay un pago sin un cliente asociado, mostrará los valores NULL para las columnas relacionadas con el cliente.

SELECCIONAR
c.id_cliente,
c.primer_nombre,
c.apellido,
p.cantidad,
p.fecha_pago
DE
cliente c
DERECHA UNIÓN EXTERIOR pago p
EN
c.id_cliente = p.id_cliente;

El conjunto resultante es el siguiente:

Ejemplo 3: UNIÓN EXTERIOR COMPLETA

UNA UNIÓN EXTERNA COMPLETA, por otro lado, recupera toda la información y el pago del cliente. Esto incluye todos los clientes y todos los pagos y muestra los valores NULL cuando no hay coincidencias entre las tablas.

SELECCIONAR
c.id_cliente,
c.primer_nombre,
c.apellido,
p.cantidad,
p.fecha_pago
DE
cliente c
Pago de UNIÓN EXTERNA COMPLETA p
EN
c.id_cliente = p.id_cliente;

Es bueno tener en cuenta que MySQL no admite de forma nativa una UNIÓN EXTERNA COMPLETA. Tienes que hacer algo de magia de jiujitsu con UNIÓN IZQUIERDA, UNIÓN y UNIÓN DERECHA. Bastante molesto, podríamos añadir.

Conclusión

En este tutorial, aprendimos todo sobre las UNIONES EXTERNAS. Aprendimos qué es una OUTER JOIN en SQL, los tipos de OUTER JOINS y los ejemplos de cómo utilizar estos tipos de OUTER JOINS.