MySQL中的连接查询
文章目录
前言
在关系数据库中,一个实例数据库可能包含多张关系表,这些关系表可能存在某种联系,我们可以根据这些联系,将表与表连接起来。这种查询设计称为连接查询。连接查询本质上由广义笛卡尔积演变而来的。
基本定义:通过连接运算符进行多表的查询
图示描述:
一、分类:
内连接、外连接、交叉连接。
图示描述:
二、内连接
是通过比较运算符(join或inner join)查询两张表的关联数据,只返回符合条件的行。
1.1 结果集中仅包括匹配的数据
1.2 采用inner join关键字
1.3 一般连接条件都是按照外码约束来建立的
图示描述:
三、外连接
外连接分为左外连接、右外连接和全外连接。
1.1 左外连接
左外连接使用 left join 或 left outer join 关键字,执行结果中包含左表所有行,如果左表中某行在右表没有匹配,则结果中对应行右表的部分全部为空(NULL)。
图示描述:
1.2 右外连接
右外连接使用 right join 或 right outer join 关键字,执行结果中包含右表所有行,如果右表中某行在左表没有匹配,则结果中对应行左表的部分全部为空(NULL)。
图示描述:
1.3 全外连接
全外连接使用 full join 或 full outer join 关键字,执行结果中包含左表和右表所有行,如果右表中某行在左表没有匹配,则结果中对应行左表的部分全部为空(NULL),反之亦然。
图示描述:
四、交叉连接
1.1 使用cross join关键字
1.2 用法:
(1)执行 select * from A cross join B 的结果集,实际上就是关系A和关系B的笛卡尔积。
(2)执行 select * from A cross join B where A.xx=B.xx …; 的结果集,实际上就是关系A和关系B的θ连接(内连接)。