联合的类型分为 INNER JOIN 内部联合,OUTER JOIN外部联合,这两种联合的本质区别在于ON子句,前者ON子句的条件必须为真,后者没有此限制
INNER JOIN 分为
等值与不等值联合
这种联合的子句的条件指定一个表中的某个字段必须等于另一个表中的某个字段,这是一种最常用和最有意义的联合
交叉联合
这种联合没有ON子句,联合中列举的所有表中的所有记录行都被包含在结果集中,很显然这就是两张表的笛卡儿积,交叉联合不是很有用
自联合
当一个表联合到它自己,而不是其它表时,产生自联合,自联合的主要用途是寻找表中记录的匹配对,自联合与子查询一起使用时比较有意义,在使用自联合的时候一定要为这个表或列赋予一个别名,自联合通常非常复杂。
OUTER JOIN 分为
左外部联合
当联合A,B两表时,需要其中A表的记录始终出现在最终结果中可选择使用此联合,那么不论A表记录中是否存在满足ON子句条件的记录,A表的所有记录都将显示
右外部联合
此与左外部联合正好相反,使用左还是右没有任何规定,完全看你的爱好了
完全外部联合
这是前两种联合的特征合,即联合的所有表的记录都显示在最终结果中
以下示例为SQL Server 2005数据库引擎关于联合时所使用的查询计划,为SQL优化作指导。
数据库引擎主要使用嵌套循环,哈西匹配,合并这三种方式处理联合查询,根据数据量的不同,是否有聚簇索引等辅助条件,数据库引擎自动评估开销选择,但依旧可以强制使用Option参数指定。