postgresql-多表连接
- 内连接查询
- 左外连接查询
- 右外连接查询
- 全外连接查询
- 交叉连接查询
- 简写
- 总结
内连接查询
内连接用于返回两个表中匹配的数据行,使用关键字INNER JOIN表示,也可以简写成JOIN;
select
e.first_name ,
d.department_id
from
cps.public.employees e
join cps.public.departments d on
e.department_id = d.department_id;
左外连接查询
左外连接返回左表中所有的数据行;对于右表,如果没有匹配的数据,显示为空值。左外连
接使用关键字 LEFT OUTER JOIN 表示,也可以简写成 LEFT JOIN
右外连接查询
右外连接返回右表中所有的数据行;对于左表,如果没有匹配的数据,显示为空值。右外连
接使用关键字 RIGHT OUTER JOIN 表示,也可以简写成 RIGHT JOIN
全外连接查询
全外连接等效于左外连接加上右外连接,返回左表和右表中所有的数据行。全外连接使用关
键字 FULL OUTER JOIN 表示,也可以简写成 FULL JOIN。
交叉连接查询
select
concat(t1,'*',t2,'=',t1*t2)
from generate_series(1,9) t1
cross join generate_series(1,9) t2;
简写
/*
* 由于 employees 表和 departments 表中的 department_id 字段名称和类型都相同,可以使用USING连接查询
*/
select
e.first_name ,
d.department_name
from cps.public.employees e
join cps.public.departments d
using (department_id);
/*上述查询可以使用以下写法*/
select
e.first_name ,
d.department_name
from cps.public.employees e
join cps.public.departments d
on e.department_id = d.department_id ;
总结