1、名词解释
a)内连接:自然连接,只有两个表都有的,互相匹配的才会显示到结果集中;
b)外连接有三种:
b1)左外连接:左边的表显示全部
b2)右外连接:右边的表显示全部
b3)全外连接:左右两个表全部显示
2、使用navicat for mysql创建两个数据表:z_person、z_person_ext;
z_person中包括人员id、人员姓名、人员所在部门id,并插入insert数据如下:
z_person_ext为z_person的其他信息:电话mobile、邮箱email、年龄age,如图:
3、内连接查询
select * from z_person as a ,z_person_ext as b where a.p_id=b.p_id;
查询结果,仅显示在两个表中都有的三条数据:
4、左外连接
select * from z_person as a LEFT JOIN z_person_ext as b on a.p_id=b.p_id;
查询结果显示主表z_person中的全部,共5条记录,如图:
5、右外连接
select * from z_person as a RIGHT JOIN z_person_ext as b on a.p_id=b.p_id;
查询结果显示副表z_person_ext的全部信息,共5条记录,如图:
6、全连接,查询两个表中的全部数据
select * from z_person as a left JOIN z_person_ext as b on a.p_id=b.p_id
union
select * from z_person as a RIGHT JOIN z_person_ext as b on a.p_id=b.p_id
显示结果共有7条记录,如图:
由于mysql不支持full join 查询,所以将其转化为 left join on +union +right join on实现。
在sql server中采用full jion :
select * from z_person as a FULL JOIN z_person_ext as b on a.p_id=b.p_id
希望以上的实例内容对大家有帮助!