PostgreSQL: conectar

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

PostgreSQL: conectar

Este tutorial de PostgreSQL explica cómo usar PostgreSQL participar (interno y externo) con gramática, ilustraciones visuales y ejemplos.

describir

PostgreSQL JOINS se utiliza para recuperar datos de varias tablas. Se realiza un JOIN de PostgreSQL cada vez que se unen dos o más tablas en una instrucción SQL.

Hay diferentes tipos de conexiones PostgreSQL:

  • PostgreSQL INNER JOIN (o a veces llamado unión simple)
  • Unión externa izquierda de PostgreSQL (o, a veces, llamada unión izquierda)
  • PostgreSQL RIGHT OUTER JOIN (o, a veces, RIGHT JOIN)
  • PostgreSQL FULL OUTER JOIN (o, a veces, FULL JOIN)

Así que analicemos la sintaxis de JOIN de PostgreSQL, veamos ilustraciones visuales de JOIN de PostgreSQL y exploremos ejemplos de JOIN.

UNIÓN INTERNA (unión simple)

Lo más probable es que haya escrito una declaración que use un INNER JOIN de PostgreSQL. Es el tipo de conexión más común. PostgreSQL INNER JOINS devuelve todas las filas de varias tablas que cumplen la condición de combinación.

sintaxis

La sintaxis para INNER JOIN en PostgreSQL es:

SELECT columns
FROM table1 
INNER JOIN table2
ON table1.column = table2.column;

ilustración visual

En este diagrama visual, PostgreSQL INNER JOIN devuelve el área sombreada:

PostgreSQL INNER JOIN devolverá los registros donde se cruzan table1 y table2.

ejemplo

El siguiente es un ejemplo de una UNIÓN INTERNA de PostgreSQL:

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date
FROM suppliers 
INNER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

Este ejemplo de PostgreSQL INNER JOIN devolverá todas las filas de las tablas Proveedores y Pedidos en las que haya un valor de ID de proveedor coincidente en las tablas Proveedores y Pedidos.

Veamos algunos datos para explicar cómo funciona INNER JOINS:

Tenemos una tabla llamada Proveedores con dos campos (ID del proveedor y Nombre del proveedor). Contiene los siguientes datos:

Identificación del proveedor Nombre del proveedor
10000 IBM
10001 HP
10002 microsoft
10003 nvidia

Tenemos otra tabla llamada orders con tres campos (order_id, supplier_id y order_date). Contiene los siguientes datos:

Solicitar ID Identificación del proveedor fecha de orden
500125 10000 2013/05/12
500126 10001 2013/05/13
500127 10004 2013/05/14

Si ejecutamos la declaración SELECT de PostgreSQL a continuación (con un INNER JOIN):

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date
FROM suppliers
INNER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

Nuestro conjunto de resultados se ve así:

Identificación del proveedor nombre fecha de orden
10000 IBM 2013/05/12
10001 HP 2013/05/13

Las filas de Microsoft y NVIDIA en la tabla de proveedores se omitirán porque los ID de proveedor 10002 y 10003 no existen en ninguna de las tablas. La fila 500127 (order_id) en la tabla de pedidos se omitirá porque el ID de proveedor 10004 no existe en la tabla de proveedores.

sintaxis antigua

Como nota final, vale la pena mencionar que el ejemplo de PostgreSQL INNER JOIN anterior se puede reescribir usando la sintaxis implícita anterior de la siguiente manera (pero aún recomendamos usar la sintaxis de palabra clave INNER JOIN):

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date
FROM suppliers, orders
WHERE suppliers.supplier_id = orders.supplier_id;

izquierda combinación externa

Otro tipo de combinación se denomina combinación externa izquierda de PostgreSQL.Este tipo de unión devuelve todas las filas en el reloj izquierdo especificado en la condición ON, y si solo Une esas filas de otras tablas donde los campos son iguales (se cumplen las condiciones de unión).

sintaxis

La sintaxis para PostgreSQL LEFT OUTER JOIN es:

SELECT columns
FROM table1
LEFT OUTER JOIN table2
ON table1.column = table2.column;

ilustración visual

En esta visualización, PostgreSQL LEFT OUTER JOIN devuelve el área sombreada:

Una UNIÓN EXTERNA IZQUIERDA de PostgreSQL devolverá todos los registros en la tabla 1 y solo aquellos registros en la tabla 2 que se cruzan con la tabla 1.

ejemplo

Aquí hay un ejemplo de una combinación externa izquierda de PostgreSQL:

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date
FROM suppliers
LEFT OUTER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

Este ejemplo de LEFT OUTER JOIN devolverá todas las filas de la tabla Proveedores y solo aquellas filas de la tabla Pedidos donde los campos de combinación son iguales.

Si el valor de id_proveedor en la tabla de proveedores no existe en la tabla de pedidos, todos los campos de la tabla de pedidos aparecerán en el conjunto de resultados como .

Veamos algunos datos para explicar cómo funciona LEFT OUTER JOINS:

Tenemos una tabla llamada Proveedores con dos campos (ID del proveedor y Nombre del proveedor). Contiene los siguientes datos:

Identificación del proveedor Nombre del proveedor
10000 IBM
10001 HP
10002 microsoft
10003 nvidia

Tenemos una segunda tabla llamada pedidos con tres campos (id_pedido, id_proveedor y fecha_pedido). Contiene los siguientes datos:

Solicitar ID Identificación del proveedor fecha de orden
500125 10000 2013/05/12
500126 10001 2013/05/13

Si ejecutamos la siguiente sentencia SELECT (incluyendo LEFT OUTER JOIN):

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date
FROM suppliers
LEFT OUTER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

Nuestro conjunto de resultados se ve así:

Identificación del proveedor Nombre del proveedor fecha de orden
10000 IBM 2013/05/12
10001 HP 2013/05/13
10002 microsoft
10003 nvidia

Dado que se usa LEFT OUTER JOIN, se incluirán las líneas para Microsoft y NVIDIA.Sin embargo, notará que el campo order_date de estos registros contiene un valor.

unión externa derecha

Otro tipo de unión se llama PostgreSQL RIGHT OUTER JOIN.Este tipo de combinación devuelve todas las filas de la tabla DERECHA especificadas en la condición ON y si solo Une esas filas de otras tablas donde los campos son iguales (se cumplen las condiciones de unión).

sintaxis

La sintaxis para PostgreSQL RIGHT OUTER JOIN es:

SELECT columns
FROM table1
RIGHT OUTER JOIN table2
ON table1.column = table2.column;

ilustración visual

En esta visualización, PostgreSQL RIGHT OUTER JOIN devuelve el área sombreada:

Una UNIÓN EXTERNA DERECHA de PostgreSQL devolverá todos los registros en la tabla 2 y solo aquellos registros en la tabla 1 que se cruzan con la tabla 2.

ejemplo

Aquí hay un ejemplo de una combinación externa derecha de PostgreSQL:

SELECT orders.order_id, orders.order_date, suppliers.supplier_name
FROM suppliers
RIGHT OUTER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

Este ejemplo de RIGHT OUTER JOIN devolverá todas las filas de la tabla de pedidos y solo aquellas filas de la tabla de proveedores donde los campos de unión sean iguales.

Si el valor de id_proveedor en la tabla de pedidos no existe en la tabla de proveedores, todos los campos de la tabla de proveedores aparecerán en el conjunto de resultados como .

Veamos algunos datos para explicar cómo funciona RIGHT OUTER JOINS:

Tenemos una tabla llamada Proveedores con dos campos (ID del proveedor y Nombre del proveedor). Contiene los siguientes datos:

Identificación del proveedor Nombre del proveedor
10000 manzana
10001 Google

Tenemos una segunda tabla llamada pedidos con tres campos (id_pedido, id_proveedor y fecha_pedido). Contiene los siguientes datos:

Solicitar ID Identificación del proveedor fecha de orden
500125 10000 2013/08/12
500126 10001 2013/08/13
500127 10002 2013/08/14

Si ejecutamos la siguiente sentencia SELECT (con RIGHT OUTER JOIN):

SELECT orders.order_id, orders.order_date, suppliers.supplier_name
FROM suppliers
RIGHT OUTER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

Nuestro conjunto de resultados se ve así:

Solicitar ID fecha de orden Nombre del proveedor
500125 2013/08/12 manzana
500126 2013/08/13 Google
500127 2013/08/14

Debido a que se utilizó RIGHT OUTER JOIN, se incluirá la fila para 500127 (order_id).Sin embargo, notará que el campo Nombre del proveedor del registro contiene valor.

Unión exterior completa

Otro tipo de combinación se denomina UNIÓN EXTERNA COMPLETA de PostgreSQL. Este tipo de combinación devuelve todas las filas de la tabla de la izquierda y la tabla de la derecha con valores nulos donde no se cumple la condición de combinación.

sintaxis

La sintaxis para PostgreSQL FULL OUTER JOIN es:

SELECT columns
FROM table1
FULL OUTER JOIN table2
ON table1.column = table2.column;

ilustración visual

En esta visualización, PostgreSQL FULL OUTER JOIN devuelve el área sombreada:

PostgreSQL FULL OUTER JOIN devolverá todos los registros en table1 y table2.

ejemplo

El siguiente es un ejemplo de una UNIÓN EXTERNA COMPLETA de PostgreSQL:

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date
FROM suppliers
FULL OUTER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

Este ejemplo de FULL OUTER JOIN devolverá todas las filas de la tabla de proveedores y todas las filas de la tabla de pedidos, y siempre que no se cumpla la condición de unión, Se expandirá a esos campos en el conjunto de resultados.

Si el valor de id_proveedor en la tabla de proveedores no existe en la tabla de pedidos, todos los campos de la tabla de pedidos aparecerán en el conjunto de resultados como .Si el valor de id_proveedor en la tabla de pedidos no existe en la tabla de proveedores, todos los campos de la tabla de proveedores aparecerán en el conjunto de resultados como .

Veamos algunos datos para explicar cómo funcionan FULL OUTER JOINS:

Tenemos una tabla llamada Proveedores con dos campos (ID del proveedor y Nombre del proveedor). Contiene los siguientes datos:

Identificación del proveedor Nombre del proveedor
10000 IBM
10001 HP
10002 microsoft
10003 nvidia

Tenemos una segunda tabla llamada pedidos con tres campos (id_pedido, id_proveedor y fecha_pedido). Contiene los siguientes datos:

Solicitar ID Identificación del proveedor fecha de orden
500125 10000 2013/08/12
500126 10001 2013/08/13
500127 10004 2013/08/14

Si ejecutamos la siguiente declaración SQL (incluyendo FULL OUTER JOIN):

SELECT suppliers.supplier_id, suppliers.supplier_name, orders.order_date
FROM suppliers
FULL OUTER JOIN orders
ON suppliers.supplier_id = orders.supplier_id;

Nuestro conjunto de resultados se ve así:

Identificación del proveedor Nombre del proveedor fecha de orden
10000 IBM 2013/08/12
10001 HP 2013/08/13
10002 microsoft
10003 nvidia
2013/08/14

Se incluirán filas para Microsoft y NVIDIA porque se utiliza una UNIÓN EXTERNA COMPLETA.Sin embargo, notará que el campo order_date de estos registros contiene un valor.

Dado que se usa FULL OUTER JOIN, también se incluirá la fila para el Id. de proveedor 10004.Sin embargo, notará que los campos Id. de proveedor y Nombre de proveedor para estos registros contienen valor.

(Visited 14 times, 1 visits today)