00:00
最后一部分的话呢,就是第四点是不是放在我们的一个DIS4次后面的子查询,那放在一个DIS4次后面的子查询呢,我们也跟它有一个其他的名字叫做相关子查询,所以呢,你在一些资料书上看到说相关子查询,其实啊,就是咱们说的一个Dis后面的子查询,那这个一个this怎么用呢?我们先说一下它的简单使用吧,因为之前是不是没有用过这个关键字啊,我们先说一下它的简单使用啊,啊,那其实它是这么用的,我直接把一个exist词呢,我放在这个位置上啊,也就是一个exist括号里边加上一个子查询,我先查询一下,看他是长什么样子啊,那比方说我们select,我随便来一个啊,Employee ID啊,然后再from from,呃,用employee表,那你看首先你别管别的,这是不是一个查询语句完整的,然后放在小括号。
01:00
嵌套在另外一个查询语句里边,是不是它就称为子查询啊,啊,这个是搭配着一个this使用的哈,那这个就完了,那么现在我就领着你来看一下它的结果是什么,一好,还没有感觉对吧?这个exist是什么意思来着,是否存在,其实它就是指对了,它里面只查询的结果有没有值,也就是对于他来说,他只关心有没有对,就是一个布尔类型啊,那么这个的话它是有值的,是不是有值啊,那有值,我这样一加一个第,那它的结果就是一一是不是代表出啊,那么我们再来一个没有的哈,比方说啊,Where后面呢,我们加上一个,呃,怎么写呢?Salary等于3万的有没有,没有呀,没有是吧?啊,那好了,那么现在我们再去查询执行啊,是多少呀?零知道意思了吧,也就他就关心有没有。
02:00
所以说我们exist的话,这种子查询啊,我先跟大家去写上哈,啊,那么它的这个简单的语法呢,就是exist exist,那么括号里边就是加一个完整的查询语句,你这个完整的查询语句的话,它的结果有可能是一行一列,也可能多行多列,是不是无所谓啊,啊就无所谓,因为他不关心,那么最终的这个结果的话,最终结果只有两种情况,一或者是零,说明白了吧,啊好,那么咱们再做几个案例来试一下什么时候会用到它哈,案例一,嗯,案例一一般来讲啊,能用一个this的查询,都可以用我们前面讲过的in呀这些代替,所以他用的也较少,能听懂吧,他用的也较少啊,都能够用其他的代替,那么比方说咱做一个简单的,我想查询一下员工名和部门名,这个题咱们是不是都做烂了呀?
03:00
啥意思,是不是咱们讲连接查询的时候做过,对吧?我们用普通的那种子查询,就是叫做列子查询,就是上节课讲到的,实际上是不是也能做出来呀,对吧?那么现在呢,我们再用一个exist次来去使用一下哈,嗯,我刚才说能不能用in来做出来呢?有的同学就没点头说明是不是刚才的已然忘了,是不是能做出来啊,忘了忘了试一下,比方说我要是用in的方式来做,它能不能做出来,是不是就是你这样去写啊,回去了自己试哈,查询员工名,Well,他的部门编号是不是in in什么呢?In,我们的select部门编号from department表呀,哎,那个是可以的啊,可以的。好吧,这个我就说到这儿,咱们来看一下这个怎么去写,如何去查询员工名和补美名,那么现在的话,假如。
04:00
说我要查询的是不是有last name对吧?好,然后我还想去查询谁呀?呃,这个department name啊,这个的话呢,其实这样去写还不太对,应该是查询有部门的对不对?呃,有部门的员工名啊,应该这样写哈,有员工的部门名啊,这样写就对了,查询有员工的部门名,那所以我这个地方应该写成select部门名department name,对了,然后再去from我的departments表,你要这样去写是不是就是部门表里边所有的名字都显示出来了呀,那肯定不行啊,我们要加where it this,知道意思吧,那这个里边怎么去写了select,也就是你要加上一个那个查询对吧?Select,其实你select谁都行。
05:00
我说的对吧,你select的谁都行,From我的什么表了,Los表应该是是吧,Where啊,我们可以加上一个别名e where谁呢?我们地点department第等于E点底帕特每台D是不是就行了,哎这样去写的,我们看一下对不对啊啊我点错间了,好执行一下一共是11行,能看到吧,啊也就是有员工的部门一共是11行,哎,这个是可以的哈,哎,满足这个条件的看有没有是不是这种感觉呀,看一下有没有注意了一个的使用呢?跟我们前面讲过的那三种情况都不太一样,那三种情况是说子查询先执行,我们外查询是不是用到了子查询的结果呀,而这个一个this子查询它是指。
06:00
对外查询里,它应该是先去执行外查询或者主查询,那么某一个字段的值是不是再去根据它去过滤啊,哎,它是这个意思啊,所以人家叫做相关子查询,意思是说我的子查询是不是涉及到了我们主查询的字段呀,啊,涉及到了,涉及到了吧?啊,你看是不是涉及到了这个地表呀啊,所以称为相关子查询嘛啊当然刚才说了使用它也可以用in的方式来代替,那比方说咱们写一下使用in的方式哈,怎么写呀,Department name,也就是能用exist的,绝对能用我们前面的in来去实现,那么这个应该是from departments d where,我们的地点department ID in可以这样写吧,然后这呢就是select。
07:00
Depart完了,你这个都想不上来了,From是不是employs啊,其实就完了是就完了吧,这个是不是更加简单呀,多少行11行,刚才的是多少行11行是吧?连刚才多少行的都不敢说了,嗯,这两种方式都可以去实现它哈,都可以实现它用连接查询是不是也可以做出来呀?啊都可以做出来哈,行吧,再做一个案例感受一下就行了。案例二呃,做一个什么呢?查询一下没有女朋友的那个,查询一下没有女朋友的那个男神信息,不是你看你都没注意我,我偷着早就把其中一条删了是吧?查询没有女朋友的男。
08:00
财神信息好,有的时候都有不对,看一下报义字表是不是一共四条呀,好,再看一下BT表啊,是不是这里边没有等于四的,很显然我要查的是不是就是端玉啊,啊这个怎么写呀,短语莱的段语是不是最终效果是一样的,对不是,而且还简洁明了,可读性高是好,那这个的话咱们用印的方式能不能实现啊,怎么写?能完了,没后话了哈,不里面的神印呀,是不是点它的ID不是in了,不是in了,Not in不行吗?是不是not in啊啊,你要举一反三嘛,看看不在我们的这个里边select的错了,气表没了吧,这个是不是比咱们用那种外连接。
09:43
简单呀,对吧?啊,那现在我们再去执行啊,Bo Bo是啥?Bo的话就是它是吧?啊Bo啊,还有哪个地方改吗?没了哈,行,然后再去执行,段余出来了吧,哎,用这种方式可以再换成一个this词哈,想一想前面应该差不多是吧,Where这个就没有字段了,直接是nots,对了,然后是select包衣friend ID,哎,其实你插谁无所谓,From beauty起上一个别名where bo.id等于B点包friend的ID。
10:43
能明白意思吧,有没有感觉一个exist括号的子差是一般的,就是个连接差询呀,是不是一般的就是个这个看一下是否存在,好,那么我们看一下最终结果是不是段月是了,能听到吗?啊,完事,那整个的子查学介绍完毕,把这个填一下哈,好注意。
我来说两句