00:00
好了,呃,咱们这咱们呢,就按照我们这个紫茶询的这样的一个分类呢,给大家去介绍,我们呢先挑着最最重点的,用的最最多的呢,给大家去介绍,那就是这个是不是当在呃,用在我们的这个where或者having后面呀,哎,我们把这个呢给大家说一下哈,那也就是说它的出现位置呢,是放在where where或者说是heavy后面的哈,啊那么这个的话呢,它分为两种,那刚才呢,我们提到了,呃,那么一个呢,它就是可以里边支持标量子查询,标量子查询我们又把它称为叫做单行子查询,所以说你要听到单行子查询也要知道什么意思哈,那么还有一个呢,它叫做列子查询,那这个列子查询呢,它是指列子子查询这样写对吧,那么它是指我们这个查询结果的话,它是有一列多行,所以我们也称为多行子查询这两个。
01:00
用的非常多啊,那当然除此之外的话,其实还有一种啊,那这就属于小类了啊,那这一小类的话叫做什么呢?叫做行子查询,诶在这呢哈,行字查询,那这个行字查询用的较少,所以咱们看一下就行了,那么这个呢,它是指我们的查询结果里边的话有多少来着,是不是叫做多列多行对不对,哎,多列多行啊,那总之的话呢,它就是有多列了对不对,哎,有多列了啊好吧,那么我们呢,就按照这个顺序来跟大家去说,但是不管是哪个,我们发现它都是放在where或者having后面,所以它具备以下的几个特点,咱们先去说一下,那等会在用的时候呢,一定要注意这一点了,第一点我们子查询呢,都会放在小括号内,放在小括号内,小括号内啊,这是第一点,第二呢,那么因为你要放在这个后面,是不是就是把子查询当成一个条件呀,啊,那么所以说我们子查询一般放在一。
02:00
一般放在我们条件的右侧,一般放在我们条件的右侧,哎,这是一点哈,哎,然后第三第三的话呢,就是如果说我们用标量子查询,也就是单行子查询的话,那么一般搭配着搭配着单行操作符使用,单行操作服使用,也就是判断的时候,我们使用的是单行操作符,那么有哪些算式单行操作符呢?哎,这个咱们认识,比方说大于小于大于等于小于等于等于不等于哈,这些都算,其实就是条件运算图吧啊,一般搭配着他们来使用,那么如果说是列子查询,列子查询是不是也叫做多行的呀,那么一般呢,搭配着搭配着我们多行操作符使用,多行操作符使用,那多行操作符有哪些呢?常见的有in in咱们其实也见过,对不对啊,那么除此之外还有any,还有一个叫做or?
03:00
那当然这个any呢?呃,和另外一个呢非常像,它代表一样的意思,那就是sum,呃,Some和any是不是翻译过来都是任意的意思呀?啊,那么可以搭配着他们来去使用哈,啊,那好吧,这就是关于说我们要是把子茶学当成一个条件,放在where或者having后面,那么有这么几个特点啊,那么我们先看第一个关于标量子查询,第一标量子查询哎,我们就通过案例来给大家去介绍就行了,那么在介绍的过程中,大家重点关注这几个特点啊好,我们看第一个案例,第一个案例是说谁的工资比阿贝尔高啊,那我写到这儿了哈,按例一,谁的工资比阿贝尔高好,那么假如说我们要做这样的一道题,我们应该先查询谁,应该先查询谁,查询是不是名字叫阿贝尔的工资啊?好,跟着来往下说哈,那就是select salary group。
04:00
Employees where last name等于阿贝尔,是这样吗?好,那么我们先看一下它的结果的值啊,也就是它的结果集,那是不是就是一行一列,所以说像这种情况我们就称为标量子查询嘛,好,再往下走,那么再看第二步,第二步的话呢,我们应该是再去查询哪个员工的工资是不是大于他呀,哎,所以说第二步应该是查询我们员工的信息,应该满足一个条件,Salary大于是不是一这个结果呀,可以这样说吧,来大于一这个结果哈,那所以说我应该是查询员工的信息,那比方select的星可以吧,啊,From,我们in employ表where,哎,Where,我们的salary大于是不是用上大于号了,好,那这。
05:00
他说是不是就应该放一个纸啊,其实就放一万一对不对啊,也就这个结果啊,但是我不能直接就放这个对吧,这种是不是叫硬编码呀,对吧?啊,万一人家阿贝尔工资变了,那你这个是不是就不对了呀啊还得改,所以说我应该把它对了,放在这个位置代替它,那我这儿就用一个小括号,是不是刚才说到了子查询要放在小括号呀,哎,所以说用个小括号啊好,那么我们把刚才的这个查询呢,粘到这个地方,为了呢,能看出看出这是个子查询,我们最好加上一个缩进,加了一个缩进,这个里边还用加分号吗?不用了哈,哎,这个就不用了啊,那么这我们再去加分号,代表整个查询结束,能看懂吗?那么现在呢,我们再去执行,那这就出来了哈,那我们看一下是不是工资这个字段的值都大于一万一没问题吧,这就是一个资产权,没那么难吧啊,所以说你就。
06:00
会发现啊,其实呃,可能在分类的时候,大家会感觉怎么这么多呀,呃,其实你要做题没什么啊,哎,这是一个,好,我们再来一个题,再来一个题,跟着往下说哈,第二个我们假如说想做这样的一道题,我把它粘过来啊,多做几个试一下,呃,这个是I例二哈,好,把这个这样弄说让我们去返回,也就是查询job ID与141号员工相同salary比143号员工多的员工的姓名,这个这个这个我们应该先查谁,我们应该先去查询141号员工的job ID对吧?好,那我们应该来一个查询select job ID from我们的employees表,Where employee应该。
07:00
是employee吧,ID等于141,好,我们看一下它的结果的,呃,行列数哈,是一行一列一列吧,一行一列哈,来,再来一个第二步,我们还需要去查询143号员工的salary,对吧?Select salary from employees where还是employee ID等于143没问题吧?好,那么现在再去执行,是一行一列对不对?好,最后一步第三步,我们应该去查询我们员工的是不是这些呀,姓名,Job ID和工资,那么要求job ID等于等于谁也就是一并且并且谁呢?Salary。
08:00
大于二,我说的对吧,那一和二是不是就可以用这种查询语句代替呀?哎,所以这个案例是想告诉我们,那么一个查询里边是不是可以放两个字查询啊,哎,是可以两个甚至更多个,对不对,是可以的哈,那怎么查呢?Select last nameme job ID salary from,我们的employees well job I等于小括号吧,哎,把小括号加上哈,然后再把一跟粘过来啊,这个粘过来,粘过来呢,我们最好多进一下啊,注意别加分号,哎,把这个弄一下哈,啊好,然后呢,还有一个是不是and呀,And谁salary大于小括号,然后再把我们的A2粘过来哈,这个是可以支持多个的,没有问题啊,你这个逻辑正确就没问题行了。那么现在呢,我们。
09:00
再去执行啊,是不是就出来了啊,那你会发现赵白D是不是都是可乐可呀,哎,工资是不是都大于什么,两万两千两千几来着,两千六对不对,哎,都大于两千六哈,行吧,这是关于这道题,再来一个啊,再来一个案例三啊,那这个的话呢,也属于这种标量子查询啊,那么这个是说我们的呃子查询中用到了分组函数,用到了分组函数,好,我们试一下说让我们返回公司,公司最少的员工的这些信息,那先查谁呀,先查询谁,对了,是不是应该查询我们公司的最少工资,也就是最低工资,对吧?啊,我们先把那个工资值是不是先给查询出来呀?啊,那应该是s select的面。
10:00
是不是用上这个了,In salary from employees,哎,那么这个就出来了哈,我们再去执行最小的工资是2100,然后呢,我们在第二步吧,再去查询啥,是不是查询这么几个值啊啊,然后要求有一个条件,要求怎么说啊,要求啥工资比谁低,是不是就salary等于是不是你刚查出来的一就行了,对吧?啊所以说我这个地方应该是select这些对吧,Select这些,然后from我们的MCLA,然后在where salary等于小括号分号啊,然后再把这一堆粘过来对吧?啊在这把这一堆粘过来哈,那看一下它绝对呢,就是呃,就是这。
11:00
这个什么呢?最低这个工资的话,就是最低的是不是两千一呀,哎,这不就行了吗?能跟上吧,哎,那目前呢,咱们用到的呢,它都属于在where后面用的,对不对,Where后面的呃,标量子查询,那刚才提到是不是having后面也可以呀,所以咱们再来试一个,让大家感受一下哈,案例四,案例四的话呢,就用上了这个having了啊在这呢。好诶,粘过来好看一眼哈,说让查询最低工资大于50号部门的最低工资的部门ID和其最低工资啊,这个也是考验咱们语文的时候,对吧?先去查询啥50号部门的最低工资能跟上对吧?好,那就select main salary from employees where department ID等于50,它绝对只有几个值啊,一个是不是还是标量子查询啊,这些都是标量子查询啊,那么第二我们呢,再去查询什么能读懂题意吧,有的时候没读懂。
12:28
是不是应该查询每个部门的最低工资啊,啊,查询每个部门的最低工资是这个意思吧?好,我先这样去做啊,每个部门的话呢,就是me salary from employees group by,然后是department ID,当然把部门号我们也可以查出来,对吧?啊好,然后把这改一下哈,那么现在呢,我们能查出每个部门的最低工资了,他的意思是说只把大于50号的,呃,只把大于50号部门最低工资的给显示出来,那所以是不是还要加筛选呀,你52部门的最低工资是多少来着,两千一啊好,那么我们这么看的,这个的话,大于两千一的好像都大,是不是只有50号不大,对不对啊,除了50号是不是别的都显示出来呀?啊,那所以说我们第三。
13:28
果是不是就是进行筛选呀,第三哈,筛选筛选什么呢?筛选二是不是啊啊满足什么条件呢?满足我们的mean salary大于大于谁呀,大于谁2100,两千一不能那么写吧,两千一你这不就叫应编码了吗?是不是大于一的结果呀,是不是这个意思啊,那应该是啊那么应该是什吧,怎么写select,其实就是把这个粘过来吧,粘过来在这个基础上哈,那也就是,呃,我这儿改一下哈,那就是在二基础上是不是筛选,嗯,好,那么在这在筛选的话,是不是应该用heavy了,Heavier me salary大于小括号是这个意思吧,啊然后把这个一,也就是他最终其实就是一个结果对不对。
14:28
啊哎,放在这个里边啊,好了,那么现在的话,我们再去执行它应该是除了50号是不是别的都有呀,对吧,没50号了吧?啊没了哈,哎,好吧,那么现在介绍的都属于标量子查询的使用,当然在使用过程中,除了刚才我说到的这几个小特点,那么实际上还有一个小特点要注意,那就是第四点什么呢?我们发现呃,在这样去使用的过程中,我们子查询的执行,它应该都是优先于我们的主查询执行的,什么意思嘞,也就是我们主查询的主查询的呃条件啊,那么用到了是不是我们子查询的结果,这样说能理解吧,所以它的执行绝对是先把子查询是不是执行完得到一个结果呀,然后我们主查询是不是再用这个结果呀,能跟上吧,啊,他。
15:28
绝对是这样的哈,根于这几道题我们也能够分析得出啊,好吧,这是关于这些,那么接下来呢,我们再说几种,就是在使用我们的这种标量子查询时要注意的事情,要注意的事情那也就是非法使用子查询的情况哈,非法使用应该叫做标量子查询,对不对啊,什么意思嘞?那么假如说我随便拿一道题,随便拿一道题,假如说我的这个条,我的这个子查询里边呀,啊,那么在这呢,我呢查询的是不是mean salary了,而是salary Miss salary是不是得到一个值,如果我这用个salary,那么他的这个值50号部门的工资是不是有很多,因为有好多呃,员工他的部门号是50是吧?好,那我的意思是说,明明你这是不是应该用一个标子查询呀?
16:28
啊,但是你这就用到了一种,这叫什么字查询来着,列子查询对不对啊,或者叫多行字查询,那这个能不能好使嘞,我们去执行是不是报错了啊,其实意思是说我们这儿要用大于小于这种是不是叫单号操作符啊,它里边只能搭配标量子查询啊,这是第一种错误情况哈,第二种错误情况,假如说我这儿呢。改一个department的值等于250,有这个部门吗?没有啊,没有这个哈,现在执行是没有啊,嗯,它也也就是这个此产的结果也不是一行一列吧,不是一行一列,那么现在我要再去使用,实际上是不是也是没值啊,哎,这个也算非法使用啊,也就最终是不是没有得到我们的效果呀,啊,也叫非法使用,所以非法使用标量子查询,也就是说,那么我们这个子查询的结果不是一行一列对不对?哎,不是一行一列,这样都不对啊,行吧,这个呢,我们先说到这儿啊。
我来说两句