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:针对结果集进行条件筛选,会影响结果集的数量。
    
  • 相关阅读:
    通过docker把本地AspNetCore WebAPI镜像打包到阿里云镜像仓库并在centos部署
    记一次Java AES 加解密 对应C# AES加解密 的一波三折
    .Net Core MVC实现自己的AllowAnonymous
    Net Core 中间件实现修改Action的接收参数及返回值
    手把手教你实现自己的abp代码生成器
    C# 实现Jwtbearer Authentication
    vs2017调试浏览器闪退
    ABP 邮箱设置
    FastJson反序列化获取不到值
    内网环境下搭建maven私服小技巧
  • 原文地址:https://www.cnblogs.com/shaozheng/p/11767917.html
Copyright © 2011-2022 走看看