00:00
那我们看一下多表连接这一章的练习题,回顾一下我们刚才讲的这些知识点啊,多表连接在查询的时候,若两个表有同名的列啊,必须使用表的别名对列名进行引用,否则出错,对,你得告诉我是哪个表里的,对吧?嗯,这个是一定需要指明的,那么查询出公司员工的last name department name跟city涉及到了三个表吧,这个是employees表的,这个是departments表,这个是locations表,哎,这个我们就不写了,好吧,这个我们也写了这个练习了,大家你看一眼。这是我们讲的实现多表连接的第一种方式,要通用的直接from几个表,然后加上这个外耳连接条件,这一步加就有低卡基的错误,你不加或者是呃,少加,我们这个写了这个and忘了,仍然是有低卡基的错误的。
01:02
下一个查询出lastname为陈的manager的信息,这个我们已经做过了。我们这就不说了,这呢是大家都应该自己会的,通过两条搜狗语句啊,或者呢,我们如果实现一条的话,那就是自连接。下边还有一个叫子查询是吧,子查询我们放在第六节给大家来讲,也是一条啊,一个词后语句就能搞定了,我们到那的时候给大家来说好吧,先放一个一个引子。下面这个题目查询每一个员工的last name以及他的grade level,就看他公司处于哪一档。这个我们以它作为一个典型例题,说了一下非等值连接是什么意思。哎,也就是连接条件它是一个,哎,不等值的,就这样。左外连接,右外连接。当你需要这这他俩就肯定指的都是外连接了,对吧,左外右外就外连接上面这都叫内连接。
02:02
左外右外就是你返回查询结果当中,左表或者右表当中不满足条件的行,就分别叫做左外或者叫右外。这个是左Y还是右啊?这是不是左外了,大家怎么来记忆啊?你这样看哈,我们刚才从定义上来说是又输出左表中不满足条件的行了,叫左Y,那说明左表中的是不是行数多呀。所以叫左半,左表中的行数多,就意味着你是不是需要在这个连接条件的时候,在右边这得多加上几个空行给它补齐啊,因为一行都得一行一行对应是吧,你左边多右边不得多补几个嘛,所以在右边补加号,右边补加号的叫左外连接,左边补加号的叫右外连接。你或者你就像刚才这样记左边多,那就是左边多就左外,那右边多就右外都行。
03:01
它只能够实现左Y右外,这个哎,满外是不可以实现的,那么要想实现买外只能用CIRCLEQ99 SQ99怎么来实现的?呃,左外叫left al draw,这al也可以省略,也可以加上,加上呢,就是写在这个left跟join之间。啊,Right left right和for,这是左外右外和外。那么除此之外,四和九尾的语法当中还可以实现他自己有一套如何实现?多半连接用的叫join on。对吧,用照啊,也就这种方式,大家是需要掌握的两种方式啊,一种是这种方式照什么什么啊,一种呢,就是刚才开头的。这样。这一章大家就需要掌握这两个重点。重点那么除此之外呢,作为了解的还有一个叫哎,这个赵啊,赵二说了哈,嗯,叫using,上面还有一个叫nature draw是吧,自然的一个连接那个我们说诶做为一个了解,然后using这个也是做为了解,他们两个都有局限性,真正我们开发当中去使用的就是join什什么啊。
04:13
哎,或者最上面这一个,哎,就这样好吧。行,那我们这个,我们说完以后,接着我们来看这个。练习题。多表查询。来,我们看第呃前四个吧,我们把它拿出来。一个一个来,第一个显示所有员工的姓名,部门号和部门的名称,Select的姓名,Last name,哎,部门号第1DEPARTMENT ID。
05:14
部门名称department name,这是我们比较典型的一个多表连接的问题,FROM2种方式,我们先写第一种,Employees d departments d,哎,上面呢,尤其是这个department ID,因为它两个表都有这一列,需要你显示的指明它是在哪个表中的,这你写E也行,写D也可以,务必加上过滤条件一点。Department ID等于d.department ID。好了,这就是我们实现了这个,呃,一个多宝的一个查询106条记录是内链接没有,诶你看大家注意啊,这是不是说所有员工啊,所有员工你是不是就应该把那个人也得给他加上吧,所以这叫阻碍连接107个人,好了,这是我们写的一种方式。
06:12
需要大家掌握。那么我们是不是还讲了四后语法,四后九九语法的一种方式,我们这写叫法二,哎,那么这个怎么写,再来这操作一下,还是查询这样几个信息。我在这直接改了它join吧,Join它,然后呢,啊这个这个把它去掉。然后你要是阻碍连接的话,在这加上一个ma alter。
07:09
也可以对吧,两种方式大家呢,你都给他掌握了。好了,我们看第二个题。查询90号部门员工的job ID 90号部门的location ID、90号部门员工的job ID和location ID。哎,我们看一下这个job ID job ID是不是只在employ表里的。然后location ID在这个表里,所以说我们是不是需要这两个表啊好了。来select,它只让查job ID和location ID from employees e,这你用哪种方式都可以啊,要是S99语法呢,就是这。
08:12
嗯。Department啊,Department是吧,叫D21.department ID等于d.department ID,同时呢,它是不是还有一个条件说90号部门啊,那就是哎。d.department ID等于90。看看92部门,或者你这个用用E也可以是吧,这两之间有连接条件的,他的是92部门的这两个信息。就这样是吧,然后你要说,嗯,有的员工。
09:05
是不是有可能没有招白地,或者说在90号部门没有这个信息,那怎么办呀,那我就再加,也给你再加上一个left呗,保险起见。哎,有三个是吧,三个我发现后两个一样,后两个一样,那就这个公司应该是有这个这个部门有三个人,后俩一样的话,我把如果你要是想去重的话,加上一个第PI的是不是就OK了。行,哎,那这几个我们这个题目的这个题目的结果。哎,看下一个第三题。选择所有有奖金的员工的1234个信息来吧,Select。
10:08
输出这四个信息粘过来。这四个信息大家你得注意,呃,我们看这个标点符号啊,标点符号没问题。你特别需要注意一下啊,我们这都是在英文的格式下的,所以你中文的字符一定要给它改过来,FROM2种方式都行,随便挑一种。好,我假设也用SQ,求语法employees d,这department d,我写到下一行吧,啊,1.departmentid等于d.department ID,然后再照。Location啊d.location ID等于L点。
11:03
Location ID,你这几个表之间的这个连接条件,你得熟悉一下,要不你都没法写了,然后大家你注意一下,你看看你这个写的时候会不会有一些这个这个不不明确列的,比如说这个location ID,那你需要显示的给他指明一下,这个是哎D点或者L点都行,其他几个。不写没事。所有有奖金的员工的1234,这个是不是还没有加这个条件了,加一个不一点叫commission t,它is not no。有奖金的员工的这样几个信息。34个。34个,而且还都是啊,这这都是销售部门的是吧。好。
12:00
转过来。嗯。下一个。选择CT在床部工作的员工的1234,你如果仅仅看这个要输出的结果的话,仅仅涉及到了两个表,Employees表它和departments表。但是呢,是不是还多了一个city呢?是不是只存在于locations表,所以说这个还是三个条件啊,来select。三个往这一粘。然后from,哎,是我换一种方式吧,Employees e,逗号departments d,那你这需要指明是E或者did都行。
13:12
嗯,再加where,呃,这这这还不行是吧,还得有一个叫LOCATION4好where条件是什么呀?要求你E的department ID得等于D的department ID,同时按要求,哎,你这个L点。C,它是叫黄统。像多伦多,嗯,加拿大的一个城市。可以了吧,好,我们CTRLCL一下,最后你回查一下,你看这里边是否有未明确的列啊,没有没有没有就OK。
14:02
嗯。缴获视图不存在。Employees,少个O。好106条记录,那么这这这有没有问题,我们看啊,在这工作的这些人的信息,这显然不对吧,是吧。是不还应该再加上一个连接条件呀?我们发生了叫department级的错误,Department ID等于。嗯,不是D盘l.location ID等于l.location ID。大连你回忆一下,我们讲课的时候是不是说了你有三个表的话,如果他们做连接查询,至少得需要两个连接条件吧,我这光写了一个,所以必须这个千万不能丢,得给它加上,然后这个呢,是额外的一个连接条件。
15:02
你再看结果。就俩这两个人是满足题目要题目要求的。好,我们看下一个题。选择指定员工的姓名,员工号,以及他的管理者的姓名和员工号,就是说谁他的员工号是他,他老板的员工号是他也不叫老板,就部门的是吧,他直接直属的一个管理者。嗯,把所有的人都给他输出出来,这是不是一个字连接呀。啊,这是一个自连接好了,来我们实现一下。Left。它只是需要让你查询到他们的。哎,这是员工名和他的ID好。
16:00
Select员工名lastname employee ID后边还是一个lastname employee I from employees,我这儿呢,就不写什么叫员工了,那个叫老板,我就一个叫一,你什么意思一二。我让这个一当当做员工,那一二呢,当成他的老板的这个表啊,就是一一,前面都是一一,这就是一二。二点对吧。两个表加连接条件一一点。Manager ID等于一二点。是不是吧。嗯,然后呢,这个题目实际上我们写完了,但是呢,你看它这个这个这个这个这个就别名吧,相当于哎,所以你给它改一改啊。Last name,这是一个别名,Employees。
17:08
Did起的叫。好,Emp点。哪里的?行好,我们运行一下结果看看。哎,一百零零条记录,哎,把每一个人以及他的管理者给他列出来了。那肯定是不是有一个人没有管理者呀,有个人没有管理者,你要想给他输出出来的话,是不是在这儿给他整上一个。哎,阻碍连接啊。哎,107个人好。
18:00
这就是我们这个题目指定员工的这个信息,你说V。行,我们这节课就讲到这儿,那重点呢,以第一个题为例,两种方式大家要掌握了。好。
我来说两句