码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 学习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,表子查询:

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

    案例:

     六,多表查询案例

     课下自己做!!!

  • 相关阅读:
    《Java并发编程的艺术》读书笔记 - 第六章 - Java并发容器和框架
    【游戏建模全流程】使用ZBrush制作龙模型
    安装anaconda时控制台conda-version报错
    国产CAE软件(流体、结构仿真、优化、数据建模)免费线上培训课程报名通知
    学习ASP.NET Core Blazor编程系列二十七——JWT登录(1)
    Pulsar-Pulsar 之 pulsar manager
    基于混沌映射的自适应樽海鞘群算法-附代码
    快速识别你家的猫猫狗狗,教你用ModelBox开发AI萌宠应用
    并发编程二、CPU多级缓存架构与MESI协议的诞生
    SpringMvc学习之旅与Thymeleaf的常用用法
  • 原文地址:https://blog.csdn.net/m0_63309778/article/details/126125712
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号