00:00
来,咱们接着看啊。我们上节课呢,说的这个连接查询啊,这个连接查询我们主要说了什么呀,就是内链接。是吧?内连接当中包括什么?等值非等值,还有自连接。啊,我只讲了这个叫做SO99的语法,SQ92语法我就没讲啊,因为这个实在是太少了啊,也没有人去写这种东西了,那大家重点掌握这个九九语法就可以,接下来咱们看一看这个。叫做外连接行吧,外连接。首先就是说我们要知道啊,什么是外联。啊,和内链接有什么区别。
01:00
这是第一个问题。我们探讨一下。那是这样子啊,解释一下啊,那连接假设A和谁啊,B点进行什么连接。使用内连接的话,凡是什么A表和B表能够匹配的记录。啊,或者能够匹配上的记录查询出来。就内链接是假设A表和B表进行连接,使用内连接的话,凡是A表和B表能匹配上的记录查询出来,这就是内链接。AB2张表没有主主副之分。
02:01
啊,AB2张表注意没有什么呀,主负之分,两张表是平等的,这是内连接,那外连接是什么呢?来解释一下。假设A和B进行表连接,进行连接,使用外连接的话。啊,A表AB2张表中有一张表是主表啊,一张表。是负,主要查询谁。主表中的数据带着查询什么附表?
03:03
如果附表中的数据。没有和我主表中的数据匹配上。附表中会自动模拟出nu。与之匹配。当附表中的数据没有和主表中的数据匹配上。附表。自动模拟出那与之匹配。我们得好好先把这个概念去去理解了,就如果是内连接呢,就说白了,AB2张表是它们是平等的,并不是说我主要是查A表,或者说我主要是查B表,那连接的意思就是说我AB能匹配上,我就查出来A和B的数据,匹配不上我就不查,匹配不上我就不查了。
04:09
平等关系,但如果是外连接就不一样了。各位外连接是说。我AB2张表连接查询,使用外连接的话,其中有一张表,假如说A表是主表的话,那B表就是副表,有主副之分了,主要是为了查什么表啊,A表中的数据我无论如何我都要干什么查出来,捎带着能和B表这个附表能匹配上的记录也查出来。但是B表的,因为我主要是要把这个主表的数据都干什么都查出来。对吧,稍带着去你B表里面,如果能匹配上附表数据的,把B表的这个附表数据也也给它匹配出来。但是我问大家,有没有可能我A表当中的某一条记录和B表匹配不上?有可能。但这个时候我还是希望。
05:01
把A表主表这个数据就算和B表匹配不上,我也要把A表这个主表这个数据干什么查出来。你听懂了吗?B表是不是没法给他匹配B表这个附表会自动模拟出什么,那与之匹配。这个就需要使用外连接。有的可能还是不太理解来,这只是一个理论啊。外连接呢?的分类包括什么呢?左。外连接。啊,用外连接。左外连接就是做左连接。
06:03
右连接右位叫做右连接。左外连接指的是左边那张表是主表,右外连接说的是右边这张表是主表。左外连接就是什么?就是表示左边的这张表是主表,右外连接表示什么呀?右边的这张表是主表。另外要说的是,任何一个左外连接都有一个右外连接的写法,任何一个右外连接也都有一个什么左外连接的写法,就是左连接可以写成右连接,右连接也可以写成左连接。我一会儿可以给你举个例子。左连接有什么右连接的写法,右连接也会有对应的什么左连接的写法。
07:17
那这块呢,是讲一个理论啊,就是说什么是外连接是内连接,内连接是AB2张表平等,你没有主副之分的,就是能匹配上咱就查出来,匹配不上咱就不查了。这个外联接说白了就是AB,就是说比如说我主要是查A表,你B表就捎带着捎带着查出来。能匹配上,就把B表的数据捎带着查出来。如果说A表的数据跟B表的数据匹配不上,千万别影响我A表的查询。因为我A表就是为了查这些数据,不能因为说你B表给我匹配的话,让我A表里面数据也没查出来少数据了,这样肯定是不行的。
08:01
我们举一个什么样的例子,有主副之分了啊,而且我也告诉大家,外连接分什么呢?左外右外,左连接又可以写成右连接,右连接就可以写成左连接,对吧?啊,左连接的时候左边表示主表,右连接是什么呀?右边的表是主表啊,我觉得我们可以想一个例子。对,这个同学说的很好,我们要找出什么?找出每个员工的上级领导。我们查出13条记录,不对吧。找出每一个员工的上级领导,我们要找出所有员工对吧。那我把这个数据拿出来。
09:00
这。再拿过来啊。我们再分析一下来,各位。我表是员工表,B表是领导表,我主要是为了找出每个员工的上级领导,也就是说我每个员工是不是都要找出来,假如这个题目啊,说的是所有员工啊,所有员工必须全部什么查询出来,你懂什么意思吗?就说king我也要查出来。但很有意思的是,Q,这是A表与B表进行表连接的时候,如果使用内连接,什么叫内连接?各位内连接就是A表的数据和B表能匹配上查出来,匹配不上就不查了,大家还记不记得我在查的时候查询13条记录,也就是说king的nu和任何一条记录都匹配不上,所以会导致这个king的这个记录就差就丢失了。对吧,那你说king人家是大boss。
10:03
他是不是一个员工啊,他也是,所以说king你也必须给我查出来,也就是说我AB2张表在进行连接查询的时候,我希望A表占主导地位,我主要是为了查A,我希望把所有员工都查出来,捎带呢,我去查什么这个员工的什么上级领导是谁?你不能说我没有上级领导,我这条记录就给我抹抹掉了。懂什么意思吧?就外联与内接的本质区别是啥?本质区别就是内连接是啥,就你记住A表B表平等关系,能匹配上咱就查出来,匹配不上就不查了,这是内连接它是平等关系,但是外连接它就有主副之分了啊,就是有A表B表,哪张表是主表,哪张表是副表,一定要记住外连接里边一定是有一张表,是主要查这张表的,我主要就是为了查他。你不能说我给你匹配不上,我这条记录就丢了,就是说我这个记录我还是照样要干什么查出来,就算我上级领导的编号是没有的,OK,我是也是个员工,我也必须要查出来,这是主表各位。
11:09
听懂了吗?所以此时应该使用什么外连接?SQL语句怎么写?关键是?员工表的这个编号。等于零导表的这个编号。还记得吧?嗯,所以我们先把外连接写成内连接,怎么写?内连接还记得吧?内连接怎么写?Select什么?A边取一内是什么员工?B边取域内是什么?是不是领导?好,那from哪张表EP join引谁?Emp BA on条件是A的MGRR等于B的EP number好,大家还记得这条S吧?
12:00
这是内链接啊,导致了我们这条语句最后的结果是不是只能查询出13条,就因为我只能和他匹配,和他匹配上,和他匹配上那个king,那个king,那个大boss跟任何数据都匹配不上,King没出来,所以你把这个呢改成外连接,注意这是内连接主意啊,如果把这个内连接给它改成外连接,你想一想,是不是有一张表是主表。我主要把哪张表显示出来这张表,所以这加什么left。左连接。Left是什么?左边就是左边吧,这是右边吗?把左边这张表数据你记住,带left的意思就是说左边是主表,懂什么意思不?主表数据我是无论如何都要查出来的。就算我跟你可能怎么着匹配不上,我A也是主导地位,也要查出来你B呢,跟我匹配不上,我说了这个副本会自动模拟出,那跟他匹配吧,嗯。
13:11
你看14条记录。主表很清楚的,你可以看到谁是主表,这张表。King出来了,这个领导跟他匹配不上,这就自动模拟重新那跟他匹配了,看见了吧,这叫附表,匹配不上的话,附表会自动整一个,那跟他匹配。匹配中。那你很清晰的可以看到谁是主导地位,就是左边这张表叫做员工表,是占主导地位,我主要是为了查员工。外连接,那我问你这个外连接属于左外是吧?左外连接或者叫什么左连接,那你把这个给我改,给我改成右来怎么改。
14:03
把这个改成right,把这个改成B,这个改成A。对吧,A表是不是员工表是啊,所以这个结果跟上面一样不一样,一模一样。没有任何区别。这就是我刚才所说的,任何一个左外连接,它都有一个右歪连接,或者叫右连接的什么写法?你调个个就行了,你左外连接就是这个是主表,你右外连接的话,无非写的就是right,你left和right你还不知道吗?对吧,这是最基本的英语单词,Light是左边,Right是右边,那右边的话就是这张表是主表,左边的话就是左边这张表是主表。就这意思。
15:00
好,各位。这个里边啊,实际上有一个什么al。是什么?是内是外连接了吗?来,把这个拿过来,Al可以怎么着省略。结果是不是一样?所以这块我想说的是al是可以什么省略的,包括下面的这个右外连接,我问大家是不是这个right后边也应该会有一个al啊?来,拿过来我们再执行,结果还是一样的。所以说还是那句话,Al可以什么省略的?那现在同学们告诉我,为什么inner和al都能省略?原因是区分内连接和外连接的关键不是这俩单词,是主要看你这条circlel语句上有没有right和left,只要你有right和left,妥了,它100%一定是什么外连接,只要你没有left,也没有right,这说明什么?
16:24
会了吧?就是说,所以说区分这个内连接和外连接,我再强调一下,靠的不是这俩单词,这个inner和alter,所以inner和alter都可以怎么着省略,哎,就是这样,那有同学,有同学说老师那为什么有这样一个语法呀,原因很简单,带着inner和alter的话,可读性好。就你一看al or外连接,一看就是什么内连接,懂什么意思吧,但是如果说我们不带着它。也行。因为区分它完全不不需要这俩单词,就看你语句里边有没有这个left和right,各位内连接用的多还是外连接用的多。
17:03
外连接以后的实际开发过程当中,我再强调一下啊,是外连接使用居多。很少说,就是两张表是平等关系啊。我一般我们在查的时候,一般这个客户的需求啊,客户的这个需求都是为了查什么,查查某一张表就是主表。就我要查这个数据就查这个数据,同时我要关联去查能够匹配上的记录,但如果匹配不上的话,我这张主表数据必须得给我检测出来,你不能因为我匹配不上,你让我数据丢失,这不行。懂什么意思吧,所以外连接居多。外机还是使用比较多一些。好,这是这个案例,各位啊,这个案例我们希望大家能够好好去理解一下,因为在这个SQL语句查询当中啊,就是很多程序死到这个这个这个外连接上面的还挺多。
18:01
就这个外连接,就是这个东西就听不懂他这是什么,是外连接对吧?啊,咱们还要好好理解理解啊。以后你们在笔试的过程当中,最后那道题也基本上都是外连接的方式。笔试题写思考。你用内连接最后的结果会少啊,你用内连接查完之后,这个数据就会丢失。你用外连接就可以保证其中一张表的数据是完整的查询出来的。你匹配不上没关系啊,我又不是为了查,主要查你领导对吧,我把员工查出来,捎带着把领导也查出来,如果我这个员工没有领导,你也千万别把我领,也千万别把我这条数据干掉了,如果把这条数据干掉了,那这个我们的最后的业务结果就不对了。啊,所以这个时候要把这个K加上去,要想把king加上去,那你就得需要用什么呀,外连接,你外连接才可以保证这张表的数据无条件的什么无条件的,这个主表数据才会无条件的全部干什么查询出来。
19:06
啊,就是外连接最重要的特点是什么?就是主表的数据无条件的全部干什么查询出来。行了,那我们出一个题,看大家到底有没有掌握啊。找出哪个部门没有员工。
20:02
这是员工表。吴门表。找出哪个部门没有员工,你看部门编号是二十三十十,就是没有40对吧,但是这里是不是有个40部门。对不对?哎,我要求你干什么呀,找出什么,找出哪个部门没有员工,你怎么做。你有多种解决方案啊。用Y连接行不行?拿着谁跟谁连接,连接条件是什么?联系条件还是这个部门编号等于谁?
21:00
等于这个部门编号吧,如果使用内连接的话。40。是不是就忽略掉了,那用外连接应该是哪个是主表。这张表是做主表还是这张表做主表,下边表做主表对吧,那就会导致这个数据是不是都查出来了,但查出来之后。对方表是不是一个空,对方表是模拟出一个浪与它匹配啊。那你这个该怎么写?哪张表EP照先写内链接谁DPPD啊,条件吧,E的什么部分编号等于D的什么部分编号吧?好,这是不是内连接?是吧,好,那接下来咱们告诉我这一块,我写right还是left right。
22:02
为什么写right?因为右边这张表,你是不是想让它作为主表,所以这怎么写啊?那这块一点星地点星能看懂吗。E表的所有字段吧和D表的所有字段吧,我们把这个拿过来粘贴过来,你会看到怎样一个结果呀?一共15条记录员工一共多少条,14个员工,但是现在是15个记录吧,其中最后一个记录大家看看见了吗?哎,这个显示的格式有点乱是吧,有点乱,咱们这样呗,这个字体有点小吗。哎呀,这个应该早点儿说呀。
23:06
你这个WIN7拉动不了啊,这个宽度可以改。改成120吧。再拿一下。好,大家看啊,这个记录是不是都有,前面是不是都是,那那你这个位置怎么。找出哪,我的题目的含义是找出哪个部门没有员工啊,那这应该继续怎么做?Where,条件?这张表,Right join这张表,这张表作为主表,全都查出来一点星,地点星,然后on条件是它,Where,条件是加什么?意义的。
24:01
E也行,E p number也行,Salary也可以,总之是吧,直接写e.e p number is not。这个是不是就删掉就行了。对吧,你不希望查出来所有的呀。不,你带着他这个结果就是什么样啊。对吧,你是不是要这个信息,所以这怎么办,删掉就行。就是这个部门没有员工,懂了吧?这这就是一个Y连接的应用啊。就两张表连接,Right join是右边这张表作为主表,我主要查的是这张表。
25:03
然后接下来你连接的结果我也让你看见了,那接下来你外条件就是一表p number is none就行了,它为空的。就是没有这个部门没有员工啊,那这样卖给你。好了,这个关于咱们这个连接查询当中各位啊,还有一个什么叫做全连接,你要感兴趣,你自己研究一下,这个很少用,几乎不会写啊,全连就是既有左连接,又有什么又连接,就是左边是主表,右边也是主表,这两张表都干什么,全部查出来。原程表数据全部查出来,A表的数据跟B表的数据怎么着匹配不上?对吧,但是不能耽误B表的数据查询,B表的数据和A表的数据匹配不上,你也不要耽误什么呀,AB表的数据查询也是AB表点都给他查出来。
26:01
全部都长白啊,全连接了解啊,这个东西没用没用啊,在实际开发中用的太少了,也许您一年两年都用不上一回。啊,这种情况甚至也有可能你开发很多年都用不着啊,因为这种业务很少见,主要是这种业务很少见啊,没有这种业务。但也不能说绝对没有啊,所以说你有兴趣你就看一看啊,咱们这里在这里就不再说了,但是面试官问你这个表的连接查询有几类,你要知道有内连接,有外连接,有全连接,内连接就是AB2张表平等关系,没有主副之分,外连接就是什么呀?就是AB2张表有主表和副表呗,主要是查谁对吧?哎,这个要搞清楚啊,用left还是用right,用left就是左连接,用right就是右连接对吧?右连接是右边那张表是主表,左连接时左边这张表是主表,右连接可以写成左连接,左连接也可以写成右连接。
27:03
但你左连接就叫左外连接,右连接就叫右外连接,那程序员不一样,他可能说法不同啊,但是这个事呢,咱们该说的还要说啊,好了,这是关于咱们的一个外连接,各位啊,这个内容呢,还是比较重要的。还是比较重要的啊,外连接和内连接的一个区别也很重要,下一周呢,好好琢磨琢磨啊,好好琢磨琢磨。
我来说两句