MySQL数据库-----多表查询--内连接,外连接,子查询,相关子查询

Java后端实战:钉钉互动卡片消息从配置到生产级对接 在企业级消息推送场景中,机器人通知已从简单的文本向富交互演进。其核心原理在于通过可交互的卡片模板,将传统单向通知升级为双向、有状态的微型应用界面,实现了用户无需跳转即可完成操作的技术价值。这广泛应用于审批、任务确认、数据填报等需要即时反馈的业务流程。本文聚焦于钉钉平台,深入剖析其互动卡片消息机制,并基于Java后端,系统讲解如何实现包括安全验签、异步回调与卡片动态更新在内的生产级对接方案,涵盖配置管理、服务降级等工程实践关键点,助力构建稳定高效的企业消息交互服务。 阅读详情

二、多表查询

使用单个select 语句从多个表格中取出相关的查询结果,多表连接通常是建立在有相互关系的父子表上;

1交叉连接

第一个表格的所有行 乘以 第二个表格中的所有行,也就是笛卡尔积
创建一个消费者与顾客的表格:
代码如下:

-- create table customers(
-- id int primary key auto_increment,
-- name VARCHAR(20)not null,
-- address VARCHAR(20)not NULL
-- );
-- CREATE table orders(
-- order_namre VARCHAR(20) primary key,
-- num char(20) not NULL,
-- price int not null,
-- customers_id int,
-- constraint cus_ord_fk FOREIGN key(customers_id) REFERENCES customers(id)
-- )
自己插入数据即可。
语法:

隐式语法(不使用关键字): select * from customers,orders;

运行结果如下:
在这里插入图片描述
显式语法(使用关键字):select * from customers INNER JOIN orders;

两个运行结果一样,但是笛卡尔积有错误,下面的方法进行修正

2内连接

因为交叉连接获得的结果集是错误的。因此内连接是在交叉连接的基础上
只列出连接表中与连接条件相匹配的数据行,匹配不上的记录不会被列出。

语法:
隐式语法:
select * from customers,orders where customers.id=orders.customers_id;
显式语法:
select * from customers c INNER JOIN orders o ON c.id=o.customer_id;
运行结果如下在这里插入图片描述
我们还可以给程序起别名:
代码如下:

select * from customers as c,orders o where c.id=o.customers_id;
SELECT * from customers as c inner join orders o on c.id=o.customers_id;

3外连接

内连接只列出所有购买过商品的用户的信息,不会列出没有购买商品用户。
而外链接是以一张表为基表,其他表信息进行拼接,如果有就拼接上,如果没有显示null; 外链接分为左外连接和右下连接。
左外连接: 以关键字左边的表格为基表进行拼接
语法: select * from customers c LEFT JOIN orders o ON c.id=o.customer_id;
在这里插入图片描述右外连接: 以关键字右边的表格为基表
语法: select * from orders o RIGHT JOIN customers c ON c.id=o.customer_id;
在这里插入图片描述

4子查询

某些情况下,当进行查询的时候,需要的条件是另外一个select语句的结果,这个时候就会用到子查询,为了给主查询(外部查询) 提供数据而首先执行的查询(内部查询)被叫做子查询; 子查询分为嵌套子查询和相关子查询。

嵌套子查询:
内部查询的执行独立于外部查询,内部查询仅执行一次,执行完毕后将结果作为外部查询的条件使用(嵌套子查询中的子查询语句可以拿出来单独运行。)

语法及练习: 查询出id为1的老师教过的所有学生。
select * from students where id in(select s_id from teacher_student where t_id=1);

相关子查询:
内部查询的执行依赖于外部查询的数据,外部查询每执行一次,内部查询也会执行一次。每一次都是外部查询先执行,取出外部查询表中的一个元组,将当前元组中的数据传递给内部查询,然后执行内部查询。根据内部查询执行的结果,判断当前元组是否满足外部查询中的where条件,若满足则当前元组是符合要求的记录,否则不符合要求。然后,外部查询继续取出下一个元组数据,执行上述的操作,直到全部元组均被处理完毕。
创建三个表格
练习1. 查询出id为1的老师教过的所有学生。
– 创建老师表

create table teacher1(
id int primary key auto_increment,
name char(20) not NULL,
subject char(20) not null
);

在这里插入图片描述
– 创建学生表

create table student1(
id int primary key auto_increment,
name char(20) unique not null,
age int null
);

在这里插入图片描述

– 创建第三个表格

create table tea_stu(
id int PRIMARY KEY,
name char(20),
t_id int,
s_id int,
score int not null,
constraint teacher1_id_fk foreign key(t_id) references teacher1(id),
constraint student_id_fk foreign key(s_id) references student1(id)
);

在这里插入图片描述
练习1. 查询出id为1的老师教过的所有学生。

做法1 用分开的方法写出来:

select s_id from tea_stu where t_id=1;
select * from student1 where id in(2,3);

做法2:

select * from student1 where id in(select s_id from tea_stu where t_id=1);

在这里插入图片描述
相关子查询:
内部查询的执行依赖于外部查询的数据,外部查询每执行一次,内部查询也会执行一次。每一次都是外部查询先执行,取出外部查询表中的一个元组,将当前元组中的数据传递给内部查询,然后执行内部查询。根据内部查询执行的结果,判断当前元组是否满足外部查询中的where条件,若满足则当前元组是符合要求的记录,否则不符合要求。然后,外部查询继续取出下一个元组数据,执行上述的操作,直到全部元组均被处理完毕。
求:每一科考试成绩大于平均分的学生的分数。
select * from tea_stu as a where a.score>(select avg(b.score) from tea_stu as b where a.s_id=b.s_id);
在这里插入图片描述

ZYNQ BRAM实现PS与PL数据交互 有时CPU需要与PL进行小批量的数据交换,可以通过BRAM模块,也就是Block RAM实现此要求。本章通过Zynq的GP Master接口读写PL端的BRAM,实现与PL的交互。在本实验中加入了自定义的FPGA程序,并利用AXI4总线进行配置,通知其何时读写BRAM。以下为本实验原理图,CPU通过AXI BRAM Controller读取BRAM数据,CPU仅配置自定义的PL BRAM Controller 的寄存器,不通过它读写数据。 阅读详情

相关推荐

车载毫米波雷达实战:用MATLAB复现DDMA-MIMO雷达的Empty-band算法(附代码解析)

本文详细介绍了车载毫米波雷达中DDMA-MIMO技术的实战应用,重点解析了Empty-band算法的原理与MATLAB实现。通过搭建仿真环境,文章深入探讨了发射天线通道解调与相位法速度解模糊两大核心难题的解决方案,并提供了完整的代码解析,为雷达算法工程师提供了从理论到实践的清晰指南。

hill8的博客 558

03 mysql数据查询_MySql学习day03:数据表之间的连接、查询详解

主键:关键字:primary key特点:不能为null,并且唯一。主键分类:逻辑主键:例如ID,不代表实际的业务意义,只是用来唯一标识一条记录(推荐)业务主键:例如username,参与实际的业务逻辑。主键使用方式:方式一:Create table t1(Id int primary key,Name varchar(100));Insert into t1 values(1,'zs');Ins...

weixin_36453621的博客 163

GPU运维工程师入门指南 (第九篇): 高性能网络 - InfiniBand与RDMA技术

本文介绍了支撑AI分布式训练的高性能网络技术InfiniBand和RDMA。传统TCP/IP网络因内核开销和内存拷贝成为性能瓶颈,而InfiniBand提供高带宽、低延迟的专用网络,RDMA则通过内核旁路和零拷贝技术实现节点间内存直接访问,显著提升通信效率。特别介绍了GPUDirect RDMA技术,使GPU显存可直接通信。文章还列举了运维人员在部署这些技术时需要考虑的硬件、驱动、配置和监控等关键点。这些技术共同构成了支撑大规模AI集群的"数据高速公路",为后续讨论存储性能瓶颈奠定了基础

weixin_42587823的博客 1096

mysql 多表查询实例讲解_mysql多表连接查询实例讲解

实际的项目,存在多张表的关联关系。不可能在一张表里面就能检索出所有数据。如果没有表连接的话,那么我们就需要非常多的操作。比如需要从A表找出限制性的条件来从B表中检索数据。不但需要分多表来操作,而且效率也不高。比如书中的例子:代码如下:SELECT FIdFROM T_CustomerWHERE FName='MIKE'这个SQL语句返回2,也就是姓名为MIKE 的客户的FId值为2,这样就可以到T...

weixin_42515739的博客 276

基于用户的协同过滤算法(userCF)

1.定义 userCF:当一个用户A需要个性化推荐时,可以先找到和他有相似兴趣的其他用户,然后把那些用户喜欢的、而用户A没有听说过的物品推荐给A。这种方法称为基于用户的协同过滤算法。 基于用户的协同过滤算法主要包括两个步骤: 2.第一步:找到和目标用户兴趣相似的用户集合。 利用行为的相似度计算兴趣的相似度。给定用户u和用户v,令N(u)表示用户u曾经有过正反馈的物品集合,令N(v)为用户v曾经有过...

jiangdongxiaobawang的博客 1万+

HttpClient vs OkHttpClient:哪个更适合你的Java项目?(附性能对比实测)

本文深度对比了Apache HttpClient与OkHttpClient在Java项目中的性能表现与适用场景。通过实际性能测试,OkHttp在连接复用、高并发吞吐量及内存占用方面表现更优,尤其适合现代微服务与Spring生态。HttpClient则凭借其高度可配置性,在需要精细控制HTTP协议细节的场景中更具优势。文章提供了清晰的选型指南,帮助开发者根据项目需求做出最佳决策。

onion的博客 508

sql总结(3)---比较全

一、交叉连接(CROSS JOIN) 交叉连接(CROSS JOIN):有两种,显式的和隐式的,不带ON子句,返回的是两表的乘积,也叫笛卡尔积。 例如:下面的语句1和语句2的结果是相同的。 语句1:隐式的交叉连接,没有CROSS JOIN。 SELECT O.ID, O.ORDER_NUMBER, C.ID, C.NAME FROM ORDERS O , CUSTOMERS ...

weixin_30294295的博客 243

vivado中出现ERROR: [Labtools 27-2220]检测不出开发板

这个错误可能是由于 Vivado 工具中的 cs_server.exe 文件没有正确安装或者文件路径不正确导致的。你可以尝试以下步骤来。时间: 2023-08-16 12:05:50 浏览: 767。希望以上方法能够帮助你。

qq_40510975的博客 2384

图解数据库左连接、右连接、内连接、外连接、全连接的区别

数据库连表方式 内连接 :inner 、inner join 外连接 :outer join 左外连接 :left outer join 左连接 :left join 右外连接 right outer join 右连接: right join 全连接 full join 、union 准备 现在有2张表,A表和B表,数据和表结构如下 内连接 内连接查询的是两张表的并集,也就是A表和B表都必须有数据才能查询出来; 以下三个查询的结果是一样的,针对上面的表数据,能查询出id为1、2、3的数据 --

叶新东老师的博客 7万+

【气候极端指数】MATLAB计算各种气候极端指数

简介各类气候极端指数,及其MATLAB计算代码

WW、forever的博客 4916

关闭搜狗输入法右下角广告的解决方案

本文主要介绍了关闭搜狗输入法右下角广告的解决方案,希望能对使用搜狗输入法的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 1万+

mysql in 性能分析_干货:MySQL性能优化,in和exists

(2)select count(1) from orders o where exists (select 1 from users u where u.id = o.user_id);2.where后面是大表(1)select count(1) from users u where u.id in (select o.user_id from orders o);(2)select count(...

weixin_42390873的博客 1136

ArcGIS笔记2_如何将经纬度WGS84地理坐标系转换为米单位CGCS2000投影坐标系

本博文则主要讲解,如果我们手里拿到的shp文件是在ArcGIS中,如何将经纬度WGS84地理坐标系转换为米单位CGCS2000投影坐标系。

晏长街的博客 4万+

详解MySQL数据库--多表查询--内连接,外连接,子查询,相关子查询

多表查询 使用单个select 语句从多个表格中取出相关的查询结果,多表连接通常是建立在有相互关系的父子表上; 1交叉连接 第一个表格的所有行 乘以 第二个表格中的所有行,也就是笛卡尔积 创建一个消费者与顾客的表格: 代码如下: ?1234567891011121314-- create table customers(-- id int primary key auto_incr...

别抢我蓝buff 993

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

mysql子查询外连接_详解MySQL数据库--多表查询--内连接,外连接,子查询,相关子查询...

多表查询使用单个select 语句从多个表格中取出相关的查询结果,多表连接通常是建立在有相互关系的父子表上;1交叉连接第一个表格的所有行 乘以 第二个表格中的所有行,也就是笛卡尔积创建一个消费者与顾客的表格:代码如下:-- create table customers(-- id int primary key auto_increment,-- name VARCHAR(20)not null,...

weixin_35035699的博客 258

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

mysql内查询 外查询_详解MySQL数据库--多表查询--内连接,外连接,子查询,相关子查询...

多表查询使用单个select 语句从多个表格中取出相关的查询结果,多表连接通常是建立在有相互关系的父子表上;1交叉连接第一个表格的所有行 乘以 第二个表格中的所有行,也就是笛卡尔积创建一个消费者与顾客的表格:代码如下:-- create table customers(-- id int primary key auto_increment,-- name VARCHAR(20)not null,...

weixin_29130255的博客 440

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

MySql----基础入门(六)---多表查询,内外连接查询,联合查询,子查询

SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。子查询外部的语句可以是的任何一个。分类:根据子查询结果不同,分为:A.标量子查询(子查询结果为单个值)B.列子查询子查询结果为一列C.行子查询子查询结果为一行D.表子查询子查询结果为多行多列根据子查询位置,分为:A. WHERE之后B. FROM之后C. SELECT之后6.7,标量子查询:子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式,这种子查询称为标量子查询。

ABCabc0286的博客 1244

MySQL基础(六)-----子查询和连接查询

子查询简而言之就是在一个查询里面再嵌套一个或者多个查询语句; 连接查询指的就是将多个表或者单个表连接在一起进行查询

leen的博客 5007

数据库-联合查询(内连接外连接),子查询,合并查询

数据库-联合查询(内连接外连接),子查询,合并查询

C语言 1469

MySQL-多表查询

(在多表查询时,需要消除无效的笛卡尔积)关系: 一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他详情字段放在另一张表中,以提升操作效率。子查询返回的结果是单个值(数字、字符串、日期等),最简单的形式,这种子查询成为标量子查询。对于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集。相当于查询表2(右表)的所有数据 包含 表1和表2交集部分的数据。子查询返回的结果是一列(可以是多行),这种子查询称为列子查询。子查询返回的结果是一行(可以是多列),这种子查询称为行子查询。

2301_79188932的博客 1012

MySQL 连接查询与子查询全解析

介绍了MySQL中处理多表数据的两种核心技术:连接查询和子查询。

wsygjbr的博客 1005

MySQL——多表查询

多表查询是在数据库中处理来自两个或更多表的数据的一种方法。子查询外部语句可以是INSERT/DELETE/UPDATE/SELECT(增,删,改,查)的任意一个。一般将记录多个字段数据的表建立外键(子表),指向记录一个字段数据的表(父表)。建立第三张中间表,中间表(子表)至少包含两个外键,分别关联两方的主键(父表)。列子查询 (子查询结果为一列)左外连接 查询左表的数据,和两表交集的数据。右外连接 查询右表的数据,两表和交集的数据。UNION:就是将多次查询的结果合并起来,形成一个新的查询结果集。

m0_62855949的博客 768

MySQL值约束和多表查询

MySQL值约束和多表查询

m0_57132040的博客 1401

【MySQL】复合查询

在MySQL下的多表查询、嵌套查询、以及多表连接时的内外连接问题。

QiHai的博客 1887

MySQL数据库基本查询命令的使用

其中,若员工department_id与location_id为1800的department_id相同,则location为’Canada’,其余则为’USA’。注意:MySQL中的SQL语句是不区分大小写的,有些人习惯将关键字大写、数据列和表名小写,这是一个良好的编程习惯,利于阅读和维护。内连接(INNER JOIN):返回连接表中符合连接条件和查询条件的数据行,有两种,显式的和隐式的。在SQL的笛卡尔积(交叉连接)有两种,显式的和隐式的,不带ON子句,返回的是两表的乘积。

qq_74841412的博客 1791

05_多表查询和事务

1.多表查询 * 查询语法: select 列名列表 from 表名列表 where select * from emp,dept; ![基础查询](https://img-blog.csdnimg.cn/20201225210146916.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3p5dGJ2,size_16,co

zytbv的博客 138
上一篇: mysql数据库 --数据完整性---实体完整性-域完整性-参照完整性
下一篇: MySQL数据库常用函数---聚合函数--日期函数--数值函数--字符串函数---其他函数
Mis相遇
博客等级 码龄8年 87粉丝 90原创
评论 25
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值