一、知识点名称
多表联合查询(一对多数据显示、多对多数据展示)
二、知识点业务场景
一对多关联:
学生和成绩的关系
用户与订单的关系
企业与员工的关系
用户与银行卡的关系
多对多关联:
学生和选课的关系
订单和商品的关系
用户和角色的关系
角色和权限的关系
三、知识点业务(原理)
a、多表联合查询的原理
1、先确定数据要用到哪些表。
2、将多个表先通过笛卡尔积变成一个表。
3、然后去除不符合逻辑的数据。(根据两个表的关系去掉)
4、最后当做是一个虚拟表一样来加上条件即可。
!笛卡尔积是指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示为X * Y,第一个对象是X的成员
而第二个对象是Y的所有可能有序对的其中一个成员。例如下面:
b、多表联合查询的不同方式
1、交叉连接
交叉连接即是笛卡尔积,是指两个关系中所有元组的任意组合。一般情况下,交叉查询是没有实际意义的。
例如:如果希望得到学生表和选课表两个关系模式的乘积,查询语句为:
SELECT * FROM 学生表 CROSS JOIN 选课表;
2、内连接
内连接是一种最常用的连接类型。内连接查询实际上是一种任意条件的查询。使用内连接时,如果两个表的相关字段满足
连接条件,就从这两个表中提取数据并组合成新的记录,也就是在内连接查询中,只有满足条件的元组才能出现在结果关系中。
例如:要查询每个已经选课的学生的情况,查询语句为:
SELECT * FROM 学生表 INNER JOIN 选课表 ON 学生表.学号 = 选课表.学号;
内连接分类:
1、等值连接:
在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的
重复列。
2、不等连接:
在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值,这些