MySQL基础篇 - 多表查询

news2024/11/18 19:48:33

01 多表关系

【1】概念:项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各表结构之间也存在着各种联系,基本上分为三种:一对多(多对一),多对多(要建立中间表),一对一。

02 多表查询概述

【1】概念:多表查询就是指在多张表中查询数据

【2】如果直接查询有多表关系的表:

         例如:select * from emp , dept; 则查询出来的结果将是两张表的笛卡尔积个数据。

         但其实我们只需要一些数据,则此时我们可以通过外键关系在where里面写上条件即可(消除无效笛卡尔积)

         例如:select * from emp , dept where emp.dept_id = dept.id;

【3】多表查询的分类:

03 内连接

【1】内连接:查询两个表有外键关联的数据,如果子表中某个外键数据没有与父表主键关联的值则不会被查出来。

【2】分类:

   ① 隐式内连接:select 字段列表 from 表1 as 别名,表2 as 别名 where 外键关系;

   ② 显示内连接:select 字段列表 from 表1 as 别名 inner join 表2 as 别名 on 外键关系;

【说明】:在多表查询时,我们通常会给表取别名,注意:一旦我们给表取别名后不能再直接使用表名了。

04 外连接

【1】左外连接:查询表1的数据,以及表1和表2交集部分的数据。

【2】右外连接:查询表2的数据,以及表1和表2交集部分的数据。

【3】分类:外连接:如果子表中某个外键数据没有与父表主键关联的值也会被查出来。

   ① 左外连接:select 字段列表 form 表1 as 别名 left outer join 表2 as 别名 on 外键关系;

   ② 右外连接:select 字段列表 form 表1 as 别名 right outer join 表2 as 别名 on 外键关系;

【4】说明:下图案例中很好的说明了:

         内连接:如果子表中某个外键数据没有与父表主键关联的值则不会被查出来。

         外连接:如果子表中某个外键数据没有与父表主键关联的值也会被查出来。

05 自连接

【1】场景:表中的外键关联的是自己所在表的某个字段,例如:查询某个员工的领导,而领导也是员工。

【2】语法:其实就是利用取别名,把一张表看成两张表,可以内查询也可以外查询。

    ① 内连接(隐式写法):select 字段列表 form 表一 别名,表一 别名 where 外键关系;

    ② 外连接(左外连接):select 字段列表 from 表一 别名 left outer join 表一 别名 on 外键关系;

06 联合查询

【1】概念:union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集。

【2】注意:

   ① 对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。

       (比如查多张成绩单上满足某条件的数据,然后把它合并起来形成一张表)

   ② union all会将全部的数据直接合并在一起,union会对合并之后的数据去重。

【3】语法:

         select 字段列表 from 表a ...

         union all/union

         select 字段列表 from 表b ...

07 子查询

【1】概念:SQL语句中嵌套select语句,称为嵌套查询,即子查询。

【2】子查询外部的语句可以是insert/update/delete/select的任何一个,select会用得多一些。

【3】举例:select * from t1 where column1 = (select column1 from t2)

【4】分类:根据子查询的结果分为:

   ① 标量子查询(子查询结果为单个值)

   ② 列子查询(子查询结果为一列)

   ③ 行子查询(子查询结果为一行)

   ④ 表子查询(子查询结果为多行多列)

【5】根据子查询位置,分为:where之后,form之后,select之后。

07_01 标量子查询

【1】标量子查询:子查询返回的查询结果是单个值(数字,字符串,日期等)

【2】标量子查询中常用的操作符:=,<>,>,>=,<,<=

07_02 列子查询

【1】列子查询:子查询的结果是一列(可以是多行)

【2】列子查询中常用的操作符:in,not in,any,some,all

【3】in是只要满足其中的一种,any是只要=,<>,>,>=,<,<= 其中一种

07_03 行子查询

【1】行子查询:返回的结果是一行(可以是多列)

【2】行子查询中常用的操作符:=,<>,in,not in

【3】注意:a = 12 && b = 13 可以写成 (a, b)= (12, 13),因此下图示例中的写法才是那样。

07_04 表子查询

【1】表子查询:返回的结果是多行多列的。

【2】表子查询常用的操作符:in

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2184088.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

安装epic games错误码2738解决(安装ue错误码2738)

这个错误不好找到解决方案&#xff0c;尝试删除注册表以及通过电脑管家下载安装都不生效&#xff0c;仍然会错误2738。直到找到了这个解决方案。 1.cmd然后右键以管理员身份运行&#xff0c; 2.cd %windir%\syswow64进入该目录 3.reg delete “HKCU\SOFTWARE\Classes\Wow6432No…

HBuilder X中搭建vue-cli项目(一)

一、前端项目结构 传统结构&#xff1a;一个项目中有很多HTML文件,一个HTML文件就是一个网页。他们之间彼此独立,互相没有联系,我们每次导入其它前端文件时,需要给每一个HTML文件都导入,需要导入的文件一旦过多,就会很麻烦,并且整体看来很乱。 现代结构&#xff1a;在一个nod…

骨传导耳机哪款值得买?五款好评优选骨传导耳机分享!

科技发展的今天&#xff0c;产品设计的重心逐渐转向满足用户的行为与健康需求。耳机&#xff0c;已成为现代生活中不可缺少的电子配件&#xff0c;无论是出于日常习惯、隐私保护&#xff0c;还是在公共场合的礼貌&#xff0c;耳机都与我们形影不离。 随着耳机在日常生活中的地…

用 API 实现 AI 视频摘要:动手制作属于你的 AI 视频小助手

AI 视频摘要想必你一定不陌生&#xff0c;在各大视频平台&#xff0c;比如 B 站&#xff0c;评论区的 AI 视频小助手就如雨后春笋般遍地都是。 今天&#xff0c;让我们来填了这“护城河”&#xff0c;站到墙上看一看它的全貌。 简而言之&#xff0c;AI 视频摘要的工作流程如下&…

使用socket编程来实现一个简单的C/S模型(TCP协议)

前置 所使用到的函数查看本专栏中&#xff1a;socket的概念和常用函数介绍 1.C/S模型 - TCP 下图是基于TCP协议的客户端/服务器程序的一般流程&#xff1a; 服务器调用socket()、bind()、listen()完成初始化后&#xff0c;调用accept()阻塞等待&#xff0c;处于监听端口的状…

第7课-C/C++ 高效内存管理

1. C/C 内存分布 在 C 和 C 中&#xff0c;内存可以分为多个区域&#xff0c;包括栈、堆、数据段、代码段等。这些区域分别用来存储不同类型的数据。通过以下示例代码&#xff0c;我们可以直观地理解这些区域的作用&#xff1a; int globalVar 1; // 全局变量 sta…

停止模式下USART为什么可以唤醒MCU?

在MCU的停止模式下&#xff0c;USART之类的外设时钟是关闭的&#xff0c;但是USART章节有描述到在停止模式下可以用USART来对MCU进行唤醒&#xff1a; 大家是否会好奇在外设的时钟被关闭的情况下&#xff0c;USART怎么能通过接收中断或者唤醒事件对MCU进行唤醒的呢&#xff1…

2024双十一有什么值得买?分享五款优质好物提高幸福感!

双十一购物节即将到来&#xff0c;这是一年中各平台打折力度最大的时期。然而&#xff0c;在众多品牌和款式中&#xff0c;我们往往难以做出选择。今天&#xff0c;我将为大家介绍一些在双十一期间值得入手的高品质商品&#xff0c;让我们一起寻找心仪之选&#xff01; 1、水陆…

【微服务】初识

基础概念 集群 集群是将一个系统完整的部署到多个服务器&#xff0c;每个服务器提供系统的所有服务&#xff0c;多个服务器可以通过负载均衡完成任务&#xff0c;每个服务器都可以称为集群的节点。 分布式 分布式是将一个系统拆分为多个子系统&#xff0c;多个子系统部署在…

入门案例解析

parent aliyun上下载的却没有parent——但是在下面导入了 这里进行了继承——且继承得里面进行了依赖管理&#xff08;插件管理也是如此&#xff09; 不同版本的SpringBoot的依赖版本会有一些不同 starter 这就可以让我使用某个技术开发就可以使用某个技术的starter …

PDSCH(物理下行共享信道)简介

文章目录 PDSCH&#xff08;物理下行共享信道&#xff09;简介1. Transport block CRC attachment2. LDPC base graph selection3. Code block segmentation And Code Block CRC Attachment4. Channel Coding5. Rate Matching6. Code Block Concatenation7. Scrambling8. Modul…

DBC差异比较工具DBCCompare_原理介绍(四)

DBC比对工具UI图片 DBC比对工具&#xff1a;功能详解与源码分析 在现代汽车开发和诊断过程中&#xff0c;DBC&#xff08;Database Container&#xff09;文件扮演着至关重要的角色。它们详细描述了CAN&#xff08;Controller Area Network&#xff09;网络中各消息和信号的详…

JavaScript中的(this)指向问题(如何正确判断this,箭头函数的this是什么)

&#x1f43e;如何正确判断this &#x1f449;我们先运用下面的代码&#xff0c;模拟我们日常生活中常见的三个开发场景&#xff0c;并针对每个场景我们来一 一介绍this的指向 function fun1() {console.log(this.a)}var a 1//场景1fun1()const obj {a: 2,fun1: fun1}//场景…

Arduino UNO R3自学笔记17 之 Arduino为啥要用中断?

注意&#xff1a;学习和写作过程中&#xff0c;部分资料搜集于互联网&#xff0c;如有侵权请联系删除。 前言&#xff1a;学习Arduino中断的概念及其功能。 1.什么是中断&#xff1f; 单片机在执行程序时&#xff0c;发生一些其它紧急的事情&#xff0c;单片机将立即暂停当前…

RD-Agent Windows安装教程

RD-Agent Windows安装教程 QuantML QuantML 2024年09月23日 18:30 Content RD-Agent 是微软亚洲研究院推出的一款自动化研究与开发工具&#xff0c;能够通过LLMs自动构建因子和策略&#xff0c;相关介绍见我们之前的文章&#xff1a;RD-Agent &#xff1a;自动化Quant工厂 然…

Redis: Sentinel哨兵监控架构及环境搭建

概述 在主从模式下&#xff0c;我们通过从节点只读模式提高了系统的并发能力并发不断增加&#xff0c;只需要扩展从节点即可&#xff0c;只要主从服务器之间&#xff0c;网络连接正常主服务器就会将写入自己的数据同步更新给从服务器&#xff0c;从而保证主从服务器的数据相同…

国外电商系统开发-用户第一次需求反馈

一、用户反馈 因用户不懂系统开发&#xff0c;不知道需求应该怎么整理&#xff0c;用户只能从页面端说。 1、首页 a、太花里胡哨啦&#xff0c;不是一目了然&#xff1b; b、主次感不是很强&#xff1b; 2、分类 a、太复杂&#xff0c;前期产品不多 3、详情 a、太多了广…

极端天气道路目标检测数据集 3400张 带标注 VOC YOLO 6类

分类名: (图片张数&#xff0c;标注个数) car: (3210&#xff0c; 13654) truck: (1168&#xff0c;1629) per son: (1517&#xff0c;4359) bicyc le: (334, 589) bus: (381&#xff0c; 439) motorcycle: (164, 214) 总数: (3404, 20884) 总类(nc): 6类 极端天气道路目标检测…

RAG(Retrieval Augmented Generation)及衍生框架:CRAG、Self-RAG与HyDe的深入探讨

近年来&#xff0c;随着大型语言模型&#xff08;LLMs&#xff09;的迅猛发展&#xff0c;我们在寻求更精确、更可靠的语言生成能力上取得了显著进展。其中&#xff0c;检索增强生成&#xff08;Retrieval-Augmented Generation&#xff09;作为一种创新方法&#xff0c;极大地…

<<机器学习实战>>10-11节笔记:生成器与线性回归手动实现

10生成器与python实现 如果是曲线规律的数据集&#xff0c;则需要把模型变复杂。如果是噪音较大&#xff0c;则需要做特征工程。 随机种子的知识点补充&#xff1a; 根据不同库中的随机过程&#xff0c;需要用对应的随机种子&#xff1a; 比如 llist(range(5)) random.shuf…