(10)分组后筛选、笛卡尔积现象、三表连接
作者:互联网
分组后的筛选 GROUP BY 分组后的结果集 GROUP BY之后 having
连接查询:
含义:(多表查询),当查询的字段来自于多个表时,就会用到连接查询
笛卡尔积现象:表1 有m行,表2 有n行, 结果 = m*n行
发生的原因:没有有效的连接条件
如何避免:添加有效的连接条件
三表连接:
需求:查询员工对应的工种名和部门名
select
last_name,job_title,department_name
from
jobs j,employees e,departments d
WHERE
e.job_id=j.job_id and e.department_id
分类:
按年代分类:
sq192标准:仅仅支持内连接
sq199标准【推荐使用】:支持内连接+外连接+交叉连接
按功能分类:
内连接:
等值连接
非等值连接
自连接
需求:查询女神名和对应的男神名
select bt.name,bo.boyName from beauty bt,boys bo where bt.boyfriend_id=bo.id;
sq192标准的等值连接
等值连接:
@1 多表等值连接,结果为多表的交际部分
@2 n表连接的时候,至少需要n-1个连接条件
@3 多表连接的顺序没有要求
@4一般需要对表起别名
@5 可以搭配前面所学的所有子句进行使用,比如:排序,分组,筛选
外连接:
select 查询列表 from 表1 别名 连接类型 join 表2 on 连接条件
特点:
@1 外连接查询的结果为主表中的所有记录
如果从表中有和它匹配的值,则显示匹配的值
如果 没有 ,则显示null
@2 外连接分类:
左外连接:left join 左边的表是主表
右外连接:right join 右边的表是主表
@3 左外和右外交换两个表的顺序,可以实现同样的效果
@4 全外连接:full 全外连接=内连接的结果+表1中有的 表2中没有得+表2中有的 表1中没有的结果
select b.*,bo.* from beauty b left JOIN boys bo on b.boyfriend_id=bo.id;
select b.*,bo.* from beauty b right JOIN boys bo on b.boyfriend_id=bo.id;
标签:10,多表,笛卡尔,bo,连接,三表,查询,id,select 来源: https://blog.csdn.net/weixin_44847304/article/details/90716785