其他分享
首页 > 其他分享> > (10)分组后筛选、笛卡尔积现象、三表连接

(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