zoukankan      html  css  js  c++  java
  • 多表数据查询

    多表关联查询

    先确定数据要用到哪些表。

    将多个表先通过笛卡尔积变成一个表。

    然后去除不符合逻辑的数据(根据两个表的关系去掉)。

    最后当做是一个虚拟表一样来加上条件即可。

    笛卡尔积,通俗点说就是指包含两个集合中任意取出两个元素构成的组合的集合.

    MySQL的多表查询(笛卡尔积原理)

    多表连接 :---> 两链表的关系

    -- 两个表的交际 : inner join 简写 join 内连接

    --select * from 表1 join 表2 on 表1.id= 表2.id

    左连接  : 
    
    -- left outer join  简写 left join     以左边表为主,右边的表为副关联查询,结果以左边为准
    
    -select * from A LEFT join B on A.id = B.id
    
    筛选 A表中的数据但又不存在B表的关联数据
    
    select * from A left join B On A.id = B.id where B.id is null;
    
    右连接 : 
    只需要把左连接的两个关联表替换一下位置即可实现右连接的效果
    以B为主表,A为副表关联查询,查询结果以B表数据为基准;关键字:RIGHT OUTER JOIN 可简写成 RIGHT JOIN 
    
    SELECT * FROM tb_user A RIGHT JOIN tb_dept B ON A.dept_id = B.dept_id
    
    关联条件时,其查询结果与内连接相同 ;无关联条件时,其结果集为两表的笛卡尔积
    
    SELECT * FROM tb_user A, tb_dept B WHERE A.dept_id = B.id;
    '''
    ## sql命令 :
    
    ### 执行顺序 :
    
    #### 	from > join > on(筛选器) > where > group by(分组)
    
    ####     > avg (聚合函数) > having( 衰选)
    
    ####     > select > distinct > order by >limit(选取条数)
    
    #### 1.查询语句都是从from开始执行的,在执行过程中,每个步骤都会为下一个步骤生成一个虚拟表,这个虚拟表将作为下一个执行步骤的输入
    
    ####	where 和 on 的区别: 
    
    ```python
     ON:针对关联表进行条件筛选,不会影响结果集的数量和主表数据。
    
     WHERE:针对结果集进行条件筛选,会影响结果集的数量。
    
  • 相关阅读:
    开源 Serverless 里程碑:Knative 1.0 来了
    以一致的体验交付和管理云原生多集群应用
    iLogtail使用入门K8S环境日志采集到SLS
    如何在golang代码里面解析容器镜像
    mac vmware 无法复制粘贴
    使用vi编辑时上下左右方向键被转化为A、B、C、D
    left join 和 left outer join 的区别
    设计模式之 适配器模式
    设计模式之 命令模式
    设计模式学习之 策略模式
  • 原文地址:https://www.cnblogs.com/shaozheng/p/11767917.html
Copyright © 2011-2022 走看看