当前位置: 首页 > news >正文

【MySQL基础 | 中秋特辑】多表查询详细总结

个人主页:兜里有颗棉花糖
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创
收录于专栏【MySQL学习专栏】🎈
本专栏旨在分享学习MySQL的一点学习心得,欢迎大家在评论区讨论💌
在这里插入图片描述

目录

  • 一、多表关系
    • 多对一(一对多)
    • 多对多案例演示
    • 一对一案例演示
  • 二、多表查询概述
    • 多表查询分类
  • 三、内连接
    • 隐式内连接演示
    • 显式内连接演示
  • 四、外连接
    • 左连接
    • 右连接
  • 五、自连接
    • 案例1
    • 案例2
  • 六、联合查询
  • 七、子查询
    • 7.1标量子查询
      • 案例1
      • 案例2
    • 7.2列子查询
      • 案例1
      • 案例2
      • 案例3
    • 7.3行子查询
      • 案例
    • 7.4表子查询
      • 案例1
      • 案例2

一、多表关系

我们在平常的项目开发中,数据库层面设计表结构时,会根据业务需求及业务模块之间的关系分析并设计表结构,由于业务之间相互关联,所以各个表结构也会之间也存在着各种联系。

各个表结构一般分为三种:多对一(多对一)、一对一、多对多

多对一(一对多)

多对一(一对多)案例分析:比如部门和员工之间的关系就可以满足多对一(一对多),即1个员工只能属于1个部门,但是一个部门下可以有多少个员工

数据库方面的实现:在多的一方建立外键,指向一的一方的主键。
举例,请看下图:
在这里插入图片描述

多对多案例演示

多对多案例分析:比如学生和选的课程之间的关系,即1个学生可以选择多门课程、同时1个课程也可以被多个学生选择。
数据库方面的实现:建立第三张中间表,中间表至少包含两个外键,分别关联两个主键(多对多关系中,只能通过中间表来维持关系)。
如下图举例(通过中间表就可以来维护学生表和课程表之间的关系。):
在这里插入图片描述

下面我们通过SQL语句来创建学生表和课程表,建表语句如下:

-- 多对多案例演示:学生表和课程表的创建
create table student(id int auto_increment primary key comment '主键ID',name varchar(10) comment '姓名',num varchar(10) comment '学号'
) comment '学生表';
-- 学生表数据插入
insert into student values(null,'Daming','2022020100'),(null,'Simon','2022020101'),(null,'Amy','2022020102'),(null,'Tom','2022020103'),(null,'James','2022020103');-- 课程表的创建
create table course(id int auto_increment primary key comment '主键ID',name varchar(10) comment '课程名称'
) comment '课程表';
-- 课程表数据插入
insert into course values(null,'C++'),(null,'Java'),(null,'Python'),(null,'PHP'),(null,'MySQL');

结果运行如下:
在这里插入图片描述

在这里插入图片描述
可以看到上图的学生表和课程表已经创建好了,但是两张表之间好像没有任何关系,所以我们需要建立中间表来维护两张表之间的关系。

中间表建表语句和插入数据如下:

-- 学生课程中间表
create table student_course(id int auto_increment primary key comment '主键',studentid int not null comment '学生ID',courseid int not null comment '课程ID',constraint fk_courseid foreign key (courseid) references course(id),constraint fk_studentid foreign key (studentid) references course(id)
) comment '学生课程中间表';
insert student_course values (null,1,1),(null,1,2),(null,1,3),(null,2,2),(null,2,3),(null,3,4);

结果演示:

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

一对一案例演示

下面来看一对一多表关系的案例介绍:
案例:用户与用户详情的关系。

一对一的多表关系多用于单表拆分,将一个表中的基础字段放在一张表中,其它详情字段放在另一个表中,以便提高工作效率。

多对多关系在数据库层面的实现方式:在任意一方加入外键,关联另一方的主键,并且设置外键为唯一的(UNIQUE),即唯一约束。

下面是建表和添加数据的SQL语句,请看:

-- 一对一案例介绍
create table tb_user(id int auto_increment primary key comment '主键ID',name varchar(10) comment '姓名',age int comment '年龄',gender char(1) comment '1:男,2:女',phone char(11) comment '手机号'
) comment '用户基本信息表';
insert into tb_user(id,name,age,gender,phone) values(null,'Daming',23,'1','18888000001'),(null,'Amy',22,'2','18888000002'),(null,'Simon',21,'1','18888000003'),(null,'Tom',25,'1','18888000004');create table tb_user_edu(id int auto_increment primary key comment '主键ID',degree varchar(20) comment '学历',major varchar(30) comment '专业',primaryschool varchar(30) comment '小学',middleschool varchar(50) comment '中学',university varchar(30) comment '大学',userid int unique comment '用户名ID',constraint fk_userid foreign key (userid) references tb_user(id)
) comment '用户教育信息表';
insert into tb_user_edu(id,degree,major,primaryschool,middleschool,university,userid) values(null,'本科','绘画','北京市第一小学','北京市第一中学','北京大学',1),(null,'大专','游戏','浙江第一小学','浙江第一中学','浙江大学',2),(null,'本科','棋盘','杭州第一小学','杭州第一中学','清华大学',3),(null,'研究生','编程','青岛第一小学','青岛第一中学','青岛大学',4);

语句运行结果如下:
在这里插入图片描述
在这里插入图片描述
注意,我们为tb_user_edu表中的userid建立了唯一约束,所以一条记录对应着一个用户的基本信息。

二、多表查询概述

多表查询顾名思义就是从多张表中查询数据。

通过多表查询,可以在关联的表之间建立联系,并从这些表中选择和过滤需要的数据。

笛卡尔积:笛卡尔乘积是两个集合A、B所有组合的情况。如下图:
在这里插入图片描述
所以我们在多表查询中需要消除无效的笛卡尔积。

我们通过下面的两张表(emp员工表和dept部门表进行演示),建表语句如下:

-- 部门表
create table dept(id int auto_increment primary key comment 'ID' ,name varchar(10) not null comment '部门名称'
) comment '部门表';-- 员工表
create table emp(id int auto_increment primary key,name varchar(10) not null comment '姓名',age int comment '年龄',job varchar(10) comment '工作',salary int comment '薪资',entrydate date comment '入职时间',managerid int comment 'BossID',dept_id int comment '部门ID'
) comment '员工表';-- 部门表数据插入
insert into dept(id,name) values(1,'研发部'),(2,'市场部'),(3,'财务部'),(4,'销售部'),(5,'总经办'),(6,'人事部');--员工表数据插入
insert into emp(id,name,age,job,salary,entrydate,managerid,dept_id) values(1,'Daming',18,'总经理',30000,'2010-9-12',null,5),(2,'Amy',19,'项目经理',15000,'2009-8-21',1,1),(3,'Simon',20,'后端开发',13000,'2008-8-7',2,1),(4,'David',21,'后端架构师',17000,'2007-7-9',2,1),(5,'Tom',23,'全栈',18000,'2004-8-6',3,1),(6,'Bob',18,'移动开发工程师',15000,'2001-7-30',2,1),(7,'高博',22,'Java架构师',20000,'1999-8-1',4,2),(8,'高翔',29,'前端工程师',10000,'2000-9-29',4,3),(9,'大明',27,'C++软件开发工程师',25000,'1995-9-2',4,2),(10,'Thame',24,'Go语言开发工程师',15000,'1999-5-20',1,2),(11,'Sam',26,'C++全栈开发师',20000,'2000-7-1',5,5),(12,'Jame',18,'安卓开发工程师',14000,'2003-5-1',4,3),(13,'James',29,'C++架构师',18000,'2000-8-9',3,2);-- 外键添加
alter table emp add constraint fk_emp_dept_id foreign key (dept_id) references dept(id);

部门表和员工结果如下:
在这里插入图片描述
在这里插入图片描述

下面我们上述表为例来演示一下多表查询:
SQL语句:

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

查询结果如下:
在这里插入图片描述

多表查询分类

多表查询主要分为两大类:连接查询和子查询。

其中连接查询主要分为三种:内连接、外连接、自连接。
内连接:用于查询A、B交集部分的数据。
外连接:分为左外连接(查询左表所有数据和A、B集合的交集部分的数据)和右外连接(查询右表所有数据和A、B集合的交集部分的数据)。
自连接:当前的表与自身的连接查询,自连接必须使用表别名。

三、内连接

内连接:查询的是两张表交集的部分。
内连接分为隐式内连接和显式内连接。

隐式内连接语法:

SELECT 字段列表 FROM1,2 WHERE 条件...;

显式内连接语法:

SELECT 字段列表 FROM1 [INNER] JOIN2 ON 连接条件...;

隐式内连接演示

案例:查询每一个员工的姓名以及该员工所关联部门的名称(隐式内连接演示)。
表结构:emp,dept
连接条件:emp.dept_id = dept.id;

隐式内连接查询语句:

select emp.name,dept.name from emp,dept where emp.dept_id = dept.id;

演示结果如下:
在这里插入图片描述

显式内连接演示

案例:查询每一个员工的姓名以及该员工所关联部门的名称(显式内连接实现)。
表结构:emp,dept
连接条件:emp.dept_id = dept.id;

显式内连接查询语句:

select emp.name,dept.name from emp inner join dept where emp.dept_id = dept.id;

查询结果如下:
在这里插入图片描述

四、外连接

外连接分为左外连接和右外连接。

左外连接:查询表1(左表)中的所有数据,这其中包含了表1和表2的交集部分的数据。

左连接

左外连接查询语法:

SELECT 字段列表 FROM1 LEFT [OUTER] JOIN2 ON 条件;

案例演示:查询emp表中的所有数据,和对应的部门信息(使用左外连接)。

查询语句

select emp.* ,dept.name from emp left outer join dept on emp.dept_id = dept.name;

查询结果如下:
在这里插入图片描述

右连接

右连接:查询表2(右表)中的所有数据,这其中包含了表1和表2的交集部分的数据。

右外连接查询语法:

SELECT 字段列表 FROM1 RIGHT [OUTER] JOIN2 ON 条件;

案例演示:查询dept表中的所有数据,和对应的员工信息(使用右外连接)。

查询语句:

select emp.*,dept.name from emp right outer join dept on emp.dept_id = dept.id;

查询结果如下:
在这里插入图片描述

五、自连接

子连接查询语法:

SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON 条件...;

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

下面来进行具体案例的举例:

案例1

案例1:查询员工及其所属领导的名字。

查询语句:

select a.name,b.name from emp a,emp b where a.id = b.managerid;

查询结果演示:
在这里插入图片描述

案例2

案例2:查询所有员工及其所属领导的名字,即使该员工没有所属领导,也需要查询出来。

查询语句:select a.name,b.name from emp a left outer join emp b on a.managerid = b.id;

查询结果如下:
在这里插入图片描述

六、联合查询

联合查询关键字:UNION、UNION ALL

联合查询就是把多次查询的结果合并起来,从而形成一个新的查询结果集。

联合查询语法:

SELECT 字段列表 FROM 表A...
UNION[ALL]
SELECT 字段列表 FROM 表B...;

案例演示:将薪资低于19000的员工和年龄超过25岁的员工全部查询出来。

查询语句:

select * from emp where salary < 19000
union all
select * from emp where age < 25;

查询结果如下(可以看到有18条记录):
在这里插入图片描述

如果想要查询结果进行去重的话,我们需要把关键字ALL去掉即可去重,请看:
在这里插入图片描述
可以看到去重之后的结果总共有11条记录。

联合查询注意事项:

  • 联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。
  • union all会将全部的数据合在一起(并不会进行去重),而union会对合并后的数据进行去重

七、子查询

概念:SQL语句中嵌套着SELECT语句,称为嵌套查询,又称子查询。
格式如下:

SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);

注意:子查询的外部可以是INSERT/UPDATE/DELETE/SELECT中的任何一个。

根据子查询的结果不同,将子查询分为4类:

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

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

7.1标量子查询

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

标量子查询常用操作符= <> > < >= <=

下面我们来具体演示两个案例:

案例1

案例:查询市场部的所有员工信息。

解析:由于在emp表中是没有市场部这个部门名称的,所以我们把此问题拆分为两步:a.查询市场部的部门id b.根据部门id来查询员工信息

查询语句:

select * from emp where dept_id = (select id from dept where name = '市场部');

查询结果:
在这里插入图片描述

案例2

案例:查询在Tom入职之后的员工信息。

解析:依旧是分为两步走:a.查询Tom的入职时间 b.根据Tom的入职时间来查询员工信息

查询语句:

select * from emp where entrydate > (select entrydate from emp where name = 'Tom');

查询结果:
在这里插入图片描述

7.2列子查询

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

列子查询常用操作符INNOT INALLANYSOME
在这里插入图片描述
我们接下来依旧是来通过案例来学习列子查询。

案例1

案例介绍:查询市场部和销售部的所有员工信息。

查询语句:

select * from emp where dept_id in(select id from dept where name = '市场部' or name = '销售部');

查询结果:
在这里插入图片描述

案例2

案例介绍:查询比市场部所有人工资都低的员工信息。

解析:如果将问题拆分的话会分为3步:a. 查询市场部的部门id b.根据市场部的部门id查询市场部人员的工资情况 c.根据市场部人员的工资情况来查询比市场部所有人工资都低的员工信息

查询语句1(拆分)

select id from dept where name = '市场部';
select salary from emp where dept_id = (select id from dept where name = '市场部');
select * from emp where salary < all(select salary from emp where dept_id = (select id from dept where name = '市场部'));

查询语句2(使用列子查询):

select * from emp where salary < all(select salary from emp where dept_id = (select id from dept where name = '市场部'));

查询结果
在这里插入图片描述

案例3

案例介绍:查询比研发部中任意一人工资高的员工信息。

查询语句:

select * from emp where salary > some(select salary from emp where dept_id = (select id from dept where name = '研发部'));

查询结果:
在这里插入图片描述

7.3行子查询

行子查询返回的是一行(可以是多列)。

行子查询常用操作符:=<>INNOT IN

案例

案例介绍:查询与Amy工资及直属领导相同的员工信息。

查询语句

select * from emp where (salary,managerid) = (select salary,managerid from emp where name = 'Amy'); 

查询结果
在这里插入图片描述

7.4表子查询

表子查询返回的是多行多列。

常用操作符:IN

案例1

案例介绍:查询与Amy和Tom职位和薪资相同的员工信息。

查询语句:

select * from emp where(job,salary) in(select job,salary from emp where name = 'Amy' or name = 'Tom');

查询结果:
在这里插入图片描述
哈哈,这里查询出来的结果依旧是Amy和Tom,并不是因为查询语句出错了,而是因为当时表中没有合适的数据。

案例2

案例介绍:查询入职时间是2000-1-1之后的员工信息以及部门信息。

查询语句:

select * from (select * from emp where entrydate > '2000-1-1') e left outer join dept d on e.dept_id = d.id;

查询结果:
在这里插入图片描述

好了,以上就是本文的全部内容。主要讲解了MySQL中的多表查询,其中包括连接查询和子查询。

就到这里吧,再见啦友友们!!!

相关文章:

【MySQL基础 | 中秋特辑】多表查询详细总结

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【MySQL学习专栏】&#x1f388; 本专栏旨在分享学习MySQL的一点学习心得&#xff0c;欢迎大家在评论区讨论&#x1f48c; 目录 一、多表…...

21天学会C++:Day14----模板

CSDN的uu们&#xff0c;大家好。这里是C入门的第十四讲。 座右铭&#xff1a;前路坎坷&#xff0c;披荆斩棘&#xff0c;扶摇直上。 博客主页&#xff1a; 姬如祎 收录专栏&#xff1a;C专题 目录 1. 知识引入 2. 模板的使用 2.1 函数模板 2.2 类模板 3. 模板声明和定义…...

MQ - 32 基础功能:消息查询的设计

文章目录 导图概述什么时候会用到消息查询消息队列支持查询的理论基础消息数据存储结构关于索引的一些知识点内核支持简单查询根据 Offset 查询数据根据时间戳查询数据根据消息 ID 查询数据借助第三方工具实现复杂查询第三方引擎支持查询工具化简单查询总结导图 概述 从功能上…...

c语言练习66:模拟实现offsetof

模拟实现offsetof #define offsetof(StructType, MemberName) (size_t)&(((StructType *)0)->MemberName) StructType是结构体类型名&#xff0c;MemberName是成员名。具体操作方法是&#xff1a; 1、先将0转换为一个结构体类型的指针&#xff0c;相当于某个结构体的首…...

数据库缓存服务器集群 redis集群

redis 提升数据库性能&#xff0c;缓解数据库压力 2.NoSql产品 产品: redis,mongodb,memcached 名词解释&#xff1a;非关系型数据库 以键值对的方式存储数据---&#xff08;Key-Value&#xff09;的形式 3.NoSql的优点 高可扩展性 分布式计算 低成本 架构的灵活性&…...

[密码学入门]仿射密码(Affine)

加密算法y(axb)mod N 解密算法x*(y-b)mod N(此处的为a关于N的乘法逆元&#xff0c;不是幂的概念&#xff09; 如何求&#xff0c;涉及的知识挺多&#xff0c;还没想好怎么写&#xff0c;丢番图方程&#xff0c;贝祖定理&#xff08;又译裴蜀定理&#xff09;&#xff0c;扩展欧…...

【Maven】SpringBoot多模块项目利用reversion占位符,进行版本管理.打包时版本号不能识别问题

问题原因&#xff1a; 多模块项目使用reversion点位符进行版管理&#xff0c;打包时生成的pom文件未将 {reversion}占位符替换为真实版本号。 而当子模块被依赖时&#xff0c;引入的pom文件中版本号是&#xff1a;{reversion}。而根据这个版本号去找相应父模块时肯定是找不到的…...

Vue watch实时计算器

watch实时计算器 可以自己选择、-、*、 参考代码 <!DOCTYPE html> <html> <head><meta charset"utf-8"><title></title><script src"https://cdn.bootcdn.net/ajax/libs/vue/2.7.10/vue.js"></script>…...

Java中的super关键字

super 是Java中的一个关键字&#xff0c;它可以用来引用当前对象的父类&#xff08;超类&#xff09;的成员变量或方法。主要有以下用途&#xff1a; 访问父类的成员变量&#xff1a; 当子类和父类中有同名的成员变量时&#xff0c;可以使用super关键字来访问父类的成员变量。 …...

MySQL数据库入门到精通6--进阶篇(锁)

5. 锁 5.1 概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、RAM、I/O&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决…...

js的继承

一、原型链继承 将父类的实例作为子类的原型 function Father(){this.name Tony }function Son() {}Son.prototype new Father()let son new Son();console.log(son.name) // Tony缺点&#xff1a; 父类所有的引用类型属性都会被所有子类共享&#xff0c;一个子类修改了属…...

HONEYWELLL 05701-A-0325 控制脉冲模块

运动控制&#xff1a; HONEYWELLL 05701-A-0325 控制脉冲模块可以用于运动控制应用&#xff0c;例如控制步进电机或伺服电机&#xff0c;以实现精确的位置和速度控制。 定位系统&#xff1a; 在自动化设备和机器人中&#xff0c;这些模块可以用于确定物体的位置和方向&#xf…...

Qt扩展-QCustomPlot 简介及配置

QCustomPlot 简介及配置 一、概述二、安装教程三、帮助文档的集成 一、概述 QCustomPlot是一个用于绘图和数据可视化的Qt 控件。它没有进一步的依赖关系&#xff0c;并且有良好的文档记录。这个绘图库专注于制作好看的、发布质量的2D绘图、图形和图表&#xff0c;以及为实时可…...

python教程:selenium WebDriver 中的几种等待--sleep(),implicitly_wait(),WebDriverWait()

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 如果有什么疑惑/资料需要的可以点击文章末尾名片领取源码 强制等待:sleep() import time sleep(5) #等待5秒设置固定休眠时间&#xff0c;单位为秒。 由python的time包提供, 导入 time 包后就可以使用。’ 缺点&#xff1a; 不…...

从裸机开始安装操作系统

目录 一、预置知识 电脑裸机 win10版本 官方镜像 V.S. 正版系统 二、下载微软官方原版系统镜像 三、使用微PE系统维护U盘 四、安装操作系统 五、总结 一、预置知识 电脑裸机 ●只有硬件部分&#xff0c;还未安装任何软件系统的电脑叫做裸机。 ●主板、硬盘、显卡等必…...

redhat 6.1 测试环境安装 yum

redhat 6.1 测试环境安装 yum 记录 1. 新建虚拟机 1.1 自定义建立虚拟机 自定义创建新的虚拟机 选择硬件兼容性 创建空白硬盘&#xff0c;稍后选择 iso 文件创建系统。 选择操作系统类型 为虚拟机命名 选择处理器配置 选择虚拟机内存 选择虚拟机网络类型 选择…...

WARNING:tensorflow:Your input ran out of data; interrupting training. 解决方法

问题详情&#xff1a; WARNING:tensorflow:Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least steps_per_epoch * epochs batches (in this case, 13800 batches). You may need to use the repeat() funct…...

ChunJun(OldNameIsFlinkX)

序言 ChunJun主要是基于Flink实时计算框架,封装了不同数据源之间的数据导入与导出功能.我们只需要按照ChunJun的要求提供原始与目标数据源的相关信息给Chunjun,然后它会帮我们生成能运行与Flink上的算子任务执行,这样就避免了我们自己去根据不同的数据源重新编辑读入与读出的方…...

MySQL的时间差函数、日期转换计算函数

MySQL的时间差函数(TIMESTAMPDIFF、DATEDIFF)、日期转换计算函数(date_add、day、date_format、str_to_date) 时间差函数&#xff08;TIMESTAMPDIFF、DATEDIFF&#xff09; 需要用MySQL计算时间差&#xff0c;使用TIMESTAMPDIFF、DATEDIFF&#xff0c;记录一下实验结果 --0 …...

【神印王座】悲啸洞穴之物揭晓,圣采儿差点被骗,幸好龙皓晨聪明

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析神印王座。 神印王座动漫现阶段已经出到龙皓晨等人接取新任务深入魔族地界的阶段&#xff0c;而龙皓晨等人接取的任务想必现在大家都知道了&#xff0c;那就是探索魔族地界中的悲啸洞穴。但是大家知道悲啸洞穴里面藏着什么…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

MVC 数据库

MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题&#xff1a;3564. 季节性销售分析 题目&#xff1a; 表&#xff1a;sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...