右连接、内连接、左连接解释,或说SQL按如下规则挑选数据

一、存在条件

from关键字,和表链接的关键字 ,如inner join 或 left join 或 right join 都定义的是存在条件

SQL语句中表的层级: 右连接(内部从左至右级别递增) > 内连接(同级无差别) > 左连接(同级无差别)

存在条件使用规则:

1、非最高阶表的同级表之间是否存在相互不影响

2、除最高阶表外,其他表的数据存在的前提是,其高阶表数据必须存在

3、最高阶表的数据必须存在

二、业务逻辑条件

比如where条件

数据存在需要满足的业务条件见表:以其自身和原点画矩形,矩形内的条件都是其需要满足的
右连接、内连接、左连接解释,或说SQL按如下规则挑选数据_第1张图片

三、特别说明

数据不存在时会使用Null数据,但应该把Null数据也视为一条特殊的数据,故同样的与Null数据的组合,也只能出现一次

----------------废话一大堆的思考过程---------------------------------

右连接、内连接、左连接解释 : 右连接(内部有优先级差别) > 内连接(同级无差别) > 左连接(同级无差别)

首先,先定义三种表

右外表 : right join 右边的表 如 A right join B ,B表就是右外表

左外表 :left join 左边的表 如 A left join B ,B表就是左外表

内表 : SELECT * from A inner join B , A 表与B表都是内表,即内表是 from 后面的第一个表,和inner join后面的表

其次:定义一下 from 条件

from 条件是这样一种条件 ,结果集需要拥有 from 规定的表里的数据,最高级别的右外表是必须的,又有低级别的右外表,出现在结果集中,则高级别的右外表必然存在

然后说右外表 、 内表 、左外表的特殊之处

右外表权限最大,对于结果集来说,内表和左外表的数据不是必须的,而具体的某张右外表的数据是否必须又需要特殊讨论

同级右外表 : 将同级右外表进行分级 , 最右边的右外表级别最高,最左边的右外表级别最低,对于结果集来说,级别最高的右外表是必需的,而对于其他级别的右外表而言,若当结果集中出现了某一层级的右外表数据,则其上一级的右外表数据必定存在,这是因为 右外表不仅有着不需要内表、左外表数据的特性,还有着 from 条件的特性

内表 权限中等, 对于内表来说,左外表类型的表的数据不是必须的,同级内表以及右外表的数据是必须的

左外表权限最低 , 对于左外表来说,所有类型的表的数据都是必须的,包括同级左内表、内表以及右外表

然后定义四种条件 :

where条件 : where 后的条件

右条件:right join on 后的条件

内条件 : inner join on 后的条件

左条件:left join on 后的条件

以下从结果集的角度阐述各表数据需要遵守的条件

对于最高级别右外表数据,需要遵守的条件仅有 where后的条件

对于非最高级别右外表数据,需要遵守上级右外表的条件,以及where后的条件

对于内表数据,需要遵守where条件、所有右外表条件 、以及 所有 inner join on 后的条件

对于左外表数据,需要遵守where条件、所有右外表条件 、所有 inner join on 后的条件、以及自身left join on 后的条件

现在从两个角度解释右连接、内连接和左连接

一、笛卡尔积角度解释 各种连接

假设: 每个表有一条特殊数据,这条数据不存在任何有效内容,即所有数据都为null , 而其也不用遵守任何既定条件,即使是where 条件也无法对其进行约束,该条数据被称为 NULL数据

假设 n 表联查,现在取这n个表的笛卡尔积,,然后对这些数据进行筛选

数据层级 最右右外表 > 次右右外表 > … >最左右外表 > 内表 > 左外表

1、结果集中低层级数据存在,而高层数据不存在的数据,被剔除 ,准确的说是,按照层级链组织数据时,某一层级组织了NULL数据,而较低层级未组织NULL数据,该数据不合法,被剔除

2、对于结果数据中的右外表数据,存在不满足where条件,或不满足高层级右外表条件的数据,被剔除

3、对于结果数据中的内表数据,存在不满足where条件,或不满足右外表条件的数据,或不满足所有内表条件的,被剔除

4、对于结果数据中的左外表数据,存在不满足where条件,或不满足右外表条件的数据,或不满足所有内表条件的,或不满足自身左外条件的,被剔除

各种表需要满足的条件如下

以其自身和原点画矩形,矩形内的条件都是其需要满足的
右连接、内连接、左连接解释,或说SQL按如下规则挑选数据_第2张图片

二、结果集角度解释各种连接

1、在结果中 必须若低级别表的数据存在,则高级别表的数据必须存在

2、若相应表数据存在,则其必须满足相应的级别条件

各级别需要满足的条件如下

以其自身和原点画矩形,矩形内的条件都是其需要满足的
右连接、内连接、左连接解释,或说SQL按如下规则挑选数据_第3张图片

你可能感兴趣的:(SQL)