MySQL数据库中的多表查询/连接查询操作

类型:内连接 ,外连接{左外连接,右外连接}

之所以要使用连接查询的意义就是为了,借助数据库可以避免大量的数据重复。

进行连接查询的前提是要求多张表之间存在相关联的字段。

这里指的相关联的字段就是表与表之间存在着关系,也就是说表与表之间需要存在着相同意义的数据。

进行连接查询的前提条件:多张表之间要存在相关联的字段。也就是多张表之间要存在相同意义的数据。

1.数据库内部是如何帮助我们完成多表查询的。

数据库内部会在多表之间进行笛卡尔积连接。

笛卡尔积就是将多张表合并成一张大表,这张大表会包含着多张表中的所有字段名称。

然后将第一张表中的每一条数据与第二张表中的所有数据,进行组合。

比如A与1,2,3进行组合

B与1,2,3进行组合

如上图所示,就是进行连接查询时,多张表之间进行的笛卡尔积连接。

而这张大表的有效信息,就是当部门与部门编号相同的信息,才算是一行有效信息。

2.内连接

1.内连接特征:

只有相关联字段存在相同的值时,才会显示结果。

如上图所示,当你使用内连接去查询数据的时候,查询的结果可能不全。原因是只有当相关联字段存在相同的值时才会显示结果,

2.内连接的语法结果

语法1 {显式内连接语法}

select 表名.字段名称,表名.字段名称,表名.字段名称,from 表名 inner join 表名 on 相关联字段

示例1:查询学生信息及对应的教师名称(内连接)

如上图所示,select 表名.字段名称,表名.字段名称,表名.字段名称,表名.字段名称,

from 表名 inner join 表名

on 相关联的字段;{这里具体表现为表1.字段名称=表2.字段名称}

建立内连接的前提是了解表的结构,即使用select * from 表名;来查看表的内容。

示例二:查询课程名称及对应的教师名称

如上图所示,select 课程表中的课程名与教师表中的教师名

from 课程表 inner join 教师表

on 课程表中的关联字段=教师表中的关联字段

示例3:查询学生信息,第一门课程名称,教师名称

select 学生表中的姓名,年龄,课程表中的名称,教师表中的名称

from 学生表 inner join 课程表 inner join 教师表

on 学生表的关联字段=课程表中的关联字段 and 课程表中的关联字段=教师表中的关联字段;

语法2 {隐式内连接语法}

select 表名.字段名称,表名.字段名称,表名.字段名称 from 表名,表名 where 关联字段

查询学生信息,第二门课程

如上图所示,想查询学生第二门课程的信息,就需要将where 学生第二门课程的CID=课程表的CID

在MySQL数据库中什么场景使用语法1{显式内连接语法} 语法2{隐式内连接语法}?

  • 使用场景:几乎所有的新开发项目和维护现代数据库时都推荐使用显式内连接。它提高了代码的可读性和可维护性,特别是当涉及到多表联查时。
  • 总结来说,虽然两种语法都能实现内连接,但出于代码清晰度和行业最佳实践的考虑,推荐优先使用显式内连接(语法1)。只有在特殊场景下,如维护旧代码或个人习惯,才会考虑使用隐式内连接(语法2)。
相关推荐
SAP小崔说事儿7 小时前
在数据库中将字符串拆分成表单(SQL和HANA版本)
java·数据库·sql·sap·hana·字符串拆分·无锡sap
川贝枇杷膏cbppg8 小时前
asmcmd
数据库·oracle
JIngJaneIL9 小时前
基于java+ vue助农电商系统(源码+数据库+文档)
java·开发语言·前端·数据库·vue.js·spring boot·后端
IndulgeCui9 小时前
基于CentOS7 DM8单机部署配置记录-20251216
数据库
surtr19 小时前
关系代数与关系型数据库
数据库·sql·数据库系统
学海_无涯_苦作舟9 小时前
MySQL面试题
数据库·mysql·面试
老邓计算机毕设9 小时前
SSM校内二手书籍交易系统的设计与实现an1k0(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·ssm 框架开发·ssm 校内二手书籍交易系统
天行健,君子而铎10 小时前
高性能、可控、多架构:教育行业数据库风险监测一体化解决方案
数据库·架构
Stella252110 小时前
实习日志|知识总结
linux·服务器·软件测试·数据库