00:00
行,我们看一下第一题,快速的来说,显示所有员工的姓名,部门号和部门名,这个应该用到了两秒链接就行吧?啊,我们先use一下我们的my cloud库车行啊好了,呃,所有员工的姓名应该是last name,部门号是呃,Department ID,那我直接加上别名没问题吧?嗯,然后呢,再来一个部门名,部门名是department name,好了,然后再去from我们的employees表E逗号departments d,好,Where呢,我们E里边的department ID等于D的department department ID,对了吧?啊,那么现在执行OK,这就是一个连接查询啊啊,然后呢,我们再看第二题,查询90号部门员工的job ID和90号部门的location ID。
01:00
等于90号部门这个它所涉及到的字段是不是应该就是部门编号呀,那部门编号呢,在employees里边出现过,在departments里边是不是也出现过呀?啊然后我们还锁定不了到底是哪张表,再看job ID job ID是不是在这儿呢?对吧?Location ID在哪,在上面,那很显然的话,只要这两张表就行了,有的同学会会不会有的同学这样去想说那个location ID吗?啊,Location表里边有,那我三表连接好,你三表连接不是说不行啊,你这个题你用三表也行啊,但是呢,我们本着什么原则啦,你对简单的原则呀,你这个表用的越少是不是越好啊,你能用两个表干的事,你干嘛非要用三张表干,能明白意思吧?啊不管是从你的语句的这个简洁性,还是说从效率上来讲,我们是不是表选择的越少越。
02:00
好啊,哎,能用一个表的别用俩表,能用俩的别用仨表,是不是这种感觉呀?哎,就是在这个查询这一部分啊,好吧,那么我们就要确定了,那我们应该是用employees,表,还有department表,那让我们去查的呢,有jobd,还有一个是location ID好3FROM还是employees e,逗号是不是还是这个呀,Department d well,你看这两个表依然是不是这个关联条件,嗯,然后再去按筛选一下,我们1.departmentd等于90好,做完没问题吧?啊,行,再看第三题,选择有奖金的这几个字段,我们粘过来,那它应该是说select这几个字段,然后再from涉及到了哪些表呀,Employees,有吧,啊,Employees。
03:00
D还有哪个表department d还有哪个表?这个肯定有location了,对,因为city只有在location里面才有,所以说这就是locations l,好,Well,条件一起来说,E的department I等于did department ID and did location ID等于l.location ID对了吧?啊,啊,还有and,我们E的commission is not对了吧?哎,还有吗?这个有什么呀,那个啊,这个的话我们得有歧义,是这个意思吧?啊,那这个有歧义的话,我们可。
04:00
可以写到L点,你像这个查询的这个,你用L点或者说用D点都行,因为他们的值是不是一样的啊,这一样啊,好,那这个就完了,那么现在我们再去执行啊,好,是不是出来了34行哈,好,我们再看第四题,选择一下C题,在这个应该是多伦多吧,呃,多伦多工作的员工的这一些信息啊,那应该是select哈,来往上看了,别看自己的桌子,也别看自己的脚了啊,Select的是不是这些字段呀啊,然后再去from,涉及到了哪些表,Employees表,还有departments表,还有还有一个location,因为是不是还是用上C啊,那既然是这三个表的话,它们的关联条件一样不一样一样啊,粘过来,哎,然后在按我们的CT。
05:00
等于呃,多伦多啊好,完事对吧?啊,行,再看一下第五题,哎,我们查一下吧,查一下啊,执行,哎,Department ID有问题了啊,我们用D吧,因为这个是不是两个表都有呀,嗯,好,我们再去执行出来了,对不对?再看第五题,查询每个工种每个部门的部门名,工种名和最低工资,这个不会查吗?涉及到的有工种名、部门名,最低工资绝对是三个表,第一个表呢,工司的东西来自于它工种的东西,Jobs,部门名是不是来自于它呀,所以这三个表连接啊来我们先看一下要查什么?部门名department name,工主名job title,最低工资mean salary,对吧?来,我们来一个最低。
06:00
工资对吧?嗯,然后再去from我们的三个表employees e啊,然后是department d,然后是jobs j,然后where,我们E里边的department ID还是这个哈,等于D的底盘的美ID and我们E的job ID等于这点,照ID没问题吧,再来一个,比如说半我们加谁department name可不可以加他可不可以加他可以啊,这个没有问题的啊,咱们说了,你走到这个地方的时候,这三个表的所有字段是不是相都相当于我们的这个数据源,也就是相当于我们的这个原始表呀,它里边有哪些字段呢?就是这三个表的合起来,这不是有四个吧,这是大概是十来个是吧?呃,再看jobs jobs也是四个八。
07:00
加十是吧,18个对不对,这些都可以啊,你按谁分组都行,那我按他分组怎么了,是不是没问题啊,行吧,那现在我们再去执行啊,这不就出来了吗?嗯,多好呀,是不是啊,好了,我们再去看第五,呃,第六题啊,我把这个往上弄一下,要求呢,我们去查询一下我们每个国家下的部门个数大于二的国家编号,哎,这个是不是稍微有一丢丢绕呀,每个国家下的部门个数,国家在哪嘞?Location表才有国家好,是不是这样才有国家呀?好,然后关于部门个数是不是肯定是这个呀,你看部门有多少个,肯定是在我们这个库里边,专门来存部门的这张表里边才能知道,我这样说能理解吧,对不对,绝对是找他,所以涉及到的是这两张表有没有疑问没。
08:00
等哈,那么既然是这两张表啊,那么让我们查的是什么呢?国家编号是吧?当然你也可以把部门个数是不是给你查出来啊,哎,那么你就先确定查的东西,以及我们的数据源是哪些表确定了,那我们基础的这个语法就已经能写上来了,国家编号呢,是ctrl ID逗号,部门个数,不管是什么个数,我们一般是不是都这么写呀?啊,部门个数好,From,刚才提到是departments表,还有一个是locations表,对不对?两个表的连接条件是不是也跟大家去加上呀?Where地点location ID等于l.location ID没毛病吧?好,走到这一步之后啊,那么相当于你能看到谁了呢?这两个表里边是不是所有字段呀,相当于对吧?啊,我们先别先这样吧,我这个先剪了哈,先不写。
09:00
我让你看看谁呢?星号是不是想想看一下小木啊,也就是现在我们的数据源的这个字段都有哪些,我让你看一眼,瞪大眼睛了,好看上面现在的话,是不是这两个表经过有效的连接就变成这个样子了,你看对于每个部门来讲啊,那我这个部门的话,绝对不会有重复的,这个部门编号,我这样说对不对,我再说一遍哈,在这个结果集里边,我的部门编号肯定不会有重复的。对对不对,是不是肯定对的呀,因为他是拿着我的部门表去匹配,是不是就是我的这个location位置表呀,啊,一个部门对应了是不是有一个位置啊,一个部门对应了一些位置啊,它这样的我们部门表里面的部门编号没有重复的,那它肯定也没有重复的啊,他这样的一个意思,好,那过来了之后,你会发现每一个部门对应的有一个位置嘛,然后这个里边的话就是你看部门号,部门名,呃,领导位置号,然后以及这个位置对应的具体信息,这个里边的话就会包含是不是有一个字段叫做国家呀,呃,这个有点长啊,哎,我这样一下是不是对应的有个国家呀,那这样去看能看明白吧?哎,这是对于一个部门的具体的信息都给大家去列出来了,现在让我们去查询每个国家的东西对不对?你把它这个结果器是不是就想象成一张表啊,此时此刻它就是一张表。
10:33
我问你让你查每个国家的部门个数,你按谁分组,肯定是CTRL第吧,是不是就是它呀?哎,按国家分组嘛,每个国家的什么按国家分组,那你只要一按国家分组,是不是就是国家编号一样的,是不是就变成一个组了,你比如说像这个是变成一个组了,那变成一个组之后,他让统计一下,哎,这个国家的个数,你就算不用SQ语句,你自己是不是也会数数这里边有几行啊,我数的对不对,是不是你肯定数数A123一共多少行,这就说明是us这个国家是不是对应的部门个数啊,这样说能理解吧,对吧?那所以说我这用个count的星号是不是就是代表了不明格数啊,是不是这样一个意思,嗯,它是这个样子的啊,行吧,那所以说我们接下来的一步,它应该是这样来去做啊,我把这个还是放这啊,后面是不是应该加分组了,Group在我们的。
11:33
A country ID先分了一下组,你分完组之后我们看一下效果啊,分完组之后你会发现us国家部门个数是这么多,UK是这么多,对不对?哎,这不就给我们分好了吗?啊,这里边没中国是吧?嗯,没有哈,然后呢,我们这个现在要查询部门个数大于二的,其实是不是就把us给查出来呀,应该在哪去筛选,对一涉及到如何BY在家筛选,就是马上要想是分组前还是分组后,是不是马上想这个事情啊啊是不是having啊,Having我们的can,呃是叫count星大于是不是二啊来这样去行啊,那么现在这不就行了,我们再去执行出来了吧?啊当然我刚才也提到他这其实也支持别名,所以说我这个地方写不明个数能不能。
12:33
出来能是不是也能出来啊,它这样的一个意思,只是说不太建议大家这样去用啊,哎,你能你这个having后面能直接自己写就自己写啊好,那这个的话就说到这儿了哈,接下来看一下第七题说选择指定员工的姓名,员工号和管理者的东西,结果类似如下,这个是不是就考我们四连接的啊好快速的来写一下吧,Select我们应该要查的这个东西是不是last name啊,应该是员工表吧,Last name再加员工编号employee ID在Y加M表里边的last namey加M表的employee ID是不是都给它起上别名呀?MJR井号这个加不加引号,这个不加行不行?这个不加行。
13:33
行不行,因为对,因为井号是特殊的符号,所以必须要加啊,必须要加有特殊符号的,是不是就要加呀?啊然后说一下这个地方哈,这个有的同学可能试了,说老师这个别名我用单引号也行,对,的确是这样的啊,咱们这个里边用单引号双引号都行,只是说建议你用双引号,明白吧,这个我记得我说过啊,好吧,说过吧啊,然后这个last的name的话是manager,一般的是不用加引号的,明白吧,像这种就不用加了,呃,还有这这儿的话是双引号emp是不是井号呀?嗯,然后这个的话代表的是ilos,好,那查询完了之后from我们ise逗号I employees m在where e.manager manager ID等于m.employee ID。
14:33
是不是就完事了,但这个是全部哈,是全部吧,嗯,那么我们呢,如果说只只想查询他要求的这个,我们可以加and and1last name等于啊,这个怎么念了,还真不好念是不是?嗯,出来了吧,嗯,这就行了,好吧,这就是我们关于我们连接查询里边的几道练习题,说到这,大家下课。
我来说两句