00:00
接下来呢,咱们来看,那么除了这个之外呢,我们是不是还有可能放在select的后面呀?啊,那么咱们就试一下第二大种,我们放在select的后面的子查询啊写这这个是第二大部分放在select的后面,那同样呢,呃,它也有它这个具体的应用场景啊,那么假如说我做一个这样的案例啊,我就直接来写了,我想去查询每个部门的员工个数,每个部门的员工个数,假如说你这个部门的话呢,呃,在员工表里边出现了,那肯定是不是就是有员工啊,那肯定会记住一个个数说的对吧?啊好,那么假如说呢,你这个部门在员工表里边是不是有的,可能没有涉及到呀,那么他就没有员工,没有员工是不是就应该显示零啊,你得先自己脑补一个场景,就是知道最终的效果,就大概知道最终的效果哈,你要脑补不出来。
01:00
答,那肯定不行,有的同学开始闭目去想场景了是吗?对吧,我就看那个是谁呢?那是薛鹏是吧?啊,他是在那这个闭着眼睛开始想场景了哈,行吧,还是挺配合我的对吧?好,什么意思,这不是咱们的部门表吗?这个部门表的话,每一行是不是对应的一个部门呀?那我希望最终查出来的效果是,比方说十号部门,这是他原本的信息,这样再来一个个数,能听懂吧,比方这个部门有两个人,是不是这种感觉啊?哎,然后以此类推,其中像那个200多的这些部门,他是不是都没有员工啊,对吧?这个咱们到现在应该对这个数据很清楚了哈,他没有员工,这应该显示的都是零啊,所以最终我查出来的就是这样的一个感觉,说明白意思吧,啊,听在还是感觉没啥的是不是啊。
02:00
好,那么要求呢,我要查询的首先是不是部门里边所有的字段呀,另外外加一个个数,我说的对吧,外加一个个数啊好,那么接下来我们开始去写,那我是不是应该怎么查呢?先查去,先查询我们每个部门的信息,那比方说我为这个部门表起上一个别名叫做D可以吧,那D点星是不是就是这个部门所谓的信息啊,外加逗号,逗号是个员工个数,这个员工个数有的说怎么求的呢?是不是就是s select的count星号啊,很显然很显然,这一步是不是要放一个什么,是不是一个查询语句了呀,因为这个结果我想显示出来,我说的对吧?啊,那当然这个的话最好用什么来括起来呢?小括号它这样的一个意思啊,我这要进行一个缩进,S select count信号from应该是哪个表啊,Employees表是不是来自于这个表呀,它是说把这。
03:00
啊,员工表里边总个数给我显示出来吗?不是啊,我这样,我先给你这样去写,让你感受一下,看一下它的意思啊,From我们的,哎,错了,这个应该是from department d,我这样写没问题吧?啊,我把这进行一个缩进啊,写一个缩进好能看明白吧,这个是不是啊,这个东西是不是放在sli的后面,是不是一个子查询,这个子查询是不是放在小括号里边了,对吧,是不是满足刚才说的子查询所有的特点呀,对吧?我先做这样的一步,先看语法对不对,没问题吧,这个语法啊,但是这个值对不对啊,不对,这个值不对啊,我们应该是对应着什么来呢?我这个个数的值是不是对应着我当前的部门号来呀?其实这种感觉就是说我在查这个表的个数时,应该加个筛选,跟着想哈,有一丢丢难了。
04:00
我这个值应该加上筛选where,我这个圆工表的部门号正好等于当前的部门号,我说的对吧,这个时候再把部门个数在这查出来,我说的对吧,它应该是这种感觉,好,那么行了,那么在这个地方,很显然我这么写是不靠谱的,我们继续应该再加一个谁啊,Where啊,当然这可以起个别名啊,Where,谁呢?我们E的department ID等于谁是不是D d.department ID,这样说能变好吗?嗯,应该这样去写啊,好了,当然把这呢,我们可以给它起上一个好听的别名个数,那么现在再句式其实就已然行了,看一下怎么样,很强悍吧,是不是很强悍啊,嗯。
05:00
直接用连接也可以做,但是效果不一定跟这一样,也挺麻烦,用以前的方式也能做出来,能听懂吧啊也能做啊,但是咱们现在是讲我们用这种方式是不是也靠谱啊,也可以也可以啊有的有的程序员呢,他就就觉得这样比较顺手,是不是顺手就把这个哎要查询的东西都select后面加上了呀,哎,这个也好用哈,行,我们再来试一个案例吧,再来试一个啊案例二,假如说我想去查询,你看有这样的需求说呀,我们的这个员工号等于呃102,应该有102的是吧,我只查询谁呀,部门名啊,是不是涉及到两个表啊,对吧?啊我我就要部门名,但是我要的是员工号为102的,多矫情啊,是不是故意这么样,我要查询这个怎么写select。
06:00
二其实用连接查询可以做吧,用连接查询可以做,但是就不用连接查询做是吧?嗯,那我们这就直接子查询,是不是应该放小括号啊,哎,那我就直接这么写了哈,Select select谁不没名,嗯,应该是谁应该不对,应该是啊,Select我要查的啊,就是不文明对吧?Department name from,我们的departments表D可以吧啊然后where什么可以怎么去加,哎,这个地方怎么去写,这个地方可以加连接查询吧,也可以可以啊,可以,那你这应该怎么去写呀,呃,应该,那你这就应该用上一个inner draw是不是可以这样去加呀啊employee,然后那你就应该加是不是关联条件了,嗯,什。
07:00
好吧,D点,呃,其实我应该这样去查啊,我应该是啊,就这么写吧,这样写也行,按一下我们的点department ID等于e.department ID可以吧,Where我们1.ifemployid等于102,其实里边就是一连接查询是不是,哎,它也可以这样干哈,哎,然后这个的话还用写个表吗?还用写表吗?好像不用写也没事了,是吧,能查出来吧啊然后这我起个别名,比方说叫做部门名,哎,就是想告诉你人家这样杨老师是这个数据对不对啊对啊,还没看呢,100002号,它的部门编号是。看一眼啊,102号在这呢,102号应该是第三行,部门编号是90,哎,那么接下来我们再去看谁嘞?呃,是不是就是部门表里边啊,90号,90号是不是EXSE是对的啊,那这样写也行,但很显然是不是比较麻烦呀,比较麻烦哎,看着别扭,因为呢,我们之前用的直接这样写是不是就好使了,而且这个题用我们前面介绍的那种标量子查询是不是也好使啊啊有很多种方式是不是可以实现呀,可以实现啊,所以说嘛,这个东西的话,我们弱化了啊,弱化了知道有这种情况就行啊,一般可以用其他的方式所代替,能听懂吧,一般可以用其他方式代替啊行,这是关于select的后面的子查询啊,主要就是这些,呃,有一个注意,就是sla的后面的这个子查询的结果,我们发现。
08:57
都是一行一列,假如说你要放多行多列,怎么着就多行多列了呢?我们把这个去掉,就光看语法上行不行,是不是报错了这个这个错误的意思解释一下,Subry是不是只查询啊,返回了超过一行是不是超过一行不行啊,就这个意思啊,那波列行不行啊,比方说我故意这加上一个department ID能听懂吧,我就是跟大家试一下语法,我这有公意,是不是加上我们的Y2啊,啊叫什么来着,Y21.1employe ID是不是等于102啊,好,再去执行看一下怎么说,说这个里边必须有一列能看出来吧?嗯,这个英文应该有,应该只有这是什么一列,意思是说我这个子查询的结果只能是一行一列。
09:57
也就是标量子查询,那你要放多列多哈,是不是都不对啊这个意思哈,行select的后面这个呢,我们就说到这儿,在这儿呢,总结一下,那就是里边只支持好仅仅支叫做标量词查询,好把这个填一下,哎。
我来说两句