00:00
好,接下来呢,咱们来去说一下外连接,那么我们呢,先去通过一个案例来去引入吧,假如说我想去查询没有男朋友的女神,女神名啊,那么关于这个男朋友这个东西的话,咱们在哪个库呢?呃,是不是昨天咱们引入了一个girl子库啊呃,咱们来看一下这个库哈,那对应的有两张表,一个是beauty是不是,还有一个是boy意思呀,好,那么现在呢,我们去查看一下,比方说beauty表,我们发现呢,它这个里边的话对应了有一个播音主的ID,对不对,哎,这个都有是吧,但是呢,有的这个,哎,你看这个柳岩呀,苍老师啊,是不是他就就就随便给了一个号呀啊,他不是不是哪个表里面的呢,是不不是鲍一表呀啊那那我在这呢,呃,把这个鲍一表也查看一。
01:00
一下哈,Select的星号from boy意啊看一下应该是一共是四个男神对不对啊,那么我们就认为什么样子的叫做没有男朋友呢?就是对包衣服装的ID是不是就是不是一到四之间的呀啊,我们就认为这样的吧,行吧,或者说你要是感觉不太合适,那你就这么写,查询一下男朋友不在男神表达对不对,男朋友不在男神表达啊,是不是女神名啊,这样去写没问题吧,哎,那我们就是查这个的吗?哎,怎么去查呀,用我们之前的方式能不能做出来,能不能做出来想一想之前咱们使用的内连接,或者昨天九二语法中讲到的那些,实际上是不是都相当于在查询两个表的交际部分呀,对吧,那其实说白了就是对你这个鲍鱼。
02:00
它的ID的值和那边ID的值是不是一样的呀,那不一样的是不是就查不出来呀,那假如说有这样的需求完了是不是干不了了,对吧,这个时候就得用谁了外连接,所以外连接它的应用场景基本上就是查这种的,好那所以说呢,我们在这写一下,一般的我们的外连接就是用于查询一个表中有是不是另一个表没有的记录,我们这个时候就可以选择外连接了,好那么接下来呢,咱们就去看一下我们外连接里边它是怎么去实现的哈,我这呢,通过一个图给大家去解释一下,他实际上是这样子的,呃,也是他拿这两个表嘛,第一个表的话呢,去挨个的匹配我们第二张表里边的每一条记录,那连接条件呢,还是我们之前找到的连接条件,比方说对于这两张表,连接条件就是boyfriend的ID和boys表的I。
03:00
低对不对啊,那么假如说有一样的呢,外连接它是这样的哈,如果你要拿着beautyt表去匹配包表啊,那么主表呢,他认为就是beauty表,如果说有一样的,它也能显示出来,也能显示出来,但是如果没有一样的,比方说柳岩它的这个爆音符上的ID值是不是八呀,这个里边有一样的吗?没有它也能显示出来,那有的时候那边显示出来,这一步显示什么呢?能听懂意思吧,那它这个表显示什么才能跟柳岩去匹配呢?它显示的是no,它显示的是no啊,它这样的哈,我再说一遍,也就是我们如果说使用外连接,它实际上是分组层表的,假如说我是拿着beauty表去匹配报子表,其实就是相当于我们把标题表当成了总表,那报表当成了从表,好那么呢,查询的时候,它会将主表中的每一条记录都显示出来,都显示出来,比方一号一直到12号,其实都有,都有,那么假如说从表中有跟他匹配的,比方说三号Angelababy跟他匹配的是不是三号黄晓明啊,哎,那这块就显示三号黄晓明。
04:23
那么假如说有不跟他匹配的,举个例子,一号柳岩,柳岩咔咔咔,这是他的自己的信息哈,显示了,那么这一边是不是没有跟他匹配的呀,那么从表中用谁来填充呢?那它这个意思啊,所以说我们外连接的话呢,它相当于查询结果是两部分,哪两部分呢?看一眼啊,第一步的第一部分的话呢,就是相当于交际部分,有点类似于是不是就是咱们内连接的结果呀,好,第二部分的话,就是主表中有,但从表中没有的,我们用谁给它填充啊,那所以它相当于两部分,好那么这个呢,我先给大家去写上哈,啊,那么也就是这个里边有一个特点,第一个特点呢,就是我们外连接的查询结果为就是我们主表中的所有记录,这是肯定的,那么如果说从表中。
05:24
有和它匹配的,什么叫有匹配的,那实际上是不是就是连接条件一致啊,啊也就连接条件成立,如果有和它匹配的,则就是显示是不是匹配的,匹配的列哈,匹配的值,那么如果我们图表中没有没有和它匹配的则显示,那能听懂意思吧,所以我们可以这样去认为,就是我们外连接的查询结果等于查询结果啊,它等于一个是内连接结果,是不是相当于内连接结果呀,外加我们主表中有而从表没有的记录,可以这样去说吧,啊,它这样的一个意思啊,好,那么这个地方我们发现我们反复的提到了是不是主表和从表呀,那么谁是主表,谁是从表大的是主表小还是从表,这个大小怎么分的嘞,前面呢。
06:24
前面的是后面的不是也不是这样去分的,不是这样去分的,那么我们这个时候就要分左弯和右外了,如果是左外连接,我们使用的是不是叫做lefto draw呀,那左外连接中left左边的是主表,它是这样分的,如果说是右外连接,对了,Right draw音右边的是主表,Right draw音右边的是主表啊,当然这个就是lab的照音,对吧,Lab的照音能看明白吧?哎,所以说从某一种程度上来讲,我们左腕和右腕实际上交换两个表的顺序是不是能达到一样的效果,可以这样说吧,啊,那么我们第三,那就是第三点哈,啊,左腕和右腕,左腕和右腕,如果或者说就是交换吧,交换我们两个表的顺序。
07:24
可以实现是不是同样的效果啊,可以实现同样的效果没问题吧?啊,你左右两个表一换,Left和RIGHT1换,是不是效果一样呀?哎,根据我们刚才说到的哈,哎,它这样个意思,来,我们简单试一下,比方说我们就做这个题,先查询男朋友不在男神表的女神名都有哪些,那么首先你确定你要查询的字段来自于哪些表,以及查询的东西是谁,确定了我们就可以写基础的东西了,Select,呃,应该我加上别名啊beauty,我起个别名是B可以吧,那b.name啊,然后这样我们把Bo表里边所有的记录我给你查询出来,能听懂吧?呃,我们先这样去写,那就是boy写个别名Bo点星,我可以这样干吧,就是让大家看一下哈,然后呢,再去from,那么他俩谁当主表来,对于这道。
08:24
题,谁当主表,谁当主表是beauty还是不好意思呢,Beauty表能看出来吗?有的时候我不能看出来,老师是吧,我不知道谁是主表记住了,因为根据我刚才介绍的,最终的结果肯定是主表中所有的记录,对吧?那你要看一下你最后想查的是谁哈,我想查的其实是哪一部分了,对,是女神里边的谁了,是不是女神里边像柳岩他们这些呀,是不是这样的一个信息啊,而我要查的这个记录的话,他来自于哪个表,是不是丢体表啊啊,那你当然你来自于哪个表,那肯定是不是主要是查哪个表呀,所以是不是就是BT表做主表呀,所以一般来讲是说你要查询的信息主要来自于哪个表,那么谁就是主表,哎这样去分析,那所以我们确定了主表就是beauty,假如说。
09:24
我要用左外连接,那么我这道就怎么写呢?Beauty是不是放这个地方呀?起个别名B在使用left out draw boys起个别名Bo能跟上吧?哎,这样去写哈,语法上没什么,跟inner join差不多,只是把inner换成了它,然后在or必须要写的B点包1FRIEND的ID等于bo.id对不对?好,我们先这样去连接,看一眼,看一下效果跟我们想的是否一样,好,是都有吧,那这样哈,这三个字段其实就是啥?这三个字段是不是就是我们报表里边所有的记录啊,啊,就是报表里边的所有字段,应该这样去说对不对?报表所有字段,这个就是我们beauty表的字段对不对啊,你看我查的不就是beauty.name以及boy点星吗?啊,你会发现像这个周芷若、小张、张敏、热巴、Angelababy他们是不是?
10:24
对应的都有男朋友跟她去匹配呀,啊,像上面的这几个是不是都没有男朋友跟她匹配呀,那没有的褒S表里边这三个字段的值都是啥,都是呢,能看明白了吧,他这个意思啊,他这个意思,那么假如说假如说我呢,只想查这一部分怎么办?还有用吗?这个是不是相当于在这个结结构集上筛选一下就行了,这个地方用上了分组吗?没有,没有用分组的话,咱们实际上不用have,我们直接用谁就行了,Where where,我们的for表里边,你看我只想查这这几个哈,条件是不是就是这几个中的某一个字段职位冒就行了,一般选谁位呢?一般选谁是不是ID呀,一般选它is now,知道为什么吗?你看是不是出来了啊,当然这三个字段用啥吗?其实。
11:24
对于这道题来说,其实不用查好,是不是这几个就是我们要找的信息啊,这不就出来了吗?我问一下为什么我知道最好选ID,对,因为boys里面的ID我们发现比较特殊,是不是带个小房钥匙呀,这个带个小房钥匙的话,说明它是主见,说明它绝对不为呢,这个东西咱们虽然没说,但是应该也能够去理解啊,你看这是不是写了个飞空啊,非空的意思是说不可能为空,不可能为呢,而其他的两个字段写没写非空没有写,那有的说这又怎么样呢?是吧,这又怎么样呢?好,怎么样呢?来看一下,假如说这个门可以为空,那黄晓明这我就可以,是不是就是整个闹啊,整个闹啊,但我这个这样整好像还不行,好这样好像还不行,我从这改一下update。
12:24
啊,Update,我们报意次表set一下,比方说其中有个CP等于谁,是不是now呀,Where,我们的ID等于三号,能看明白意思吧,啊,然后去执行,现在呢,我们再看box表,它本身是不是就有一个闹值啊,对吧?那假如说本身就有一个闹值,然后在这呢,我再Bo点星,再去查看我们刚才的记录哈,我先别加Y呢,来我们看一眼,哎,这看一下序,看一下效,那么大家来去看一下哈,本身黄晓明这是不是这个这个魅力值就会闹啊,假如说你要是根据他来判断,我本来是想得到的是这些我说的对吧?啊,然后你想判断where user c is now,那么是不是Angelababy验证出来了,这是不是就不对了,知道意思了吧?啊,而ID是不可能有这种情况的,对不对?所以我们最好是写选从表中的那个。
13:24
主键列能听懂吧,最好是选它哈,最好选它好,那么你看这个就说明白了哈,然后呢,我们再去试一下,假如说我要是用右外连接怎么去写呀,假如说用右外连接怎么去写,这个是相当于用左外连接实现的啊,我们仅仅需要把这换成right,把beauty这换成boy beauty,然后把这换成谁Bo Bo对吧,只要这么一换,这就变成了UI连接效果是一样的啊,效果是一样的是不是还是这些啊啊效果一样能跟上吧啊它这个意思好,那么假如说呢,我这个表我还用左外连接,但是我这次主表是谁了?不好意思,我想问大家,我这个效果应该是什么啊,你先看一下数据,看你是不是会了哈。
14:24
我这是报表里边的这么点记录,再看一下标题表的记录,你们要看哪啊,是不是要看这啊啊好,我给你排一下序哈,你觉得应该会查出谁来,大概的效果是什么样子的?现在褒意是主表对吧?褒意是主表你觉得应该会查明出谁来,这个我就叫B点形吧,Bo点形也都查吧,好,大家肯定有一个结果了,咱们来去试一下,现在换成鲍义子为主表了,因为我们能看出来是不是报以,哎,也就是那个男神的编号为四的,他实际上是不是没有女朋友跟他匹配呀,能看出来对不对,那你会发现前面的这几项是不是依然是交际部分呀,哎,这个没。
15:24
什么啊啊,不管谁当主表,那么这几项都能查出来对不对,那么就关键是看这那么段玉,哎,这个是报一次表里面的记录啊,我这个有点长,把这个弄一下,那你看段誉这一行也能出来,但是呢,标题表中是不是都会no啊,来跟它匹配,假如说我想只查询段语,那么也仅仅只需要把是不是beauty表里边的ID是不是为no呀,那这样的话也能查询出来,是不是就是段语了啊,它这样的一个意思能看出来了吧?哎,这就是关于左外连接或者说右外连接,我们需要注意的事情,那么就跟大家说到这儿了啊,能能跟上到大家没有问题呢,咱们试着做几个小案例就行了哈,案例再来一个比方说我想去换一个库了哈,我们想查询一下哪个部门没有员工,这个应该怎么去写啊,这个应该用到是不是我的main employees呀。
16:24
哪个部门没有员工先去考虑哪个是主表,哪个是主表门,我们用总外呢,可以试一下不门表,不门表是不是应该是主表呀,因为我们最终查询的是不是部门啊,部门信息啊,它来自于部门表,好,那确定了我们再去查,那我要查的呢,就是部门的所有的东西吧,可以吧啊地点星,然后我也可以把employees里边的啊,Employeed是把它的这个这个主见列给查一下呀,啊好,From我们的主表呢是departments d,然后再去left auto draw employees e2后面加还是它的连接条件,Department面台D等于E点底department每台D,如果不加条件,那就是。
17:24
两部分对吧,哎,就是两部分啊,都出来了哈,这个比较多,这个比较多,是不是有这些呀?啊然后呢,你看我们再想去干啥呢,是不是把那个employee ID为no,说明是不是没有跟它匹配的呀?哎,那把这个呢给查出来,那就继续加where,从表1.1CLA ID is now是不是就做完了啊,那么假如说我要是用U,应该怎么去做了,假如说用U,对,如果用U的话,我们就仅仅需要把把left换成right,把这个换成employs,然后这个地方改成E,然后这个改成的是department成SD能跟上吧,大家啊,它这样的一个意思哈,行,这是关于左弯右弯,我们先说到这儿,把这个停一下哈。
18:24
啊。
我来说两句