¿Qué son las uniones de PostgreSQL?
Las JOIN de PostgreSQL se utilizan para recuperar datos de más de una tabla. Con JOINs, es posible combinar las declaraciones SELECT y JOIN en una sola declaración. Se agrega una condición JOIN a la declaración y se devuelven todas las filas que cumplen las condiciones.
Los valores de diferentes tablas se combinan en función de columnas comunes. La columna común es principalmente una clave principal en la primera tabla y una clave externa de la segunda tabla.
En este tutorial de PostgreSQL, aprenderá:
- ¿Qué son las uniones de PostgreSQL?
- Tipos de combinaciones
- Uniones internas
- Theta Join
- EQUI Únete
- Unión natural
- Uniones externas
- IZQUIERDA COMBINACIÓN EXTERNA
- UNIÓN EXTERIOR DERECHA
- Unión externa completa
- Usando pgAdmin
- Uniones internas
- Theta Join
- EQUI Únete
- Unión natural
- INNER JOIN (unión simple)
- Uniones externas
- IZQUIERDA COMBINACIÓN EXTERNA
- UNIÓN EXTERIOR DERECHA
- Unión externa completa
Tipos de combinaciones
Hay dos tipos de JOIN en PostgreSQL:
- Uniones internas
- Unión externa
Uniones internas
Hay 3 tipos de combinaciones internas:
- Theta unirse
- Unión natural
- EQUI unirse
Theta Join
Una combinación theta permite unir dos tablas en función de la condición representada por theta. Las combinaciones Theta pueden funcionar con todos los operadores de comparación. En la mayoría de los casos, la combinación theta se conoce como combinación interna.
La combinación theta es el tipo más básico de combinación. Devolverá todas las filas de las tablas donde se cumple la condición JOIN.
Sintaxis:
SELECT columnsFROM table-1INNER JOIN table-2ON table-1.column = table-2.column;
Considere las siguientes tablas de la base de datos de demostración:
Libro:
Precio:
Queremos ver el nombre de cada libro y el precio correspondiente. Podemos ejecutar el siguiente comando:
SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Esto devolverá lo siguiente:
Solo 3 filas cumplieron la condición de unión.
EQUI Únete
La combinación EQUI nos proporciona una forma de unir dos tablas en función de la relación de clave principal / clave externa. Por ejemplo:
SELECT *FROM BookJOIN Price ON Book.id = Price.id;
Esto devolverá lo siguiente:
Se han devuelto registros de ambas tablas en función de las columnas comunes, es decir, la columna id.
Unión natural
Este tipo de combinación nos proporciona otra forma de escribir una combinación EQUI. Podemos mejorar nuestro ejemplo anterior agregando la palabra clave NATURAL como se muestra a continuación:
SELECT *FROM BookNATURAL JOIN Price;
Esto devolverá lo siguiente:
Solo se ha devuelto una columna de identificación. NATURAL JOIN pudo notar que la columna id es común en las dos tablas. Solo se devolvió uno.
Uniones externas
Hay tres tipos de JOIN externos en PostgreSQL:
- Izquierda combinación externa.
- Unión exterior derecha.
- Unión externa completa
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 columnsFROM table-1LEFT OUTER JOIN table-2ON 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.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;
Esto devuelve lo siguiente:
Se han devuelto las 4 filas de la tabla Libro. Solo 3 filas de la tabla de precios cumplieron la condición de unión. Por eso fueron devueltos. El último libro no tiene un valor de precio correspondiente.
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 columnsFROM table-1RIGHT OUTER JOIN table-2ON table-1.column = table-2.column;
Por ejemplo:
SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;
Esto devuelve lo siguiente:
Se han devuelto todas las filas de la tabla de precios. Solo se devolvieron las filas de la tabla Libro que cumplieron la condición de combinación. La 3 ª fila tiene ningún valor para el nombre ya que se ha encontrado ninguna coincidencia.
Unión externa completa
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 columnsFROM table-1FULL OUTER JOIN table-2ON table-1.column = table-2.column;
Por ejemplo:
SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;
Esto devuelve lo siguiente:
Se han devuelto todas las filas de todas las tablas, con nulos donde no se encontró ninguna coincidencia.
Usando pgAdmin
Las tareas anteriores se pueden realizar en pgAdmin de la siguiente manera:
Uniones internas
Theta Join
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 Demo.
Paso 3) Escriba la consulta en el editor de consultas:
SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Paso 4) Haga clic en el botón Ejecutar.
Debería devolver lo siguiente:
EQUI Únete
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 Demo.
Paso 3) Escriba la consulta en el editor de consultas:
SELECT *FROM BookJOIN Price ON Book.id = Price.id;
Paso 4) Haga clic en el botón Ejecutar.
Debería devolver lo siguiente:
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 Demo.
Paso 3) Escriba la consulta en el editor de consultas:
SELECT *FROM BookNATURAL JOIN Price;
Paso 4) Haga clic en el botón Ejecutar.
Debería devolver lo siguiente:
INNER JOIN (unión 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 Demo.
Paso 3) Escriba la consulta en el editor de consultas:
SELECT Book.name, Price.priceFROM BookINNER JOIN PriceON Book.id = Price.id;
Paso 4) Haga clic en el botón Ejecutar.
Debería devolver lo siguiente:
Uniones externas
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 Demo.
Paso 3) Escriba la consulta en el editor de consultas:
SELECT Book.name, Price.priceFROM BookLEFT JOIN PriceON Book.id = Price.id;
Paso 4) Haga clic en el botón Ejecutar.
Debería devolver lo siguiente:
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 Demo.
Paso 3) Escriba la consulta en el editor de consultas:
SELECT Book.name, Price.priceFROM BookRIGHT JOIN PriceON Book.id = Price.id;
Paso 4) Haga clic en el botón Ejecutar.
Debería devolver lo siguiente:
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 Demo.
Paso 3) Escriba la consulta en el editor de consultas:
SELECT Book.name, Price.priceFROM BookFULL OUTER JOIN PriceON Book.id = Price.id;
Paso 4) Haga clic en el botón Ejecutar.
Debería devolver lo siguiente:
Resumen:
- En PostgreSQL, usamos JOIN cuando necesitamos recuperar valores de más de una tabla.
- INNER JOIN es el tipo más básico de JOIN. Devuelve todos los registros donde se cumplió la condición JOIN especificada.
- LEFT OUTER JOIN devuelve todas las filas de la tabla de la izquierda y solo las filas de la otra tabla donde se ha cumplido la condición de combinación.
- RIGHT OUTER JOIN devuelve todas las filas de la tabla de la derecha y solo las filas de la otra tabla donde se ha cumplido la condición de unión.
- Este tipo de JOIN devuelve todas las filas de la tabla de la izquierda y todas las filas de la tabla de la derecha con valores nulos donde no se cumple la condición de combinación.
Descargue la base de datos utilizada en este tutorial