本文主要是介绍数据库使用之union、union all、各种join的用法区别解析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《数据库使用之union、unionall、各种join的用法区别解析》:本文主要介绍SQL中的Union和UnionAll的区别,包括去重与否以及使用时的注意事项,还详细解释了Join关键字,...
一、Union 和Union All
1、区别:
Unionjavascript去重,而Union All不去重。
2、注意点:
1.被合并的每个SELjsECT语句的列数、数据类型要相同(一一对应)。
2.使用Union时,由于可去重性,可能导致数据丢失。
3.使用Union All时,由于不可去重性,可能含重复的记录。
3、具体举例
【union】
【union all】
二、Join关键字的区别
1.left join和inner join区别
【长话短说】inner join(内连接)得到数据更少,直接剔除匹配不到的数据(剔除无关联ID的数据),inner join = join。
【例子】如下图所示,inner join不显示红框的数据,left join会显示
SELECT * FROM student s LEFT JOIN score sc on s.id=sc.studentid SELECT * FROM student s INNER JOIN score sc on s.id=sc.studentid
【查询匹配失败的数据】
SELECT * FROM student s LEFT JOIN score sc on s.id=sc.studentid WHERE sc.id is null --查询从表ID为空的数据,就是联表匹配不到的数据
2.联表条件写法差异
--联表:只要满足关联关系,B.IsDeleted是什么则返回什么 SELECT * FROM TABLEA A LEFT JOIN TABLEB B ON A.ID=B.EXID --联表不筛选:只要满足关联关系,B.IsDeleted≠0 则返回null SELECT * FROM TABLEA A LEFT JOIN TABLEB B ON A.ID=B.EXID AND B.IsDeleted=0 --联表且筛选:只要满足关联关系,B.IsDeleted≠0 则返回null,假如是null则被where过滤掉 SELECT *http://www.chinasem.cn FROM TABLEA A LEFT JOIN TABLEB B ON A.ID=B.EXID WHERE B.IsDeleted=0 --【结论】数据返回多少关系是:第一种=第二种>第三种 -- 因为第二种是A左联筛选后的B表,左外保证A表完整性,和第一种一样 -- 第三种是连接后再筛选,剔除的数据可能包含A表的数据
三、Cross Join
计算所有表的笛卡尔积:
总结
到此这篇关于数据库使用之union、union all、各种join的用法区别解析的文章就介绍到这了,更多相关union、union all、join用法区别内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!
这篇关于数据库使用之union、union all、各种join的用法区别解析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!