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)。
相关推荐
Dreamboat¿20 小时前
SQL 注入漏洞
数据库·sql
曹牧21 小时前
Oracle数据库中,将JSON字符串转换为多行数据
数据库·oracle·json
被摘下的星星21 小时前
MySQL count()函数的用法
数据库·mysql
末央&21 小时前
【天机论坛】项目环境搭建和数据库设计
java·数据库
徒 花21 小时前
数据库知识复习07
数据库·作业
素玥1 天前
实训5 python连接mysql数据库
数据库·python·mysql
jnrjian1 天前
text index 查看index column index定义 index 刷新频率 index视图
数据库·oracle
瀚高PG实验室1 天前
审计策略修改
网络·数据库·瀚高数据库
言慢行善1 天前
sqlserver模糊查询问题
java·数据库·sqlserver
韶博雅1 天前
emcc24ai
开发语言·数据库·python