PostgreSQL – Uniones

Una instrucción Join de PostgreSQL se utiliza para combinar datos o filas de una o más tablas en función de un campo común entre ellas. Estos campos comunes son generalmente la clave principal de la primera tabla y la clave externa de otras tablas.
Hay 4 tipos básicos de uniones compatibles con PostgreSQL, a saber:

  1. Unir internamente
  2. Unirse a la izquierda
  3. Unirse a la derecha
  4. Unión exterior completa

Algunas combinaciones especiales de PostgreSQL se encuentran a continuación:

  • Unión natural
  • Unión cruzada
  • Unirse a uno mismo

Veamos las 4 uniones básicas en PostgreSQL. Por el bien de este artículo, configuraremos una base de datos de muestra con los siguientes comandos en nuestro shell psql:

  • Crear un zoológico de base de datos.
    CREATE DATABASE zoo;
  • Cree una tabla zoo_1.
    CREATE TABLE zoo_1 (
        id INT PRIMARY KEY,
        animal VARCHAR (100) NOT NULL
    );
  • Cree una tabla zoo_2.
    CREATE TABLE zoo_2 (
        id INT PRIMARY KEY,
        animal VARCHAR (100) NOT NULL
    );
  • Inserte datos en la tabla zoo_1.
    INSERT INTO zoo_1(id, animal)
    VALUES
        (1, 'Lion'),
        (2, 'Tiger'),
        (3, 'Wolf'),
        (4, 'Fox');
  • Inserte datos en la tabla zoo_2.
    INSERT INTO zoo_2(id, animal)
    VALUES
        (1, 'Tiger'),
        (2, 'Lion'),
        (3, 'Rhino'),
        (4, 'Panther');

Ahora tenemos dos tablas zoo_1 y zoo_2 con dos animales comunes y cuatro animales diferentes. Supongamos también que zoo_1 es la tabla de la izquierda.

Unir internamente

La siguiente declaración une la tabla de la izquierda con la tabla de la derecha usando los valores en la columna «animal»:

SELECT
    zoo_1.id id_a,
    zoo_1.animal animal_a,
    zoo_2.id id_b,
    zoo_2.animal animal_b
FROM
    zoo_1 
INNER JOIN zoo_2 ON zoo_1.animal = zoo_2.animal;

Producción:

Como se ve en el resultado anterior, la unión interna devuelve un conjunto de resultados que contiene una fila en la tabla de la izquierda que coincide con la fila de la tabla de la derecha.

El diagrama de Venn para INNER JOIN es el siguiente:

Unirse a la izquierda

La declaración a continuación une la tabla de la izquierda con la tabla de la derecha usando la combinación izquierda (o combinación externa izquierda):

SELECT
    zoo_1.id,
    zoo_1.animal,
    zoo_2.id,
    zoo_2.animal
FROM
    zoo_1
LEFT JOIN zoo_2 ON zoo_1.animal = zoo_2.animal;

Producción:

Como se ve en el resultado anterior, la unión izquierda devuelve un conjunto completo de filas de la tabla de la izquierda con las filas coincidentes, si están disponibles, de la tabla de la derecha. Si no hay coincidencia, el lado derecho tendrá valores nulos.

El diagrama de Venn para LEFT JOIN es el siguiente:

Unirse a la derecha

El RIGHT JOIN o RIGHT OUTER JOIN funciona exactamente de manera opuesta al LEFT JOIN. Devuelve un conjunto completo de filas de la tabla de la derecha con las filas coincidentes, si están disponibles, de la tabla de la izquierda. Si no hay coincidencia, el lado izquierdo tendrá valores nulos.

La declaración a continuación une la tabla de la derecha con la tabla de la izquierda usando la combinación derecha (o combinación externa derecha):

SELECT
    zoo_1.id,
    zoo_1.animal,
    zoo_2.id,
    zoo_2.animal
FROM
    zoo_1
RIGHT JOIN zoo_2 ON zoo_1.animal = zoo_2.animal;

Producción:

El diagrama de Venn para una UNIÓN EXTERNA DERECHA está a continuación:

Unión exterior completa

La combinación externa completa o la combinación completa devuelve un conjunto de resultados que contiene todas las filas de las tablas izquierda y derecha, con las filas coincidentes de ambos lados donde estén disponibles. Si no hay coincidencia, el lado que falta contiene valores nulos.

La siguiente declaración ilustra la combinación externa completa:

SELECT
    zoo_1.id,
    zoo_1.animal,
    zoo_2.id,
    zoo_2.animal
FROM
    zoo_1
FULL JOIN zoo_2 ON zoo_1.animal = zoo_2.animal;

Producción:

El diagrama de Venn para una UNIÓN EXTERNA COMPLETA se muestra a continuación:

Publicación traducida automáticamente

Artículo escrito por RajuKumar19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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