内连接的连接结果仅包含符合连接条件的行,参与连接的两个表都必须符合连接条件;而外连接的连接结果不仅包含了符合连接条件的行,同时还包括不符合自身条件的行,其中还包括左外连接、右外连接以及全外连接。
2、注意事项不同
内连接需要注意区分在嵌套查询时使用的any以及all的区别;外连接不需要区分,左表和右表都不受限制,所有记录都显示,两个表不足的地方可用null进行填充。
以下介绍mysql内连接和外连接的区别:
--表tab1
id name
1, Jack
2, Tom
3, Kity
--表tab2
id grade
1, 56
2, 76
11, 89
内连接:进行连接的两个表对应的相匹配的字段完全相同的连接。
select t1.*,t2.id as t2id,t2.grade from tab1 t1 inner join tab2 t2 on t1.id=t2.id
结果:
id name t2id grade
1 Jack1 56
2 Tom2 76
外连接又分为左外连接和右外连接。
左连接即LEFT OUTER JOIN:
两个表进行左连接时会返回左边表中的所有的行和右边表中与之相匹配的列值没有相匹配的用空值代替。
select t1.*,t2.id as t2id,t2.grade from tab1 t1 left outer join tab2 t2 on t1.id=t2.id
结果:
id name t2id grade
1 Jack1 56
2 Tom2 76
3 Kitynull null
右连接即RIGHT OUTER JOIN:
两个表进行右连接时会返回右边表中的所有的行和左边表中与之相匹配的列值没有相匹配的用空值代替。
select t1.*,t2.id as t2id,t2.grade from tab1 t1 right outer join tab2 t2 on t1.id=t2.id
结果:
id name t2id grade
1Jack1 56
2Tom2 76
null null 11 89
以上通过一个例子描述内连接和外连接的区别。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)