conexión de varias tablas posstgresql

unir internamente

La conexión interna se utiliza para devolver las filas de datos coincidentes en las dos tablas, utilizando la palabra clave INNER JOIN, que también se puede abreviar como JOIN.
inserte la descripción de la imagen aquí

select 
-- 内连接
d.department_id ,e.first_name ,d.department_name 
from employees e 
join departments d on e.department_id =d.department_id; 
-- 内连接也可以写成如下sql
select d.department_id ,e.first_name ,d.department_name 
from employees e,departments d
where e.department_id =d.department_id ;

izquierda combinación externa

La combinación externa izquierda devuelve todas las filas de datos de la tabla izquierda; para la tabla derecha, si no hay datos coincidentes, se muestra como un valor nulo. La conexión externa izquierda
está representada por la palabra clave LEFT OUTER JOIN, que también se puede abreviar como LEFT JOIN.
inserte la descripción de la imagen aquí

-- 左外连接
select 
d.department_id ,e.employee_id ,e.first_name ,d.department_name 
from employees e 
left join departments d on e.department_id =d.department_id
where d.department_id isnull ; 

Úselo en para condiciones de conexión entre tablas y donde para condiciones de filtro.

-- 查询出IT部门的信息
select 
d.department_id ,
e.employee_id ,
e.first_name ,
d.department_name 
from employees e 
left join departments d 
on e.department_id =d.department_id 
where d.department_name ='IT';

inserte la descripción de la imagen aquí

unión exterior derecha

select 
d.department_id ,
e.employee_id ,
e.first_name ,
d.department_name 
from employees e 
right join departments d 
on e.department_id = d.department_id 

inserte la descripción de la imagen aquí
La combinación externa derecha devuelve todas las filas de datos de la tabla derecha; para la tabla izquierda, si no hay datos coincidentes, se muestra como un valor nulo. La conexión externa derecha está representada por la palabra clave RIGHT OUTER JOIN , que también se puede abreviar como RIGHT JOIN.

Resumir

inserte la descripción de la imagen aquí

conexión cruzada

Cuando una consulta de unión no especifica ninguna condición de unión, se denomina unión cruzada. La conexión cruzada está representada por la palabra clave CROSS JOIN
, también conocida como producto cartesiano.
El producto cartesiano de dos tablas equivale a una combinación por pares de todas las filas de una tabla y todas las filas de la otra tabla, y el número de resultados es la multiplicación del número de filas
de las dos tablas.
inserte la descripción de la imagen aquí

Tabla de multiplicar nueve nueve

-- generate_series:产生序列,
select concat(t1,'*',t2,'=',t1*t2)
from generate_series(1,9) t1
cross join generate_series(1,9) t2;

inserte la descripción de la imagen aquí

conexión natural

Para consultas de unión, si se cumplen las siguientes condiciones, puede usar USING en lugar de la cláusula ON para simplificar la entrada de las condiciones de unión:

  • La condición de conexión es una conexión equivalente, es decir, t1.col1 = t2.col1 ;
  • Las columnas de las dos tablas deben tener el mismo nombre y tipo, es decir, los tipos de t1.col1 y t2.col1 son los mismos.
  • Dado que el nombre y el tipo del campo id_departamento son los mismos tanto en la tabla de empleados como en la tabla de departamentos, puede utilizar la
    consulta de unión USING:
select *
from employees e 
join departments d 
using(department_id);

igual

select *
from employees e 
join departments d 
on e.department_id =d.department_id ;

Si la cláusula USING incluye todos los campos con el mismo nombre y el mismo tipo en las dos tablas, puede usar una
unión natural más simple ( NATURAL JOIN ) para expresar. Por ejemplo, la tabla de empleados y la tabla de departamentos tienen dos campos con el mismo nombre y tipo:
id_departamento y id_gerente . Si realiza una combinación de equivalencia basada en estos dos campos, puede utilizar una combinación natural:

select 
d.department_id,
d.department_name ,
e.first_name ,
e.last_name 
from employees e 
natural join departments d ;

autounirse

Conexión (Self Join) significa que ambos lados del operador de conexión son la misma tabla, es decir, conectan una tabla consigo misma. En esencia, la autounión no tiene nada de especial
y se utiliza principalmente para tratar tablas que tienen referencias de clave externa a sí mismas. Por ejemplo, el campo del administrador (manager_id) en la tabla de empleados es una columna de clave externa que apunta al campo de ID del empleado (employee_id)
en la propia tabla de empleados .
Si desea mostrar los nombres de los empleados junto con el nombre de su gerente, puede hacerlo con una autounión:

select 
e.first_name ,
e.last_name ,
m.first_name as manager_first_name,
m.last_name  as manager_last_name
from employees e 
left join employees m 
on e.manager_id = m.employee_id ;

inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/Java_Fly1/article/details/132353849
Recomendado
Clasificación