SQL 学习心得之五

来源:互联网 发布:mysql多表查询语句 编辑:程序博客网 时间:2024/04/29 13:45

大家好,我今天介绍一下,关于多表联接

(1)内联接

  内联接是最典型的和最常用的联接查询,它根据表中共同的列来进行匹配,特别是两个表存在主键关系时通常会使用到内联接查询。

 内联接查询通常会使用“=”或“<>”之类的比较运算符来判断两列数据项是否相等。

 内联接使用inner join 关键字来进行表之间的关联。

(2) 外联接

外联接可以是左外联接、右外联接、完整联接

左外联接:left join 或left outer join

左向外联接的结果集包括left outer 子句指定的左表的所有行,而不仅仅是列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列均为空值。

右外联接:right join 或right outer join

右外联接是左外联接的反向联接,将返回右表的所有行。如果右表的某行在左表中没有匹配行,则返回空值。

(3)完整外联接:full join 或 full outer join

完整外联接返回左表与右表中的所有行,当某行在另一个表中没有匹配时,则另一个表选择列为空值,如果之间有匹配,则整个结果集行包括基表数据值。

(4) 交叉联接

交叉联接返回左表中的所有行,左表中每一行与右表中的所有行再一一组合,相当与两个表“ 相乘”。

内联接:有两方式实现

a、在where 子句中指定联接条件,在from 子句中使用join ...on 子句来实现。

b/、在from 表名 inner join 表名 on 指定联接条件 

外联接查询

      内联接的结果是从两个或两个表以上的表的组合中挑选出符合联接条件的数据。如果数据无法满足联接条件则将其丢弃。在内联接中,参与联接的表是平等的。

      在外部联接中,参与联接的表有主从之分,以主表的每行数据去匹配从表中的数据列。符合条件的数据将直接返回到结果集中;对那些不符合的联接条件的列,将填上NULL 值再返回到结果集中去。