00:00
行,那多表查询呢,完了以后咱们来看一下这个课后练习题啊,课后练习题找到我们这个练习章节练习多表查询。好那么多表尔查询这块呢,一共是列了有哎九道练习题对吧,哎,咱们呢,把这个呢整个呢CTRLC啊粘过来,放到我们这个社会要当中新建一个这个编辑器。诶CTRLV啊粘过来,然后呢,诶我们先把这个文件呢,给大家保存一下。嗯,把这个呢,选中CTRLC。CTRLV,然后多表查询的啊,课后练习。好。啊,这块呢,保存一下行,然后大家呢,也是一样啊,就是呃,你呢可以像我一样,就是把这个题目呢,粘过来之后呢,自己呢试着去写一写,然后呢,你要是搞不定的话呢,一方面你可以看一下咱们做的就是我现在讲的做的这个答案,你也可以呢,直接来参照一下咱们这个,呃,课后练习题的话呢,我在下边呢,把这个每道题的答案呢,其实也都列出来了啊,参照一下也是可以的,行,那接下来呢,咱们来看一看这里边儿的每一道问题啊,首先看第一个。
01:10
说呢叫显示所有员工的姓名,部门号和部门名称,注意这里边儿呢,是不是有一个关键字眼叫做所有的呀。那一提到所有的咱们给大家也强调过,是不是就要考虑到,那如果说你这里边这个字段啊,涉及到多张表,那所有的是不是就得是外连接问题,对吧,那这个大家一定要敏感一些啊好,那咱们开始来写那select,那我们看查询的字段呢,这个姓名咱们就直接用last这个lastname了,我就不写那个firstname了啊然后呢,这个部门号depart。ID,公文名称,Department。Name对吧?哎,这呢我们都比较熟悉了,然后接下来的话呢,我们是一个外连接,那外连接的话呢,这个比音了这个c select多个T,咱们在这个嗯,My circleq当中啊,是不是只支持SQL99这种语法,那SQL92里边这个Y连接呢,咱们MYSQ啊是不支持的,所以呢,咱们就断了这个SQL92的语法这个念想了啊上来呢就SQ99语法。
02:12
From呢,首先是employees,那我们写个别名,然后呢照一下叫departments d,那我就这样来写了,然后紧跟着呢,把这个on呢写上员工表的department ID啊,跟我们部门表的部门ID,它俩是一个连接的关系。好,那整体上来看的话呢,这块感觉上大的雏形就出来了,然后接下来的话呢,我们去做一个细节的处理。那首先的话呢,既然我们刚才提到所有的了,它是一个外连接,那是所有的员工的这个情况,那就意味着我们左边的数据呢,可能会多对吧,那就意味着诶谁多谁就就是呃多的在谁那边,那就是一个什么样的连接,那多的在我们左边,是不是我们就是一个左半连接,对吧?那这个aler的话呢,大家可以完全省略掉就可以了,那这样写完之后呢,就OK了吗?那我们运行呢,发现又挂了,对吧。
03:01
这里边呢,就是我们强调的,如果呢,我们是一个多表的查询,那我们这个字段呢,如果说你要是存在两个表中共有的字段了,是不是一定要有个指明,对吧?在我们这里边儿,你写个一点也行,写个D点也可以,那同时的话呢,咱们也强调了一下,说呢,其实从色后优化的角度来讲,建议大家是不是在多表查询当中,每一个字段呢,都指明它所在的这个表啊,这样呢,就比较完美了,好此时呢,选中再执行一下,一共呢107条记录没问题啊,这是第一道问题,咱们呢,其实在讲这一章的内容的时候呢,说过这个问题,好,这就过了。然后下边第二个。查询90号部门员工的招白地和90号部门的这个location ID。哎,好,我们看一下啊,咱们呢,先把他要查的这个字段呢,咱们先列出来,这叫赵白底,还有呢,叫location ID对吧?好,接着我们看呃,这两个字段的话呢,我们就需要看它来自于哪一张表了,那经过我们这个呃这个查看啊,比如我们employees表里边肯定是有这个赵白地的,那我们关键的是看一下这个departments表里边。
04:09
选中执行,那我们呢,只有这个叫location ID对吧,没有咱们想要找的这个照白D,那就意味着我们是不是还得需要借助一下这个。用这个表对吧?啊这个然后建议大家呢,你后边再去写这个托表查询的时候啊,你上来就写成CIRCLEQ99的语法啊,建议大家这样写,因为呢,它要是个内连接,那就用搜狗九九没问题,它要是个外连接的话呢,是不是也省着我们再去改了,直接你就看是左还是右就可以对吧?好这呢是我们注意的点,另外呢,就是关于这个表的别名啊,大家就都给它加上就可以了。因为我们肯定有连接条件,那你必然呢,是不是要用到这个表名了,所以我们就直接用别名啊更简单一些。那照一下的话呢,就是这个,嗯,字段来自于这张表,这个字段呢,来自于我们的叫底,诶part。问这样一张表,然后紧跟着先把这个on呢写上盘D跟我们的盘D它俩是相等的,然后呢,这个题目当中呢,是有这个过滤条件的要求什么呀?是90号部门员工的这个信息,那就相当于是d.departmentd呢,是不是得等于90呀?
05:14
是这意思吧?看一看是不是没问题是吧,90号部门员工的这个招白D啊和他的location ID,那这两个的话呢,建议我们说也给他加上E的招白ID和我们D的location ID啊,这个题目呢,我们写完了啊,走一下就出来了。行,这呢是咱们这道题目的一个答案。呃,这里边儿呢,你看它不涉及到这个外连接的问题了。啊,因为呢,我们90号部门呢,他要有人的话呢,就出来了,没人的话呢,其实它也是一个空的情况了,对吧?OK啊行,来看这个第三道题。查询诶这块呢,其实是做一个定语出现的,那其实就相当于是个过滤条件一样,那员工的啊这几个字段,哎,我们CTRLC。Select来把这几个字段呢,我们列出来,From这个一啊,就他自己来自于是员工表好,Employees。
06:08
来我们写个一,然后呢,照应一下这个第二个字段和第三个字段呢,我们可以看作是来自于叫departments表。Departments表对吧?来起个D,然后on一下e.department d跟我们的d.department相等,好紧接着呢,我们这里边还有一个叫C,那C的话呢,是存在于我们的叫locations这个表,对吧?那个L,然后紧跟着一个啊d.locationd跟我们l.locationd啊相等,好这个呢,就是基本上算完事了。然后呢,我们再看这个所有有奖金的员工的信息,所有有奖金的,那我们此时呢,如果做一个查,呃,先先别查询的这块,小心一点,我们这些字段的话呢,是不是也得考虑来自于哪张表,对吧?然后这个呢是来自于员工表。这个呢,来自我们的部门表,那尤其是这个字段是不是一定要做一个标识,因为两张表里边都有,好,那这块比我就写成这个D了,这个呢,显然是L的对吧?好,那此时的话呢,如果我们去执行,那么查询出来的这个员工,呃,就相当于是这不是咱们106个员工了,就出来有一个哥们儿,不是没有部门吗。
07:17
那没有部门,然后的话呢,这个所有所有有奖金的,那这里边儿呢,有的人有奖金,有的就没有,那他这边没有说这个事儿,那么不妨呢,比如把这个字段咱给他加上。这就是他的这个奖金率对吧?好,我们选中呢,再去执行一下,当然你会看到是不是这个没有的有的这个都列出来了,就不太合适了哈,那此时呢,我们是不是需要呢?哎,咱们再加上一个where是吧?啊where什么呀,有奖金呢,那是一点commission PT is not not。是不是这样处理啊,来我们选中再去执行。好,大家看此时的话呢,我们出来了34条记录。那这道题做完了吗?有同学说这不做完了吗?哎,其实我说呀,这里边是有一些小问题的啊,当然你看,比如我们写select星from employees。
08:07
然后呢,我问了一下。这个commission PPT啊,Is。把这个去掉。好,我们这个表里边,咱们看看有多少员工,他的commission PT不是空的,但是你注意是不是有35条记录啊,那我们上面呢,只查出来34条记录。原因是不是就在于我们有一个员工是没有部门的,但是恰好这哥们儿呢,还有奖金对吧?有这个奖金,那这里边儿你看又看到了这个熟悉的字眼,叫做所有那有奖金的,那杨海金呢,就是我们你这边呢,查出来35条记录。在这标一下。这呢是35条这个记录,那意味着我们这个呢,是不是也应该是35条记录啊。记录行,那就意味着呢,我们上边这个目前呢,写的是有问题的,说白了呀,就是这儿呢,仍然得是一个外连接的问题,相当于咱们现在呢,这个有奖金的员工这儿呢,其实是查出来35个,那咱咱这块这不也看了,然后紧接着呢,你让这个员工表去跟咱们这个部门表再去做这个关联的时候,那这块呢,实际上它是少这一条记录的,对吧?那继而的话呢,我们在跟这个CT去关联的时候呢,它这块呢,其实也会少这么一条。
09:26
那言外之意呢,就是我们现在要做这个外连接,很显然咱们先写的是员工表放左边了,这是不是就阻碍连接,所以他俩在连的时候呢,我们这个位置啊,是不是得加个left呀,那这个位置加了,我们这个位置还需要加吗?想想。是不是也需要加呀,为啥呀,因为你这俩连以后呢,你可以理解成了就是把这个给补上了,但是跟我们这个CD去比的话呢,这个员工连部门都没有,是不是它所在的城市就更没有确定下来啊,所以这个位置呢,也得需要是不是来一个left才可以。啊,说清楚了,好,来我们这块呢去补一下,我呢把这个left呢补上这个位置呢,还没补,来我们看一看此时多少条记录。
10:05
仍然是34条,所以还没有它接着呢,你还得需要在我们这个位置呢,是不是也把这个left给他补上才可以对吧?好,此时呢,再选中执行35就出来了,那我们往下呢,找一下看看这个哥们儿。他他就在这儿。对吧,他就在这儿,你看他明明有奖金率,但是他就没有这个部门,所以呢,我们要查询所有有奖金的员工,那这个哥们呢,是应该要查出来的。所以说呢,大家在写这个外连接的时候呢,一定要小心一点啊,经常的这个防不胜防就给丢了是吧。好的啊,接着看下一个。说选择city在Toronto啊,多伦多这个多伦多工作的员工的12344个字行,把它选中来,我们做一个select查询这四个字段,好from。这个从前我们看这两个字段呢,来自于我们的employees。那就E,然后呢,紧接着照应一下我们的depart mens d是吧,紧跟着把这个on呢写上。
11:05
等于d.d part的门耐力好,然后这个啊,呃,目前我们看这个字段的话呢,就没啥了,这四个字段呢,是不是都来自于这两张表,按说呢就可以了,但是呢,你注意它这块还有个条件说CT在Toronto工作的,那我们这个CT的字段呢,是不是不存在于这两张表,说白了就是我们是不是还得再去照一个表,对吧,照这个叫哎,Locations这个表加个L。嗯,这个on一下,然后部门的叫location ID和我们这个l.location ID,这是关联的,行,这就关联上了,关联上以后的话呢,接着回过来去看一下我们这些字段,那这个呢,我们得表明是E,这也是这个E。那尤其是他是一定要指明的,然后我们也让他是E的吧,然后这个呢,是咱们的部门的是吧。好,那这块呢,是连接好了,接下来的话呢,人家有一个过滤条件,说呢,这个CT加于L点,这个CT呢,它的值叫做Toronto。
12:05
调到它CTRLC来,我们粘过来就这样子对吧。行,那么相当于呢,我们如果这样的去做一个操作的话呢,大家会能查到是不是有106条记录。因为那个哥们儿呢,他都没有部门了,那就不考虑它了,对吧,然后呢,这里边儿呢,你会发现他有一些呢,是在to上头这个工作的,那我们呢,就通过这样一个过滤条件,把不是这个床头就给过滤掉了。啊,就两条记录,他是在这个多伦多工作的,行这呢就是我们说这个第四道问题。第四道问题行,像这个呢,没有用这个,呃,左Y啊右连接的,咱们实际上呢,是不是可以写成这个SQL92的这个语法呀。对吧,可以写的,那我写一个吧,咱们上边也一直也没写过,我这块呢,把它到这儿是不是逗号一下,然后第1PART。问词来个D,然后再逗号一下locations l,是不是这块写了一个where e点跟D点相等,并且。
13:04
这个D的location ID和我们l.location ID呢是相等的,然后再并且这个L的呢是。多伦多。是不是这样来处理啊,这呢相当于是咱们这个叫S92的语法。诶,它的一个实现好,那这块我们选中啊,刚才呢是啊两条记录是吧,哎,我们这个走一下,同样的是这两条记录啊,这俩是一样的,就只要呢,你不是外连接呢,我们用SQL92也是OK的。好,接着来看这个第五道题。这个说查询员工所在的部门名称,地址,姓名,工作工资还挺多的哈,说呢,其中员工的所在的部门名称叫做这个。啊。是吧,好,那这块呢,我们看一看它所在的部门名称,那我们呢,就叫做department name是吧。
14:01
哎,没问题,这个部门地址,这个部门地址是个什么情况啊,你看一下D。这个员工表里边儿肯定没有了,Departments表里有吗?这叫部门地址。这里边儿呢,是不是没有光有一个叫location ID,这个呢,就是你所在地的那个ID了,那这个地址的话呢,咱就得再查一下,这个叫locations是吧。看一下这个表。走一下那部门地址的话呢,是不是可以理解成就是咱们这叫street address啊,行,那这块咱们就定义好是在这个locations这个表里的,也就是说大家让查这个字段呢,你要是不太熟悉哪个表里边有这个字段的话呢,这个呢你就查一下是吧,一般情况下呢,其实我们做这个需求的话呢,这个通通常会指明你要查这个字段,这个字段呢,其实咱们在造这些表的时候啊,不像我现在咱们在造这个表的时候呢,没有说这个字段名叫什么,咱是纯粹的拿这个英文是不是硬翻译成中文说看看跟那个中文哪个是对应的,是这意思吧。
15:01
那我们在造表的时候啊,实际上呢,在诶创建表的时候,根据这个需求文档,关于每个字段啊,都会给他起好这个中文名,比如说这个叫城市,你还是叫首都啥的是吧,这个他都会呢,明确这个你是叫州还是叫省,他都会非常明确的指明一个注市,一个说明,那么我们再去查这些字段的时候呢,你就非常清晰的跟中文去跟这个对应的,你看哪个中文的是一样的,那么再去找它对应的这个英文的字段。啊,注意这个问题就是咱们完全不能想当然。啊,这个呢,大家要注意一下啊。好,那么回来到哪了?到这了,这个部门地址我们就称为那叫street dress了,好。注意他。Address,像有同学连这个street不知道什么意思,那那就坏事了是吧,所以呢,在实际需求当中都会指明你这个注释它的诶名称呢,诶它的这个意思,那叫部门地址。OK,然后姓名呢?哎,我们就用这个lastname来表示了,工作,工作咱们叫赵白地吧。
16:01
行,然后这个salary是吧,OK。好,From,那这块的话呢,就是大家呢,写这个多表连接的时候呢,我们上来了就用侧扣九九语法,因为写着写着后来呢,有可能发现它是Y连接,那你就直接加个left或right啊这个就可以对吧,你要是写成CIRCLEQ92的,再去改成Y链接,那这个改动就会比较大一些,行,那么来吧,这个呢,是在locations表这儿呢,是部门表这儿呢,是员工表,行,那就咱们呃,习惯上这个你先写谁后写谁,目前来看都一样啊,都可以。然后E这。Department。然后呢,D是吧,On一下department ID跟d.departmentd是相等的,然后再接着join这个locations l,然后on一下。d.location ID和我们l.location ID,它俩是关联的。好了,接着我们再考虑,就是大家呢,这块连接的时候呢,你就有一个先后顺序啊,这个连接完以后呢,建议大家呢,你先去把我们上边这些表中的这个字段啊,就要查询的字段啊,指明来自于哪个表,比如说这呢,就是部门表,这个呢是这个locations表。
17:12
啊,这个呢,又是我们的员工表。这也是员工表。这也一样。行没问题,没问题是吧,那接着的话呢,你再看一下,看有没有什么样的这个要求,说员工所在的部门名称这个诶部门地址哎这些信息,那其中呢,员工所在的部门名称为这块有个要求,是不是我们相当于作为一个过滤条件出现了,加个where。什么呀,这个叫。Department name,嗯,名字呢,叫。哎,叫它啊X诶CCCTRLC啊粘过来行,那这样的话呢,我们就把它补充到这儿了,然后呢,大家你在这个看一下这个条件有没有丢,那我们这儿没有丢了,接着呢,你再稍微再细想一下,说这块会不会是有外连接的问题。
18:02
对吧,会不会是有外连接的问题,那员工所在部门,那我们就要找这个部门了,如果这个部门中没有人,那这块呢,相当于就没有查出来数据,那如果要有人的话呢,就把这个有人的这个数据呢查到了,那这个呢就不存在说说这个表有那个表没有了。是这意思吧,好来我们选中啊,走一下。好,站长就出来了,这个部门呢,你看在这个部门工作的一共是有哎这样的三个员工。哎,三个员工OK啊,就清楚了。这呢是咱们说的这个,哎,第五道这个问题。第五道题问题。嗯,诶,这里边儿大家你看有没有这样的情况呀。有没有什么情况啊,就是我们这个呢,是叫部门的名称,呃,有没有可能他在这个不同的城市里边是吧,都有这个,呃,相对应的这个部门呢。是吧,都有这个部门,就是说我们这个部门这块呢,这个它可能存在于不同的,就是什么意思啊,就是比如说啊,我们这个呢,是在一个地方有一个这个exer这样部门,然后呢,确实还有员工,然后在其他城市也有这个部门,但是这个城市呢,就没有员工了。
19:08
是这意思吧,就没有员工了,那这样的话的话,这样的看的话呢,我们可以把这个部门这个看作是一个,呃,就外链接的一个主要的一个表,那比如这块呢,我们就相当于是是不是有可能会这样的去处理啊。这叫个right是吧,然后在我们这个位置的时候呢,再跟他去关联它呢,是不是又哎这个照一下的话呢,我们那要这样的话呢,咱建议呢,是不是就把这个表我放到这个左边是吧。然后呢,他跟我们这个。我这个就放在这儿了,这个呢,是不是来一个这个叫left。然后这块呢,我们基于这个现有的表,那也是一个left。这样子。来,我们选中再去执行一下。在这个题目当中,他倒没有这个情况。诶,这个大家知道我现在想刻画的这个内容是什么吗?就是我们现在这个部门名称呢,叫。
20:03
啊,Exer,就是它有可能在其他的这个题目当中啊,就是我们这个部门是叫他,但是你这个部门呢,有可能是不是在多个这个城市当中都有啊,就有可能它是不是对应着有多个这个叫location ID。啊,相当于它跟这个ID呢,是有一个一对多的关系。啊,那要有这种一对多的关系的话呢,那我们说呃,想找这个部门这个呃,他的这个员工是什么,那么有可能这个员工呢,他只在他是在这个部门,但是这个部门的话呢,它对应的有几个城市呢,都是有的。啊,那我们这块呢,找到的只是这这一块的,那么有可能是不是还有一些这个部门,然后呢,在这些城市里边也有,但是呢,它对应的就没有员工了,那当我们要查询出来说,诶我要找这个部门的信息的话呢,那你把这个能查出来,那这些部门如果没有人,是不是也可以考虑呢,我们就以这个闹的方式呢去呈现。能理解吧,那这块的话呢,我们就可以这个相当于把它看做是个外连接啊也行。
21:00
啊也行啊,咱们这里边儿呢,不存在这个问题啊。所以呢,我看这块儿加上以后呢,你看就没有这个多余的数据啊好,那接下来我们来看下边这个场景。开那个。说呢,选择指定员工的姓名,呃,姓名员工号和他管理者的姓名,还有这个员工号啊,其实咱们做过这个题目,在讲这个这一章的内容的时候,好来看一下。啊,Select一下这个姓名last name,它这块呢,相当于呈现的是这样的效果,这呢就可以看到我们这个结果集对应的这个名称了,相当于我们需要呢,是不是起别名了,OK。这个呢,它叫啊employees是吧,好逗号一下,然后接着呢,我们是叫employ。哎,这块呢,起个命名是他。CTRLC啊这样子是吧,那这块呢,它把这个当成是一个注释了啊行,这个大家呢,知道的意思就行,然后再逗号还是这个last name。
22:00
那这块呢,我们给他起的这个别名呢,叫做manager。选这个。好,再逗号一下,然后呢,我们叫employee ID。对吧,好,然后这个呢,是MG2啊CTRLC。哎,这样子好from行,那from呢,诶我们这块呢,就要考虑了啊,首先呢,这块我们看到这些字段呢,是不是都来自于叫employees这个表,这其实相当于是一个自连接,对吧?那其中呢一个表我们当是员工表,然后呢,照应一下啊employees呃,另外一个表呢,我们当成是这个管理者的表,叫做MG。行,然后连接条件呢,就是员工表的叫manager。ID啊,它跟我们这个部门这个表呢,叫employee ID。这俩呢是关联起的,对吧。然后呢,我们上边这个呢,是他作为员工出现的。来,我们这样子CTRLC。哎,这块粘过来,然后这个呢,是咱们的管理者啊,管理者的哈,和管理者的,诶这个没问题吧。
23:06
把脸往这拽一下。没问题是吧,好,那么此时的话呢,我们觉得说诶差不多了啊,那我们执行一下啊走。大家看那这块呢,整个格式呢是没问题的,但是的话呢,你看我们查出来了是不是106条记录吧。对吧,诶106条记录,那呃,咱们想这个表中呢,是不是有,呃107个员工说要指定员工,相当于我们要查询出来所有员工的这个情况,但是呢,我们这个有一个哥们儿,他是公司的老大,他就没有这个管理者了,就说白了就是他的这个manage ID那个位置啊,就是个闹。啊,某一个员工的managed是个闹,那根据这块呢,找到这个,他没有任何匹配的结果就开始闹,哎,没出来,那我们需要让他是不是出来呀。对吧,哎,相当于让他要出来,那怎么办呀。哎,那怎么办呀,那我们员工表的有一个manage ID,它是个no,相当于希望让这个出来,这呢是不是就是一个左外连接,哎,加上一个left好选中啊执行,这不是107吗?那这个K呢,这就是公司的老大。
24:12
它的这个位置呢,它就是no是吧。好,可以了啊。好,然后接着呢,我们来看这个七。这块我讲的呢,稍微有点快啊,然后大家呢,这个只要不涉及到外连接的问题,我觉得呢,应该还算比较清楚,主要是外连接这块呢,有的可能不能及时的发现啊,好看这个第七道问题。说查询哪些部门没有员工?哎,明天感觉这个题是不是稍微有一点难度。哪些部门没有员工,大家想这个是不是相当于在做这个事儿呢?哪些部门没有员工?相当于是不是我们要做这个事儿啊。比如我们这里边儿这个A呢,大家看到是员工,B呢看成是部门,呃,哪些部门没有员工。
25:01
啊,有员工那么就列出来了,没有员工把这个呢列一下是吧,哎,这就相当于是我们这样的一个情况,好,那么回过来看一下这个咱们怎么做呀。哎,怎么做呀,来我们就了。哪些部门这块呢?你是不是告诉我这个叫department ID那就可以了,告诉我们这个部门ID是吧?好,然后from一下这个,哎,Departments这个表,然后呢,没有员工,那你部门呢,都列出来,你得是不是找一下这个部门在员工表里边是不是有记录啊,所以这块呢,我们肯定是需要引入这个新的表的,哎,我们来一个join。啊,Employees是吧,On一下部门的department跟我们员工的department这俩呢是相等的。好相等的是吧,然后的话呢,嗯,咱们想一想啊,此时呢,如果我们去做查询,那首先呢,你得明确这个字段俩表里边都有,咱们要查的是不是这个部门表里对吧?啊这样个情况,好,那这块我要去执行的话呢。
26:00
哎,说我们这个。哎,这个我写错了,Department是吧,少个T好,我们这样呢,去查的话呢,大家发现呢,查出来106条记录,那有这么多这个部门,那显然不合适,那这些部门相当于是咱们列出来了法人都是有记录的是吧。呃,都是有记录的,那这里边儿缺什么呀?哎,我们这里边呢,需要去,呃,就是相当于就是咱们就是做刚才这样一个表啊,这个如果大家明确的话呢,我就直接来写了,首先的话呢,我们把这个写到这边了,这就相当于它得是个外连接,左外连接了。因为此时呢。诶你看我把这个部门表我是写到这个左边了啊,这个要小心一点,我把这部门表写到左边了,是这个表中的记录要多嘛,所以这要左外,你要看咱们刚才这个图的话呢,诶你你那你把这俩改一改,把员工表呢写左边,把这个部分表呢写右表,你这块呢,就改成这个right啊就可以了,行,那我这块加一个left之后呢,大家看这有106条记录是吧?好,那此时我们再去选中执行,这样你看就记录就多了。
27:00
啊多了是吧,然后呢,这块我们是不是只想要什么呀?哎,我们这个B这个在我们图当中是B在我们这儿呢,是不是就相当于它了,那我们就要求这个E点,是不是这底盘卖力,它等于是no。把员工表里边这个变成no就行,来选中再执行一下,那么这些部门他就没有人。那那你回忆一下,咱们呢,在讲这个多板连接的时候呢,是不是确实说过这个员工表里边这多一个,它这块呢,正好是不是就是16个啊,中间呢,是不是有106个。哎,这16个部门呢,是不是没有员工呀。哎,就他是吧,哎,就是他。好,这个呢,咱们这样写就可以了。哎,这样写就可以了,嗯,那么稍微的。稍微再拓展一下啊,这个咱们还没有讲,就是也可以啊本题。本地呢也可以使用子查询,咱们后边呢会讲这个子查询。啊子查询这个去实现啊,这个怎么去实现啊,嗯,我要不就不在这块去说了啊,大家呢,有兴趣的话呢,你可以看一下我课后呢,这不是放的这个答案都有是吧?诶这个位置啊,就用了这个词查询叫not exist。
28:11
咱们讲到这个紫查询,最后这个相关子查询的时候呢,到时候呢,诶再把这道题目呢,给大家再讲一下啊,暂时呢,我先把这个答案呢,先放到这儿啊,这个大家呢,就是了解一下就行,好,那么再回过来。啊,再回过来这个呢,我们先说一个,就是暂时不讲啊OK。好,然后这个呢,清楚以后来咱们再看这个下一个题目说查询哪个城市没有部门。哪个城市没有部门,那其实这块呢,是不是跟我们哪个部门没有员工这个套路是一样的是吧,那如果说呢,大家这个要清楚了,那这个呢,其实写起来呢就也不难,只不过呢,就是换了两张表而已。对吧,哎,换了哪个两张表而已,那希腊是什么呀?哪个城市,那我们可以呢。
29:01
哎,加上一个比如location ID啊,我们再加个city好from。嗯,From的话呢,这个我们就可以是不是locations这个表,然后呢,叫做这个join一下我们departments。这个表是吧,然后呢,On一下啊,它的location ID跟我们d.location ID呢是关联的啊,然后同时的话呢,我们这个哪些城市没有部门把它呢看成是这个就跟我们它的地位呢,就相当于咱们这的departments,然后这个departments呢,就相当于我们这里边employees,那整个往这套就行了,是吧。它呢,这不还作为这个left吗?没问题是吧,然后上面这俩字段的话呢,查询的都是咱们这个locations这个表里的。这样子,然后接下来呢,你是不是再加个where。啊,Where一下咱们的啥呀,这个地点啊,Location ID。哎,它呢得是啊is now是吧,哎这样就可以了,好,那这时候我们选中啊执行一下。再出来了,一共是16行记录,就是这些这个城市啊,这是它的这个location ID是没有这个员工的啊,如果大家你要不放心的话,你也可以做一个查询是吧,比如说select一下叫呃,这个是没有不。
30:11
这些城市是没有部门的啊啊select这个department ID啊from。Departments。哎,这个表,然后where一下。比如说嗯,Department。ID,那咱们就列举其中一些吧。呃,1000的,一千一的。啊,一千二的。啊,1300。1600,我这儿呢,就列这几个就可以了。看看这里边儿有没有这个部门。啊,这又少一个T是吧。好,那是不是都没有啊,没有问题是吧?哎,这呢就是我们说的这个它的一个操作就是这个第七题跟第八题呢,其实他俩呢是一个套路,只不过呢,就是换了一张表而已啊七跟八呢练呢,其实都属于我们授课的时候呢讲的这个图。
31:03
啊,讲的,或者你说这个图也行对吧,因为这俩里边呢,区别就是看谁是A谁是B了啊这个图或者这个图AB啊这两个都行,好,那么我们就回过来接着来看一下这个第九题。第五题。查询部门名为这个的员工信息。慕认为这个员工信息好。让查员工信息的,那我们这块查一下,其实主要针对就是员工表白,那employd,然后比如说这个last name,再加上他们的这个叫department ID吧,好from一下。Employees是吧,然后这里边呢,你要注意就是呃,按说呢,只是查这一张表就行,但是呢,它涉及到部门名,那你这个表里边是没有的,所以呢,我们一定会有一个join叫depart问词这个表啊叫D,然后on一下。Department ID跟我们d.department ID啊,它俩相等,然后接着加个where。
32:00
啊,部门表的department name是不是得等于这个叫,哎,别等于了,我们直接呢,是不是就in了。这样子那一个呢,叫做sales这个部门逗号一下,哎,这个注意不要用这个双引号,用这个单引号。Sales,然后再逗号一下,是一个it部门对吧。好,看一下有没有问题啊,说这个部门名称呢,是在sales或者it里边的啊,这是我们找到这个部门的name了,然后去做一个过滤,那这呢,相当于我们要查的话呢,是有106,诶这就是好,这里边涉及到这个字段呢,两个表里边都有是吧?哎,我们这块呢,记着标识一下。啊,这个呢,我们要的也是员工啊好,那这样我们要查的话呢,相当于是不是查出来106条记录了,对吧?那那没有部门那哥们就没有要,他既然没有部门了,他这个那部门名称肯定也没有了,那我们再补一个这样的条件,那就是只要这个sales和it的啊走一下。那一共呢,是39条记录,还是满足这个体面要求的。
33:04
这个呢,就是咱们这个第九道问题。啊,第九道问题行,那相应的话呢,把这个答案的话呢,这不也都提供给大家了。啊,大家呢,你可以下来之后呢,参照这我们这个客户的这个,呃,这个笔记也好,或者你看我这写好的这个,呃,这个搜这个文件也好啊大家把这个呢再去做一下。那如果说呢,大家你想把我的这个写好的呢,你也导进来呢,呃,在咱们这个社会要里边,它这不是有一个叫打开嘛,是吧,打开的话呢,大家你就选择一下,比如说随便我挑一个,比如咱们这个第四张,你这块点一下这个打开,诶这不就打开了,直接呢,在原有的基础上就可以是去选择去运行啊是没有问题的。行,然后呢,咱们这个,诶前面呢,是不是也稍微提到过关于多表查询呢,这里边儿有两套啊,这个杠一,还有一个杠二,这个杠二的话呢,就是来啊给大家呢,去练习咱们说的那七个join操作的。那正好对应着我们这里边有七个需求,那表如何创建啊,数据呢如何添加咱们呢,是不是呃已经给大家说过了,直接粘过来呢,就让他去选中一个表执行一下,选中个表执行一下,然后把这个数据呢给它添加进去,然后呢,诶一个一个的去写这七个需求,那这个呢,我就不讲了,大家呢,你可以参照一下我们这个客户的这个答案就OK。
34:18
行,那么关于多表查询啊,咱们就说到这儿。啊,说到这儿,整体来讲这个章节是比较重要的,那需要大家呢认真对待啊,好的。
我来说两句