表的连接在使用中是非常频繁的,那么连接查询的具体的逻辑有哪些呢?这些不同的连接又有什么区别呢?
1. 连接的分类 :
主要分为:内连接、外连接(左连接、右连接 、全连接)、交叉连接(笛卡尔积)
内连接(INNER JOIN):取两表的交集
左外连接:左连接是查询出左表的所有数据,右表中有对应的则显示出来,没有对应的则显示为null;
右外连接:右连接的道理和左连接的道理类似,以右表为准,查询出右表的所有数据,左表中有对应的则显示出来,没有对应的则显示为null.;
全外连接:完全外连接是首先按照左边的表进行遍历,然后按照右边的表进行遍历,这样的结果一定会出现同一行中,左面的表有值,而右边的表是null,右面的表有值,而左面的表是null的现象啦。;
交叉连接:交叉联接返回左表中的所有行,左表中的每一行与右表中的所有行组合。相当于两个表中的所有行进行排列组合。若表a有X行,表b有Y行,则将返回XY行记录;
自然连接:自然连接是一种特殊的等值连接,自然连接无需指定连接列,SQL会检查两个表中是否相同名称和类型的列,如果没有则返回错误。它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉;
联合查询(union join):是一种很少见的连接方式。Oracle、MySQL均不支持,作用是:找出全外连接和内连接之间差异的所有行。这在数据分析中排错中比较常用。也可利用数据库的集合操作来实现此功能;