SQL 内部联接 – 如何在 SQL 和 MySQL 中联接 3 个表
使用数据库时,可能需要将几个不同表中的数据放在一起。本文将向您展示如何操作。
我已经在这里和这里写了关于SQL连接的文章,但让我们先花点时间回顾一下连接是如何工作的,特别是特定于MySQL的语法。
SQL 连接声明
Join 是一种语句,它允许您将两个表放在一起,匹配彼此相关的行,并仅保留可以匹配的行,而不保留不成对的行。
SELECT * FROM table1 INNER JOIN table2ON table1.id = table2.id;
两个表之间的通用内部连接语句该语句指示哪个是第一个表,然后第二个表名紧跟在关键字之后写入。 SELECT ... FROM
INNER JOIN
语句中应如何连接这两个表。在这种情况下,两个表使用关系进行联接。 ON
table1.id = table2.id
可以将多个连接语句一起使用,以同时连接多个表。
SELECT *FROM table1INNER JOIN table2ON table1.id = table2.idINNER JOIN table3ON table2.id = table3.id;
三个表之间的通用内部连接语句为此,请添加第二个语句和第二个语句来指示第三个表和第二个关系。 INNER JOIN
ON
让我们来谈谈表之间可以建立的关系,以及为什么您可能希望将三个表连接在一起。
SQL 中表之间的关系
当您的表彼此相关时,它们的关系可以是各种类型之一。
一对多
在一对多关系中,第一个表的一行可以与第二个表的多行相关。
在关系数据库中,这可以通过第二个表来实现,该表具有一列,该列表示该行与第一个表的哪一行相关。 first_table_id
多对一
在多对一关系中,第一个表的一行可以与第二个表的一行相关,第二个表的一行可以与第一个表的多行相关。
在关系数据库中,这可以通过第一个表具有一列来实现,该列表示该行与第二个表的哪一行相关。 second_table_id
多对一
多对多
在这种情况下,多行与多行相关。
多对多这种关系不能像 SQL 表那样表示 – 您需要在两个表之间添加耦合表,以便表之间只存在多对一和一对多关系。
中间表的每一行表示左表的行与右表的行之间的一种关系。
在 MySQL 中,中间表将有一列 for 和一列 ,每个组合都是唯一的。 first_table_id
second_table_id
在实践中联接 SQL 表
让我们想象一下,我们有一个组织的数据库,其中有一个包含团队(他们的姓名和其他标识信息)的表,以及一个包含项目(名称,进度等)的表。
编号 | TEAM_NAME | 专业 |
---|---|---|
1 | 香蕉投掷者 | 香蕉 |
2 | 木材啃食者 | 啃木头 |
3 | 粉红大象 | 踩在地上 |
4 | 蓬松的土豆 | 工作和睡眠 |
编号 | PROJECT_NAME | 进展 |
---|---|---|
1 | 大坝建设 | 需要更多的木材啃咬和地面踩踏 |
2 | 香蕉蛋糕 | 有人正在吃掉所有的香蕉 |
3 | 睡眠研究 | 给很多睡眠没有足够的研究 |
由于一个团队可以处理多个项目,并且一个项目可以由多个团队处理,因此还有第三个表用于跟踪团队与项目的匹配。
PROJECT_ID | GROUP_ID |
---|---|
1 | 2 |
1 | 3 |
2 | 1 |
3 | 1 |
3 | 2 |
3 | 3 |
3 | 4 |
当我们需要以人类可读的方式查看表中的信息时,我们可以使用语句将所有内容放在一起,如下所示: JOIN
SELECTteams.team_name AS team_name,projects.project_name AS project_name
FROM TABLE teams
INNER JOIN matchesON teams.id = matches.team_id
INNER JOIN matchesON matches.project_id = projects.id
ORDER BY teams.id;
我们从每个表中选择要显示的列,并带有语句。 SELECT
我们指定如何将表的行与语句组合在一起。 ON
我们以我们喜欢的方式对行进行排序。带有语句。 ORDER BY
语句和 表示使用表的行进行组合。输出表的每一行都具有使用表中的项目 ID 和团队 ID 对组合的项目名称和团队名称。 ON
teams.id = matches.team_id
matches.projects_id = projects.id
matches
matches
输出表将如下所示。
TEAM_NAME | PROJECT_NAME |
---|---|
香蕉投掷者 | 香蕉蛋糕 |
香蕉投掷者 | 睡眠研究 |
木材啃食者 | 大坝建设 |
木材啃食者 | 睡眠研究 |
粉红大象 | 大坝建设 |
粉红大象 | 大坝建设 |
蓬松的土豆 | 睡眠研究 |
表中没有直接的列。该表未显示在输出中,但它用作有关如何合并 和 表的行的说明。 matches
matches
teams
projects
SQL 内部联接 – 如何在 SQL 和 MySQL 中联接 3 个表相关推荐
- 如果不使用 SQL Mail,如何在 SQL Server 中发送电子邮件
如果不使用 SQL Mail,如何在 SQL Server 中发送电子邮件 察看本文应用于的产品 文章编号 : 312839 最后修改 : 2006年12月21日 修订 : 10.1 本页 概要 SQ ...
- 在mysql中更新数据sql语句怎么写_在MySQL中,更新数据库表记录的SQL语句,包括______语句...
在MySQL中,更新数据库表记录的SQL语句,包括______语句 答:insert replace update delete 在域F中,设其特征为2,对于任意a,b∈F,则(a+b)2 等于多少 ...
- mysql管理应用_如何在PHP和MySQL中制作出色的库存管理应用程序
mysql管理应用 by Richard 理查德(Richard) 如何在PHP和MySQL中制作出色的库存管理应用程序 (How to Make an Awesome Inventory Manag ...
- mysql必会语法_sql语法:sql必读必会(二)mysql中的函数大全
AVG 函数 作用:AVG 函数返回数值列的平均值.NULL 值不包括在计算中 语法:SELECT AVG(列) FROM 表 求id平均值(实在没字段了,就是意思意思) id大于平均值的记录 COU ...
- @sql 单元测试_如何在SQL单元测试中使用假表?
@sql 单元测试 In this article on SQL unit testing, we will talk about how to isolate SQL unit tests from ...
- pl/sql 测试函数_如何在SQL单元测试中使用伪函数?
pl/sql 测试函数 In this article series, we are exploring SQL unit testing, in general, and also we are r ...
- 如何限制服务器sql内存占用,如何在 SQL Server 中使用配置选项调整内存使用量
更多信息 您可以使用最小服务器内存和最大服务器内存配置选项来设置 SQL Server 数据库引擎使用的内存(缓冲池)量的上下限.在设置最小服务器内存和最大服务器内存选项之前,请查阅以下 Micros ...
- MySQL中的锁(表锁、行锁)
锁是计算机协调多个进程或纯线程并发访问某一资源的机制.在数据库中,除传统的计算资源(CPU.RAM.I/O)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所在有数 ...
- h5棋牌源码中MySQL中的锁(表锁、行锁)
锁是计算机协调多个进程或纯线程并发访问某一资源的机制.在数据库中,除传统的计算资源(CPU.RAM.I/O)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所在有数 ...
最新文章
- APUE(第九章)进程关系
- 如何让U盘支持大于4G的文件
- codeforces div3 D Circular Dance (链式向前星)
- 数据库逻辑删除的sql语句_通过数据库的眼睛查询sql的逻辑流程
- idea 控制台程序的打包
- secureCRT使用退格键(backspace)出现^H解决的方法
- 无法将 flash.display::BitmapData 转换为 flash.display.Bitmap
- 【华为机试】—— 12字符串反转
- dubbo 运行过程
- 用神经网络分类根号2与根号x的数据汇总
- 关于计算机安全的英语文章,计算机专业英语期末论文
- ffmpeg 查看bayer rg8 \ bg8 像素格式图片方法
- 将CAD图纸中的线型和文字样式合并的方法技巧(二)
- 带选择头像的用户注册页面
- 小程序助力银行数字化转型
- 图解AODV协议(demo)
- 《我是一只IT小小鸟》书评──将要成为IT小小鸟
- 如何使用浏览器对网络请求编辑重发(Edit and Resent) 以及: fetch API 中 ReadablleStream 的打印方法
- 球差透射电镜测试样品的优势有哪些?
- Matlab之求导篇
热门文章
- android 实现毫秒定时器,Android实现定时器的五种方法实例详解
- 在cmd中输入cat命令时提示:cat不是内部命令或者外部命令也不是可运行的程序或批处理文件
- 基于fpga的交通灯的设计
- 智慧社区建设项目项目建议书
- 利用庖丁解牛工具进行中文分词
- 机器学习——聚类——密度聚类法——DBSCAN
- 使用List集合的subList方法截取时报java.lang.IndexOutOfBoundsException: toIndex = xx
- 信息学奥赛一本通答案dj打印ASCII码1020
- QCC5121 QCC5124 蓝牙5.0芯片 蓝牙音频Soc
- 政府形象塑造_塑造业务应用程序架构的10大技术趋势