类型:内连接 ,外连接{左外连接,右外连接}
之所以要使用连接查询的意义就是为了,借助数据库可以避免大量的数据重复。
进行连接查询的前提是要求多张表之间存在相关联的字段。
这里指的相关联的字段就是表与表之间存在着关系,也就是说表与表之间需要存在着相同意义的数据。
进行连接查询的前提条件:多张表之间要存在相关联的字段。也就是多张表之间要存在相同意义的数据。
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)。