mysql关联查询

Mysql关联查询的几种方式(详解) 在关系型数据库中,要进行多表查询,一般都会使用join连接。join连接的本质其实类似与集合的交并操作,Mysql实现关联查询常见的几种方式如下;A表B表。 阅读详情

在关系型数据库中,我们通常为了减少数据的冗余量将对数据表进行规范,将数据分割到不同的表中。当我们需要将这些数据重新合成一条时,就需要用到我们介绍来将要说到的表连接。

常用术语
冗余(Redundancy):存储两次数据,以便使系统更快速。
主键(Primary Key):主键是唯一的。同一张表中不允许出现同样两个键值。一个键值只对应着一行。
外键(Foreign Key):用于连接两张表。
表连接的方式
内连接
外连接
自连接
我们接下来将对这三种连接进行详细的介绍

内连接
内连接就是表间的主键与外键相连,只取得键值一致的,可以获取双方表中的数据连接方式。语法如下:

SELECT 列名1,列名2... FROM 表1 INNER JOIN 表2 ON 表1.外键=表2.主键 WhERE 条件语句;

注意:只列出连接表中与连接条件相匹配的数据行,匹配不上的记录不会被列出。

外连接
与取得双方表中数据的内连接相比,外连接只能取得其中一方存在的数据,外连接又分为左连接和右连接两种情况。接下来,我们将介绍这两种连接方式。

左外连接
左连接是以左表为标准,只查询在左边表中存在的数据,当然需要两个表中的键值一致。语法如下:

SELECT 列名1 FROM 表1 LEFT OUTER JOIN 表2 ON 表1.外键=表2.主键 WhERE 条件语句;
1
运行结果,如下:

mysql> SELECT student.name,college.collegeName FROM student LEFT OUTER JOIN college ON student.collegeId = college.collegeId; 
 

右外连接
同理,右连接将会以右边作为基准,进行检索。语法如下:

SELECT 列名1 FROM 表1 RIGHT OUTER JOIN 表2 ON 表1.外键=表2.主键 WhERE 条件语句;
1
运行结果,如下:

mysql> SELECT student.name,college.collegeName FROM student RIGHT OUTER JOIN college ON student.collegeId = college.collegeId; 

注意事项:

内连接是抽取两表间键值一致的数据,而外连接(左连接,右连接)时,是以其中一个表的全部记录作为基准进行检索。
左连接和右连接只有数据基准的区别,本质上是一样的,具体使用哪一种连接,根据实际的需求所决定。
无论是内连接还是外连接,在查询的时候最好使用【表名.列名】的方式指定需要查询的列名,否则一旦两个表中出现了列名一致的数据时,可能会报错,养成良好的习惯很重要。
表的别名:其实我们在查询的过程中,如果遇到了特别复杂的数据表名,我们可以通过取别名的方式来实现,使用的是我们以前使用过的【AS】语句,例如,我们的内连接就可以化简为下面的语句:
SELECT s.name,c.collegeName FROM student AS s INNER JOIN college AS c ON s.collegeId = c.collegeId;

自连接
自连接顾名思义就是自己跟自己连接,有人或许会问,这样的连接有意义吗?答案是肯定的。

自连接的使用情况还是很多的,比如当我们找某个站点所经过的所有公交等,都可以采用自连接的方式进行检索;

子查询
通常我们在查询的SQL中嵌套查询,称为子查询。子查询通常会使复杂的查询变得简单,但是相关的子查询要对基础表的每一条数据都进行子查询的动作,所以当表单中数据过大时,一定要慎重选择。基本语法如下:

SELECT 列名1 ...FROM 表名 WHERE 列名 比较运算符 (SELECT 命令);
1

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

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

 

MYSQL——子查询&关联子查询 文章目录子查询标量子查询关联子查询 子查询 一次性的视图,将用来定义视图的select语句,直接用于from子句当中。需要为子查询定义名称 标量子查询 必须而且只能返回1行1列的结果,因此标量子查询的返回值可以用在=或者<>这样需要单一值的比较运算符之中。 在where子句中使用标量子查询 如果想要挑选售价大于平均单价的条件,但是不能使用如下语句,因为不能在where使用聚合函数 “... 阅读详情

相关推荐

mysql关联查询语句

MySQL关联查询前言内连接等值内连接where子句on子句using子句自然连接非等值内连接外连接左外连接右外连接全外连接交叉连接 前言 MySQL中当查询数据来自多张表时需要用到关联查询,其中关联查询又分为内连接、外连接、交叉连接。 创建两张表,分别是学生表、课程表。建表语句如下: create table employee( empNo INT PRIMARY KEY, eName varchar(10) not NULL, job varchar(10), salary VARCHAR(10

sunspun的博客 3273

《MySQL数据库》关联查询

有的时候,我们要查询的数据,一个简单的查询语句完成不了,并且我们使用的数据,表中不能直观体现出来。自连接是一种特殊的关联查询。在做关联查询时,我们所需要的数据,除了那些满足关联条件的数据外,还有不满足关联条件的数据。from子句用于指定表,如果想在一个子查询的结果里继续查询,则子查询需要写在from子句中,相当于一个表。需求1:查询所有员工的姓名,职位,及其部门编号,部门名称----分析:员工表为驱动表,部门表为从表。关联查询所涉及到的表与表之间都会存在有关联的字段,如员工表的部门编号和部门表的部门编号。

关注我!带你一路 "狂飙" 到底! 5966

DELL SC存储扩容避坑指南:6Gb vs 12Gb扩展柜混插的真相

本文深入解析DELL SC存储扩容中6Gb与12Gb扩展柜混插的核心规则与性能影响。文章指出,从SCOS 7.3版本起允许混插,但整个SAS环路速率将降至最低设备水平,尤其在12Gb控制器上接入6Gb扩展柜会严重拖累性能。指南提供了清晰的兼容性矩阵、实战操作流程及关键避坑清单,帮助管理员安全、高效地完成存储扩容。

weixin_28314575的博客 459

Mysql篇(六)

2 / 2在 MySQL 中,关联查询是指通过多个表之间的关联条件来联合查询数据的操作。MySQL支持多种关联查询方式,常见的有以下六种:内连接(INNER JOIN): 内连接是最常见的关联查询方式,它只返回满足连接条件的匹配行,即两个表中符合条件的交集。语法:SELECT * FROM table1 INNER JOIN table2 ON table1.column = table2.column;左连接(LEFT JOIN): 左连接返回左表中所有的行,以及右表中满足连接条件的匹配行。

weixin_45913657的博客 2485

从FSI到三层堆叠:一文搞懂车载CIS图像传感器技术演进与选型避坑

本文深入解析车载CIS图像传感器从FSI到三层堆叠的技术演进,揭示不同结构在低光性能、HDR表现和温度稳定性上的关键差异。通过实测数据对比,指导智能驾驶系统选型策略,帮助开发者规避成本与性能的常见陷阱,提升车载摄像头在复杂环境下的成像质量。

weixin_30689307的博客 102

数据库存储分层架构搭建:热数据 SSD 存储、冷数据归档的配置操作及性能对比分析

本文探讨了数据库存储分层架构的优化策略。随着数据量激增,传统单一存储模式面临成本与性能的平衡难题。文章提出通过热数据SSD加速和冷数据归档降本的分层方案,系统分析了热数据SSD配置、冷数据归档操作及性能对比。分层架构基于数据活跃度匹配存储介质,使热数据保持高性能访问,冷数据低成本存储,实现总体成本降低60%-80%的同时确保核心查询性能。文中详细介绍了硬件选型、数据库配置、数据迁移等技术细节,并强调了动态调整分层策略的重要性,为构建高效经济的数据库存储体系提供了完整解决方案。

jingjing45678的博客 1292

MySQL-关联查询和子查询

关键字对两个表进行连接,右外连接是左外连接的反向连接,只不过在查询结果集中包括的是指定右表的所有行。如果右边的某行在左表中没有找到匹配的行,则结果集中的左表的相对应位置为NULL。关键字对两个表进行连接,左外连接的查询结果中包含指定左表的所有行,而不仅仅是连接列所匹配的行。如果左表的某行在右表中没有找到匹配的行,则结果集中的右表的相对应的位置为NULL。在MySQL中子查询是可以嵌套使用的,并且可以在一个查询中嵌套任意多个子查询,即一个子查询中还可以包含另一个子查询,这种查询方式称为嵌套子查询。

qq_53865517的博客 2764

华为灵衢UB总线介绍

华为发布"灵衢"(UB)超节点互联协议,旨在构建支持AI大模型计算的基础设施。该协议采用统一内存语义和对等架构,使设备可直接访问远程内存,实现资源池化。技术突破包括2.1微秒超低时延和TB级带宽,支持64节点、52万张昇腾卡的集群互联。相比传统RDMA,"灵衢"更注重系统级资源调度,而非单纯数据传输。华为开放技术规范,推动生态建设,已有厂商开发兼容IP核。"灵衢"可适应x86、RISC-V等架构,未来将扩展至百万卡规模集群。

技术引领业务创新 4429

【MySQL】关联查询-(01)

MySQL关联查询语句的使用。

SUNxRUN的博客 3295

Abaqus 2023 保姆级安装避坑指南:从环境变量到许可证配置,一次搞定

本文提供Abaqus 2023的详细安装指南,涵盖环境变量设置、许可证配置等关键步骤,帮助用户避开常见安装陷阱。通过系统环境检查、目录结构规划、许可证服务器安装及Java环境配置等实用技巧,确保顺利完成安装并优化软件性能。

weixin_42524276的博客 426

NotebookLM平替实测:用Open Notebook+Ollama零成本搭建私有AI知识库

本文提供了一份详细的实战指南,教你如何利用Open Notebook与Ollama,在本地零成本搭建一个功能强大且完全私有的AI知识库。通过Docker容器化部署,实现数据绝对安全、模型自由选择与离线运行,是NotebookLM等云端工具的绝佳平替方案,尤其适合注重数据隐私的教育工作者、研究者及小团队。

weixin_29052717的博客 514

mysql关联子查询_MySQL 关联子查询

MySQL 关联子查询关联子查询是指一个包含对表的引用的子查询,该表也显示在外部查询中。通俗一点来讲,就是子查询引用到了主查询的数据数据。以一个实际的例子来理解关联子查询:article 文章表:aidtitlecontentuid1文章1文章1正文内容...12文章2文章2正文内容...13文章3文章3正文内容...24文章4文章4正文内容...4user 用户表:uidusernameemai...

weixin_29248653的博客 2389

ESP32实战指南:SPI驱动ADXL345三轴加速度传感器的精准数据采集与姿态解算

本文详细介绍了如何使用ESP32通过SPI接口驱动ADXL345三轴加速度传感器,实现精准数据采集与姿态解算。从硬件连接到SPI通信优化,再到数据处理和低功耗策略,提供了全面的实战指南。特别适合物联网开发者和硬件工程师参考,帮助快速掌握传感器数据采集技术。

vim8coder的博客 1042

mysql临时表关联查询_MySQL如何执行关联查询

MySQL中‘关联(join)’ 一词包含的意义比一般意义上理解的要更广泛。总的来说,MySQL认为任何一个查询都是一次‘关联’ --并不仅仅是一个查询需要到两个表的匹配才叫关联,索引在MySQL中,每一个查询,每一个片段(包括子查询,设置基于表单的select)都可能是关联。所以,理解MySQL如何执行关联查询至关重要。我们先来看一个union 查询的例子。对于union查询,MySQL先将一系...

weixin_33891343的博客 2527

从被秒封到稳过Cloudflare!Canvas/WebGL/WebRTC多维度浏览器指纹隐身全实战

反爬和反反爬,本质上是一场持续的博弈,没有100%的隐身,只有不断升级的伪装。网上很多教程只给了个基础的噪声代码,却没讲透反爬的检测逻辑,导致你用了还是被封。这套方案的核心,不是简单的API重写,而是站在反爬的角度,模拟真实用户的所有特征,保证所有指纹的一致性、合理性、完整性。目前这套方案我用了半年,跑了上千万次请求,稳过国内国外99%的主流反爬平台,没有出现过一次因为指纹关联导致的批量封禁。大家有什么更狠的反爬场景,或者更好的伪装技巧,欢迎评论区一起交流。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1195

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

mysql查询语句 和 多表关联查询 以及 子查询

mysql(三):mysql查询语句 和 多表关联查询 以及 子查询 1.查询一张表: select * from 表名; 2.查询指定字段:select 字段1,字段2,字段3….from 表名; 3.where条件查询:select字段1,字段2,字段3 frome 表名 where 条件表达式;例:select * from t_

github_37767025的博客 12万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

MySQL关联查询如何优化

前面讲了原理,从原理出发,讲一下优化的建议被驱动表的连接字段建立索引,因为建立索引的查询方式是效率最高的。left join 或者 right join 这种外连接的情况,要保证小表(小结果集)作为驱动表,大表(大结果集)作为被驱动表,这样性能更好。在查询字段的话,要避免写出 select * ,而是根据业务需要,需要查询出来的 select 出来就行,因为这些字段也会加入到 join buffer 中,减少额外的内存消耗。能够直接多表关联的尽量直接关联,不用子查询,因为子查询的效率更加低。

清晨qc的博客 2892

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

mysql 多表关联查询如何改进

在进行多表关联查询时,可以通过使用正确的连接类型、优化 WHERE 子句、为关联字段创建索引、减少查询的字段、考虑使用分布式查询、尽量避免子查询、优化连接顺序、利用 EXPLAIN 分析查询、分解复杂查询和使用视图或存储过程等方法来提高查询性能。

洪晓鸿 6441

MySQL-关联查询

MySQL关联查询

Leiwenti的博客 1610

MySQL关联查询

一、关联查询 1、概念 在查询数据时,所需要的数据不只在一张表中,可能在两张或多张表中。这个时候,需要同时操作这些表来查询数据,即关联查询。 关联查询所涉及到的表与表之间都会存在有关联的字段,如员工表的部门编号和部门表的部门编号。 2、笛卡尔积 在做关联查询时,数据库会使用某一张表中的每一条记录都与另外一张表的所有记录进行组合。比如表A有x条记录,表B有y条记录,最终组合数为x*y,这个值就是笛卡尔积,通常没有意义。 3、等值连接 在做关联查询时,这些表中存在着有关联的两个字段。我们使用某

qfzhaohan的博客 965

MySQL中的关联查询:方式、区别及示例

内连接:只返回满足连接条件的行,结果集不包含任何一方表中不匹配的行。左连接:以左表为基准,返回左表所有行,右表中匹配的行与之对应,不匹配的右表列为NULL。右连接:以右表为基准,返回右表所有行,左表中匹配的行与之对应,不匹配的左表列为NULL。全外连接:返回左右表所有行,不匹配的列为NULL,通过LEFT JOIN和RIGHT JOIN的UNION模拟。交叉连接:返回左右表所有行的笛卡尔积组合,不考虑任何连接条件。

恩爸编程 1833

MySQL如何执行关联查询

MySQL如何执行关联查询 MySQL中关联一次意义比较广泛,并不仅仅是一个查询需要到2个表匹配才叫关联,而是任何一个查询都是一次关联,每一个查询,片段(包括子查询单表的查询)都可能是关联 当前 MySQL 关联执行策略很简单:MySQL 对任何关联都执行嵌套循环关联操作,即 MySQL 现在一个表中循环取出单条数据,然后再嵌套到下一个表中寻找匹配的行,依次下去,直到找到所有表中匹配的行为止。然后根据各个表匹配的行,返回查询中需要的各个列。MySQL 会尝试在最后一个关联表中找到所有匹配的行,如果最后一个关

浪人与酒 2977

MySQL之关联查询

5. 关联查询(多表查询)《重点掌握》 5.1 概念: 有的时候,我们的业务需求的数据不只是在一张表中,而是在两张或两张以上的表中,而这些表中通常都会存 在着"有关系"的字段。那么此时的查询操作涉及到多表查询,我们称之为关联查询。 案例:最简单的关联查询 select * from emp,dept; select * from emp join dept; 5.2 写法分类 在进行多...

weixin_43205419的博客 754

MySQL中的关联查询

MySQL中的关联查询 (1)Question:关联是什么 关联是SQL语言中使用SELECT操作表的一种操作机制,用来联系两个或者多个表。SELECT是SQL中的查询语句,用于查询数据库中的数据。在SELECT与关联结合,就产生了关联查询。 (2)Question :为什么要使用关联 假设一个班级有30名学生,每个学生都有自己的姓名、学号、班级、班主任等这些属性,可以发现,姓名学号是每个学生独有...

weixin_42263402的博客 746

mysql 关联查询 分页_Mysql分页&关联查询优化

以下内容参考《高性能Mysql》优化关联查询这个话题基本上整本书都在讨论,这里需要特别提到的是:确保ON或者USING子句中的列上有索引。在创建索引的时候就要考虑到关联的顺序。当表A和表B用列c关联的时候,如果优化器的关联顺序是B、A,那么就不需要在B表的对应列上建上索引。没有用到的索引只会带来额外的负担。一般来说,除非有其他理由,否则只需要在关联顺序中的第二个表的相应列上创建索引。确保任何的GR...

weixin_36166752的博客 867

mysql关联查询原理

select tbl1.col1,tbl2.col2  from tbl1 inner join tbl2 using(col3) where tbl1.col1 in(5,6);

曹传焦的专栏 3181
上一篇: 下载、安装、配置、使用DataGrip
magic晴天
博客等级 码龄10年 9粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值