日记大全

日记大全 > 句子大全

基本技能篇:关于SQL语句中的几个join

句子大全 2023-09-03 04:09:01
相关推荐

join的用法是SQL查询中最为常见的语法之一,也是使用者必须非常理解并掌握的知识点,今天我将通过本文给大家好好讲讲,为了实验效果而提前准备的两张表:

Inner join : 内连接,产生的结果是两边的交集(数学不好的小伙伴们,解释下交集就是A 和B同时都有相同的值),比较简单就不贴代码了,我们直接看下效果:

2. Left join: 左连接,以左边的表为基准,不管是否满足条件都会把左边的数据全部展示,而右边的数据只显示能匹配上的,匹配不上时用null填充;

代码效果如下:

3. Right join:右连接,理解方式同左连接,只是换成了以右边的表为基准,左边的数据去匹配,只显示能匹配上的,匹配不上用null填充;

4. Full Out join: 外连接,产生的结果是表A和表B的并集,也就是会全部显示出来,看下结果:

5. Cross join :返回A和B表笛卡尔积的结果集,将左边和右边的每种可能组合都列出来,返回的行数是 表A的行数 x 表B的行数 ,结果展示:

总结:

join 用法关联条件使用的是 on 关键字,类似于where语句; Inner join 用法就相当于普通的表用逗号关联,left join 用法类似于 *= ,但是*=在sql2008版本以后就不被支持了;left join 和 right join也是外连接,所以也可以写成 left outer join 和 right outer join,一般都用简写 ;项目中常用的就是 Inner join、left join、right join,Full Out join用的很少,Cross join尽量不要用,尤其是数据量大的表,关联的时候如果产生笛卡尔积,会严重影响性能,因此一定要注意。

再说个join之外的知识点,关于null的,前面的文章中也用到了这个概念。

首先我们要明白的是,null 不是空,更不是空格,null是什么都没有。

举个可能不太恰当的例子,帮助理解下:

(1)某次期末考试,A同学没去参加,因此查不到他考试的记录,此时其成绩可表述为null,null表示没有值 ;

(2)某次期末考试,A同学参加考试了,但成绩还没出来,因此能查到他考试了,但是其成绩暂时表述为空,空也是值;

(3)某次期末考试,A同学参加考试了,但是成绩比较差,题目全错了,那么其此时的成绩可以表示为0 ,或者空格,这属于常量值了。

这个例子感觉还是说明的不够清楚,但是希望读者能大致明白这几个概念上的区别,后面我们再通过各种的例子和代码,去增加对这些概念的理解。

阅读剩余内容
网友评论
相关内容
拓展阅读
最近更新