En este artículo, vamos a ver métodos de unión en PostgreSQL usando pyscopg2 en Python. Veamos el tipo de combinaciones admitidas en PostgreSQL.
Tipos de unión:
- Unir internamente
- Unión completa (unión externa)
- Unirse a la izquierda
- Unirse a la derecha
- Unión cruzada
Mesas para demostración:
Tabla 1: Tabla de empleados
Tabla 2: Tabla de departamento
El método psycopg2.connect() se utiliza para conectarse a la base de datos y los métodos cursor() y fetchall() para recuperar datos de la base de datos. usamos el método ejecutar() para ejecutar nuestro comando SQL y luego recuperarlo a través del método fetchall().
Unir internamente
La unión interna es uno de los tipos de unión más comunes. La unión interna se utiliza para unir dos tablas según las características comunes entre las filas. devuelve una tabla que tiene características de fila comunes.
Ejecute una declaración SQL:
SELECCIONE tabla1.col1, tabla2.col2…
DESDE la tabla1
UNIÓN INTERNA table2
ON table1.common_field = table2.common_field;
Código:
Python3
import psycopg2 conn = psycopg2.connect( database="EMPLOYEE_DATABASE", user='postgres', password='pass', host='127.0.0.1', port='5432' ) conn.autocommit = True cursor = conn.cursor() sql = '''SELECT * from employee INNER JOIN dept\ ON employee.deptno =dept.deptno ''' cursor.execute(sql) results = cursor.fetchall() for i in results: print(i) conn.commit() conn.close()
Producción:
Unión completa
También se llama ‘Combinación externa completa’, devuelve todos aquellos datos que tienen una coincidencia en las tablas izquierda o derecha. si las filas de ambas tablas no coinciden, el marco de datos resultante reemplazará a NaN con cada columna de las tablas que carezca de una fila coincidente.
Ejecute una declaración SQL:
SELECCIONE tabla1.col1, tabla2.col2…
DESDE la tabla1
UNIÓN COMPLETA table2
ON table1.common_field = table2.common_field;
Código:
Python3
import psycopg2 conn = psycopg2.connect( database="EMPLOYEE_DATABASE", user='postgres', password='pass', host='127.0.0.1', port='5432' ) conn.autocommit = True cursor = conn.cursor() sql = '''SELECT * from employee FULL JOIN dept\ ON employee.deptno =dept.deptno ''' cursor.execute(sql) results = cursor.fetchall() for i in results: print(i) conn.commit() conn.close()
Producción:
Unirse a la izquierda
También se conoce como Left Outer Join, devuelve una tabla que contiene todas las filas del marco de datos izquierdo. si hay filas que no coinciden en la tabla de la izquierda, los datos no coincidentes en la tabla de la derecha se reemplazan por NaN.
Ejecute una declaración SQL:
SELECCIONE tabla1.col1, tabla2.col2…
DESDE la tabla1
UNIRSE A LA IZQUIERDA table2
ON table1.common_field = table2.common_field;
Código:
Python3
import psycopg2 conn = psycopg2.connect( database="EMPLOYEE_DATABASE", user='postgres', password='pass', host='127.0.0.1', port='5432' ) conn.autocommit = True cursor = conn.cursor() sql = '''SELECT * from employee left JOIN dept\ ON employee.deptno =dept.deptno ''' cursor.execute(sql) results = cursor.fetchall() for i in results: print(i) conn.commit() conn.close()
Producción:
Unirse a la derecha
La combinación derecha es exactamente lo contrario de la combinación izquierda. devuelve una tabla que contiene todas las filas de la tabla de la derecha. si hay filas que no coinciden en la tabla de la derecha, los datos no coincidentes en la tabla de la izquierda se reemplazan por NaN.
Ejecute una declaración SQL:
SELECCIONE tabla1.col1, tabla2.col2…
DESDE la tabla1
JUNTA A LA DERECHA table2
ON table1.common_field = table2.common_field;
Código:
Python3
import psycopg2 conn = psycopg2.connect( database="EMPLOYEE_DATABASE", user='postgres', password='pass', host='127.0.0.1', port='5432' ) conn.autocommit = True cursor = conn.cursor() sql = '''SELECT * from employee RIGHT JOIN dept\ ON employee.deptno =dept.deptno ''' cursor.execute(sql) results = cursor.fetchall() for i in results: print(i) conn.commit() conn.close()
Producción:
Unión cruzada
Una combinación cruzada hace coincidir cada fila de la primera tabla con cada fila de la segunda tabla. Si las tablas de entrada tienen columnas A y B, respectivamente, nuestra tabla de salida final tendrá columnas A+B
Ejecute una declaración SQL:
SELECCIONE COLUMNAS… DESDE table1 CROSS JOIN table2
Código:
Python3
import psycopg2 conn = psycopg2.connect( database="EMPLOYEE_DATABASE", user='postgres', password='pass', host='127.0.0.1', port='5432' ) conn.autocommit = True cursor = conn.cursor() sql = '''SELECT employee.empno,employee.ename, dept.deptno from employee cross JOIN dept ''' cursor.execute(sql) results = cursor.fetchall() for i in results: print(i) conn.commit() conn.close()
Producción:
Publicación traducida automáticamente
Artículo escrito por isitapol2002 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA