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
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 |
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 | |
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
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,
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 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
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