PostgreSQL Tipos de unión: Interior, Exterior, Izquierda, Derecha

⚡ Resumen inteligente

PostgreSQL Las uniones recuperan y combinan filas de dos o más tablas utilizando una clave compartida, e incluyen uniones internas como theta, EQUI y natural, además de uniones externas que abarcan resultados izquierdos, derechos y completos.

  • 🔗 Combine: Las uniones combinan columnas de varias tablas basándose en una clave común.
  • 🎯 Unir internamente: Las uniones internas devuelven solo las filas donde se cumple la condición de unión.
  • ⬅️ Unión izquierda: LEFT OUTER JOIN conserva todas las filas de la tabla izquierda y agrega valores NULL para las filas de la derecha que no coinciden.
  • ➡️ Unión derecha: RIGHT OUTER JOIN conserva todas las filas de la tabla derecha, añadiendo valores NULL para las filas de la izquierda que no coinciden.
  • ???? Unirse completamente: FULL OUTER JOIN devuelve todas las filas de ambas tablas con valores NULL donde no existe ninguna coincidencia.
  • 🤖 Ayuda de IA: Los asistentes de IA seleccionan el tipo de unión correcto y escriben la condición ON.

PostgreSQL Tipos de unión

¿Qué son las uniones? PostgreSQL?

PostgreSQL Une Se utilizan para recuperar datos de varias tablas. Con las cláusulas JOIN, podemos combinar las sentencias SELECT y JOIN en una sola. Se añade una condición JOIN a la sentencia y se devuelven todas las filas que cumplen dicha condición. Los valores de las distintas tablas se combinan en función de las columnas comunes. La columna común suele ser una clave primaria en la primera tabla y una clave foránea en la segunda.

PostgreSQL Tipos de unión

Hay dos tipos de uniones en PostgreSQL:

  • Uniones internas
  • Uniones externas

PostgreSQL Unir internamente

Hay 3 tipos de uniones internas en PostgreSQL:

  • Theta unirse
  • Unión natural
  • Únete a EQUI

Unión theta

Una unión theta permite unir dos tablas según la condición representada por theta. Las uniones theta pueden funcionar con todos los operadores de comparación. En la mayoría de los casos, la unión theta se denomina unión interna.

La unión theta es el tipo más básico de UNIÓN. Devolverá todas las filas de las tablas donde se cumple la condición JOIN.

Sintaxis:

SELECT columns
FROM table-1
INNER JOIN table-2
ON table-1.column = table-2.column;

Considere las siguientes tablas de la base de datos Demo:

Libro:

PostgreSQL Unión theta

Precio:

PostgreSQL Unión theta

Queremos ver el nombre de cada libro y el precio correspondiente. Podemos ejecutar el siguiente comando:

SELECT Book.name, Price.price
FROM Book
INNER JOIN Price
ON Book.id = Price.id;

Esto devolverá lo siguiente:

PostgreSQL Unión theta

Solo 3 filas cumplieron la condición de unión.

Únete a EQUI

La unión EQUI nos proporciona una forma de unir dos tablas según la relación clave principal/clave externa. Por ejemplo:

SELECT *
FROM Book
JOIN Price ON Book.id = Price.id;

Esto devolverá lo siguiente:

PostgreSQL Únete a EQUI

Se han devuelto registros de ambas tablas en función de las columnas comunes, es decir, la columna de identificación.

Unión natural

Este tipo de unión nos proporciona otra forma de escribir una unión EQUI. Podemos mejorar nuestro ejemplo anterior agregando la palabra clave NATURAL como se muestra a continuación:

SELECT *
FROM Book
NATURAL JOIN Price;

Esto devolverá lo siguiente:

PostgreSQL Unión natural

Solo se ha devuelto una columna de identificación. NATURAL JOIN pudo notar que la columna de identificación es común en las dos tablas. Sólo uno fue devuelto.

PostgreSQL Unión externa

Hay 3 tipos de uniones externas en PostgreSQL:

  • Izquierda combinación externa
  • Unión exterior derecha
  • Unión externa completa

PostgreSQL Izquierda combinación externa

LEFT OUTER JOIN devolverá todas las filas de la tabla del lado izquierdo y solo las filas de la tabla del lado derecho donde se ha cumplido la condición de unión.

Sintaxis:

SELECT columns
FROM table-1
LEFT OUTER JOIN table-2
ON table-1.column = table-2.column;

Necesitamos ver el nombre de cada libro y el precio correspondiente. Podemos ejecutar el siguiente comando:

SELECT Book.name, Price.price
FROM Book
LEFT JOIN Price
ON Book.id = Price.id;

Esto devuelve lo siguiente:

PostgreSQL Izquierda combinación externa

Se han devuelto las 4 filas de la tabla Libro. Sólo 3 filas de la tabla de precios cumplieron la condición de unión. Por eso fueron devueltos. El último libro no tiene valor de precio correspondiente.

PostgreSQL Unión exterior derecha

RIGHT OUTER JOIN devuelve todas las filas de la tabla del lado derecho y las filas de la tabla del lado izquierdo donde se ha cumplido la condición de unión.

Sintaxis:

SELECT columns
FROM table-1
RIGHT OUTER JOIN table-2
ON table-1.column = table-2.column;

Por ejemplo:

SELECT Book.name, Price.price
FROM Book
RIGHT JOIN Price
ON Book.id = Price.id;

Esto devuelve lo siguiente:

PostgreSQL Unión exterior derecha

Se han devuelto todas las filas de la tabla Precio. Solo se devolvieron las filas de la tabla Libro que cumplían la condición de unión. La tercera fila no tiene valor para el nombre, ya que no se encontró ninguna coincidencia.

Unión externa completa PostgreSQL

Este tipo de JOIN devolverá todas las filas de la tabla del lado izquierdo y todas las filas de la tabla del lado derecho con valores nulos donde no se cumple la condición de unión.

Sintaxis:

SELECT columns
FROM table-1
FULL OUTER JOIN table-2
ON table-1.column = table-2.column;

Por ejemplo:

SELECT Book.name, Price.price
FROM Book
FULL OUTER JOIN Price
ON Book.id = Price.id;

Esto devuelve lo siguiente:

PostgreSQL Unión externa completa

Se han devuelto todas las filas de todas las tablas, con valores nulos donde no se encontró ninguna coincidencia.

Usando pgAdmin

Las tareas anteriores se pueden realizar en pgAdmin de la siguiente manera. Las siguientes secciones describen cada tipo de unión paso a paso.

Unión interna de pgAdmin

Los pasos que se describen a continuación muestran cómo ejecutar cada variante de unión interna en pgAdmin.

Cómo utilizar Theta Únete PostgreSQL usando pgAdmin

A continuación se detallan los pasos para utilizar Theta Join en PostgreSQL usando pgAdmin:

Paso 1) Inicie sesión en su cuenta pgAdmin

Abra pgAdmin e inicie sesión con sus credenciales

Paso 2) Crear base de datos de demostración

  • Desde la barra de navegación de la izquierda, haga clic en Bases de datos.
  • Haga clic en Demostración.

Unión interna de pgAdmin

Paso 3) Escriba la consulta

Escriba la siguiente consulta en el editor de consultas:

SELECT Book.name, Price.price
FROM Book
INNER JOIN Price
ON Book.id = Price.id;

Paso 4) Ejecutar la consulta

Haga clic en el botón Ejecutar

Unión interna de pgAdmin

Debería devolver lo siguiente:

Unión interna de pgAdmin

Únete a EQUI

Paso 1) Inicie sesión en su cuenta pgAdmin.

Paso 2)

  • Desde la barra de navegación de la izquierda, haga clic en Bases de datos.
  • Haga clic en Demostración.

pgAdmin EQUI Unirse

Paso 3) Escriba la consulta en el editor de consultas:

SELECT *
FROM Book
JOIN Price ON Book.id = Price.id;

Paso 4) Haga clic en el botón Ejecutar.

pgAdmin EQUI Unirse

Debería devolver lo siguiente:

pgAdmin EQUI Unirse

Unión natural

Paso 1) Inicie sesión en su cuenta pgAdmin.

Paso 2)

  • Desde la barra de navegación de la izquierda, haga clic en Bases de datos.
  • Haga clic en Demostración.

pgAdmin Unión natural

Paso 3) Escriba la consulta en el editor de consultas:

SELECT *
FROM Book
NATURAL JOIN Price;

Paso 4) Haga clic en el botón Ejecutar.

pgAdmin Unión natural

Debería devolver lo siguiente:

pgAdmin Unión natural

pgAdmin Unión interna simple

Paso 1) Inicie sesión en su cuenta pgAdmin.

Paso 2)

  • Desde la barra de navegación de la izquierda, haga clic en Bases de datos.
  • Haga clic en Demostración.

pgAdmin Unión interna simple

Paso 3) Escriba la consulta en el editor de consultas:

SELECT Book.name, Price.price
FROM Book
INNER JOIN Price
ON Book.id = Price.id;

Paso 4) Haga clic en el botón Ejecutar.

pgAdmin Unión interna simple

Debería devolver lo siguiente:

pgAdmin Unión interna simple

Unión externa pgAdmin

A continuación, ejecute las tres variantes de unión externa en pgAdmin siguiendo los pasos que se indican a continuación.

Izquierda combinación externa

Paso 1) Inicie sesión en su cuenta pgAdmin.

Paso 2)

  • Desde la barra de navegación de la izquierda, haga clic en Bases de datos.
  • Haga clic en Demostración.

pgAdmin Unión externa izquierda

Paso 3) Escriba la consulta en el editor de consultas:

SELECT Book.name, Price.price
FROM Book
LEFT JOIN Price
ON Book.id = Price.id;

Paso 4) Haga clic en el botón Ejecutar.

pgAdmin Unión externa izquierda

Debería devolver lo siguiente:

pgAdmin Unión externa izquierda

Unión exterior derecha

Paso 1) Inicie sesión en su cuenta pgAdmin.

Paso 2)

  • Desde la barra de navegación de la izquierda, haga clic en Bases de datos.
  • Haga clic en Demostración.

pgAdmin Unión exterior derecha

Paso 3) Escriba la consulta en el editor de consultas:

SELECT Book.name, Price.price
FROM Book
RIGHT JOIN Price
ON Book.id = Price.id;

Paso 4) Haga clic en el botón Ejecutar.

pgAdmin Unión exterior derecha

Debería devolver lo siguiente:

pgAdmin Unión exterior derecha

Unión externa completa

Paso 1) Inicie sesión en su cuenta pgAdmin.

Paso 2)

  • Desde la barra de navegación de la izquierda, haga clic en Bases de datos.
  • Haga clic en Demostración.

pgAdmin Unión externa completa

Paso 3) Escriba la consulta en el editor de consultas:

SELECT Book.name, Price.price
FROM Book
FULL OUTER JOIN Price
ON Book.id = Price.id;

Paso 4) Haga clic en el botón Ejecutar.

pgAdmin Unión externa completa

Debería devolver lo siguiente:

pgAdmin Unión externa completa

Descargue la Base de Datos utilizada en este Tutorial

Preguntas Frecuentes

Una unión interna (INNER JOIN) devuelve solo las filas que coinciden en ambas tablas. Una unión externa (OUTER JOIN) también conserva las filas que no coinciden, rellenando las columnas faltantes con NULL, y puede ser izquierda, derecha o completa, según la tabla que se desee conservar.

Una operación JOIN combina columnas de diferentes tablas una al lado de la otra utilizando una clave coincidente, ampliando cada fila. Una operación UNION apila verticalmente las filas de dos conjuntos de resultados y requiere el mismo número de columnas.

Una auto-unión une una tabla consigo misma utilizando dos alias de tabla. Es útil para comparar filas dentro de una misma tabla, como por ejemplo, relacionar empleados con los gerentes almacenados en la misma tabla.

Una operación CROSS JOIN devuelve el producto cartesiano, emparejando cada fila de la primera tabla con cada fila de la segunda. No utiliza ninguna condición ON, por lo que puede generar conjuntos de resultados muy grandes rápidamente.

Sí. Puedes encadenar varias cláusulas JOIN en una sola consulta, agregando cada tabla adicional con otra condición JOIN y ON. PostgreSQL Los evalúa para construir un único conjunto de resultados combinados.

Los asistentes de IA como GitHub Copilot sugieren el tipo de unión correcto, escriben la condición ON a partir de claves foráneas y señalan una condición faltante que causaría un producto cartesiano accidental, reduciendo así los errores comunes en las uniones.

Sí. Los asistentes de IA pueden leer un plan de consulta, recomendar índices en las columnas de unión y modificar el orden o las condiciones de la unión. La base de datos sigue garantizando la corrección, así que revise cada sugerencia antes de implementarla en producción.

Ninguna combinación de tablas es siempre la más rápida; el rendimiento depende de los índices, el número de filas y los filtros. Las combinaciones internas (INNER JOIN) en claves indexadas suelen ser eficientes, mientras que las combinaciones externas completas (FULL OUTER JOIN) en tablas grandes sin indexar tienden a ser las más costosas.

Resumir este post con: