• 学习MySQL的第五天:多表查询(基础篇)


    目录

    一,多表关系:

    1,一对多(多对一 )

    2,多对多:

    3,一对一 :

    二,多表查询概述:

     三,多表查询分类

     一,连接查询-内连接

    1,隐式内连接:

    2,显式内连接:

     案例:

    二,连接查询-外连接

    1,左外连接:

    2,右外连接:

     案例:

    三,连接查询-自连接

    四,联合查询-union,union all

    五,子查询

    1,标量子查询:

    2,列子查询:

    3,行子查询:

    4,表子查询:

     六,多表查询案例

    2+66

    一,多表关系:

    项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种:

    ➢一对多(多对一)
    ➢多对多
    ➢一对一
     

    1,一对多(多对一 )


    ➢案例: 部门与员工的关系
    ➢关系:一个部门对应多个员工, 一个员工对应一个部门
    ➢实现:在多的一方建立外键,指向一的一方的主键

    2,多对多:

    ➢案例: 学生与课程的关系
    ➢关系:一个学生可以选修多门课程,一门课程也可以供多个学生选择
    ➢实现:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键
    通过中间表来维护多张表之间的关系。

    3,一对一 :


    ➢案例:用户与用户详情的关系
    ➢关系:一对一关系,多用于单表拆分,将一张表的基础字段放在一 张表中,其他详情字段放在另一 张表中,以提升操作效率
    ➢实现:在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一 的(UNIQUE)

     为了限定两表之间是一对一的关系,所以要有约束。

    二,多表查询概述:

    ●概述: 指从多张表中查询数据
    ●笛卡尔积: 笛卡尔乘积是指在数学中,两个集合A集合和B集合的所有组合情况。(在多表查询时,需要消除无效的笛卡尔积)
     

    笛卡尔乘积:

     消除笛卡尔乘积:

     三,多表查询分类

    ➢连接查询

    内连接:相当于查询A、B交集部分数据
    外连接:


            左外连接:查询左表所有数据,以及两张表交集部分数据
            右外连接:查询右表所有数据,以及两张表交集部分数据
            自连接:当前表与自身的连接查询,自连接必须使用表别名

    ➢子查询

     一,连接查询-内连接

    1,隐式内连接:

    2,显式内连接:

     案例:

    1. 

     起了别名以后,就尽量不要使用原来的表名。

    2.

     inner可以省去。

    二,连接查询-外连接

    1,左外连接:

    2,右外连接:

     案例:

     outer可以去掉

    三,连接查询-自连接

     

     自连接查询,可以是内连接查询,也可以是外连接查询。

    案例:

     

     自连接查询时,一定要给表起别名。不然的话,我们无法弄清条件和字段是哪一张表中的数据。

    四,联合查询-union,union all

    对于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集。

     

     对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。
    union all会将全部的数据直接合并在一起,union 会对合并之后的数据去重。

     

    五,子查询

    概念: SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。

    子查询外部的语句可以是INSERT / UPDATE / DELETE / SELECT的任何一个。

     根据子查询结果不同,分为:

    ➢标量子查询 (子查询结果为单个值)
    ➢列子查询(子 查询结果为一列)
    ➢行子查询(子查询结果为一行)
    ➢表子查询(子查询结果为多行多列)

    根据子查询位置,分为: WHERE之后、FROM之后、SELECT 之后。
     

    1,标量子查询:

    子查询返回的结果是单个值(数字、字符串、日期等) , 最简单的形式,这种子查询成为标量子查询。

    案例:

    分布查询,里面的就叫做子查询 

     

    2,列子查询:

     子查询返回的结果是一列(可以是多行),这种子查询称为列子查询。

     案例:

     

    3,行子查询:

     子查询返回的结果是一行(可以是多列) ,这种子查询称为行子查询。

    案例:

     三种形式;

    4,表子查询:

    子查询返回的结果是多行多列,这种子查询称为表子查询。
     

    案例:

     六,多表查询案例

     课下自己做!!!

  • 相关阅读:
    外文论文的格式规范要求有哪些?
    驱动开发,IO模型之IO多路复用实现过程,select方式
    [LeetCode] 九坤-03. 数字默契考验
    2022/7/26
    线程池源码解析 1.前导_FutureTask源码解析
    SQL面试题练习 —— 用户行为路径分析
    同事读不懂我的代码了,全因我读了这篇文章
    rust 生命周期的问题请教 slqx fromRow的问题
    shiro-登录验证
    Spring MVC数据绑定和表单标签的应用(附带实例)
  • 原文地址:https://blog.csdn.net/m0_63309778/article/details/126125712