以下为Postgresql实际操作测试数据,主要为了记录总结个人所得,可供大家参考,欢迎大家指出不当之处。
示例表:
表a,表b,表c,修改后的表c(表d)
1.内连接-inner:
数学中的交集,使用比较运算符(= < >)根据每个表共有的列的值匹配两个表中的行
关键字:inner join on
语句:
select *(column1,column2,colunmnN)
from 表A
inner join 表B
on
表A.连接字段=表B.连接字段;
实例1:内连接表a和表b
语句:select * from a inner join b on a.a_id = b.b_id;
结果:
结论:
- 根据连接字段ID返回两个表中所有相同字段名、字段值
实例2:内连接表a和表c
语句:select * from a inner join c on a.a_id = c.c_id;
结果:
实例3:内连接表a和表b,使用“>”号
语句:select * from a inner join b on a.a_id > b.b_id;
结果:
结论:
- 取出表a中一行中的id依次和表b中的每一行的id比较
实例4:内连接表a和表b,使用“<”号
语句:select * from a inner join b on a.a_id < b.b_id;
结果:
实例5:内连接表a和表b,指定字段显示
语句:select a_id,a_name,a_part,b_name,b_part from a inner join b on a.a_id = b.b_id;
结果:
实例6:内连接表a和表b,指定字段并命名显示字段
语句:select a_id as id,a_name,a_part,b_name,b_part from a inner join b on a.a_id = b.b_id;
结果:
总结
只显示根据条件匹配相同的字段值a_id,b_id的行数据
说明:组合两个表中的记录,返回关联字段相符的记录,也就是返回两个表的交集(阴影)部分。
2.左连接-left(左外连接)
关键字:left join on / left outer join on
语句:
select *(column1,column2,colunmnN)
from 表A
left join 表B
on
表A.连接字段=表B.连接字段;
实例1:左连接表a和表b(左边表-表a,右边表-表b)
语句: Select * from a left join b on a.a_id = b.b_id;
结果:
实例2:左连接表a和修改后的表c(表d)
语句: Select * from a left join c on a.a_id = c.c_id;
结果:
结论:
只要条件字段值id相同,就会显示所有的行数据,不管其他的字段值是否与之相同。简而言之,只要a_id和c_id值相同,就会显示对应的行数据!!!
实例3:左连接表a和表b,使用“>”号
语句: select *