连接查询
(1)内连接
内连接查询的是两张表交集的部分。
实例:
人员名单表
职务表
内联查询:
select distinct p.*,t.* from person p inner join part t on p.id=t.id;
结果:
(2)外连接
1.左连接
查询左表所有数据,以及两张表交集部分数据
相当于查询表1(左表)的所有数据,包含表1和表2交集部分数据
实例:
人员名单在左,职务表在右,进行左连接查询:
select distinct p.*,t.* from person p left join part t on p.id=t.id;
运行结果:
2.右查询
查询右表所有数据,以及两张表交集部分数据
相当于查询表1(右表)的所有数据,包含表1和表2交集部分数据
实例:
人员名单在左,职务表在右,进行右连接查询:
select distinct p.*,t.* from person p right join part t on p.id=t.id;
运行结果:
(3)自连接
当前表与自身的连接查询,自连接必须使用表别名
自连接查询,可以是内连接查询,也可以是外连接查询
实例:
现在有一张地区表,查询芜湖县属于哪个市,哪个省,哪个国家。
操作:
mysql> select a1.name '县城',a2.name '城市',a3.name '省份',a4.name '国家'
-> from area a1 left join area a2 on a1.pid=a2.id
-> left join area a3 on a2.pid=a3.id
-> left join area a4 on a3.pid=a4.id where a1.level=3 && a1.name='芜湖县';
查询结果: