00:00
好的,那关于分支结构啊,咱们就告一段落了啊,If和case问ZOK,那么接下来的话呢,我们看一下这个循环结构,这个循环结构呢,咱们在这个MY当中啊,给我们一共提供了三种类型,分别呢,哎,大家看对应的叫做loop,哎,这个while,还有呢,这个叫做repeat啊你看这三个单词呢,是不是都感觉就像循环是吧?这个look呢,本身翻译过来了就是循环的意思。这个while的话呢,按说是这个当什么什么时候那这块呢,按说呢,猛一看这个单词不太像是循环,但是大家呢,你往往接触过其他的一些编程语言的时候呢,你会发现呢,很多编程语言都是拿这个while呢来当这个循环的是吧?所以这个呢,一看到while呢,哎,表示的通常也都是个循环,而这个repeat呢,表示的就是重复。本身呢,我们说循环结构就是某一段代码呢,不断的重复执行,所以说呢,我们看到这个repeat的话呢,呃,其实也能表达它是一个循环的意思。好,那么接下来的话呢,我们就分别呢,来介绍一下这里边的这个呃,循环结构,首先呢,我们来看一下这个叫做loop结构。
01:01
这个look呢,就是表示重复执行某段代码了,对吧,然后呢,这个lo内的语句呢,一直重复的执行,那就是我们这个里边的它就是我们所谓的这个叫,咱们起个名字叫循环体,就是反复执行的这个代码呢,我们叫做循环体,OK,嗯,那么你满足某个情况的条件下呢,我们就可以呢去跳出了,所以这个路的话呢,咱们要想使用还得结合另外的一个关键字,这个关键字呢,叫做live。叫做live,一会呢,我们再专门来讲一下这个live这个这个关键字,OK,它表示呢,就是跳出这个循环的意思,那么整体呢,关于这个loop呢,使用结构呢,是长这个样子的,嗯,我们这块呢,是可以给这个loop呢去起一个标签名的,哎,可以起个标签名,然后lo里边呢,就是这个循环语句的这个整体的结构。然后end loop呢,诶指明你要结束的是哪一个这个循环结构,那这就是我们整个这样的一个情况,那这样干说的话呢,大家可能会觉得比较抽象,下面呢,我们是不是就得举例子来说明啊,OK,行,那上面的话呢,是咱们说的这个结构啊3.2的情况,那我们下边呢,先4.1。
02:07
哎,4.1,那我们来讲一下,这个叫循环结构支啊,咱们先说一下这个叫。Loop是吧,好的,那么loop这块的话呢,我们就直接呢给大家写这个例子了,哎,咱们把这个结构拿过来也行啊,方便大家这块呢熟悉一下是吧。好,这块呢,我们从笔记里边呢,把它拿过来啊,这样子CTRLC。哎,放到我们这块行,然后下边呢,我们具体呢,就写这个例子啊这个哎,举例一这块呢,我们做一个简单的一个题目,那我们就定一个变量呢,是一,然后呢,让它不断的循环的去加一,然后呢,一直到它比如说大于十的大于等于十的时候呢,我们就退出,那这样的一个操作,OK,行,那这块的话呢,我们看怎么去做,嗯,咱们现在呢,还是用一个存储过程呢去刻画啊,所以说我们先来一下limit是吧。哎,先这么着这么着,然后呢,我们这块呢是create。咱们一个。
03:02
没问题,然后呢,Test我就直接写test look了,OK啊,一堆小框是吧,给丢了小框,然后begin,然后呢end,诶这样结束没问题吧,好在这里边的话呢,我们首先呢去定一个声明,一个叫局部变量。嗯,这个就变量呢,咱们就呃declare,我就要一个number吧,好,这个是个in的类型的,然后它的默认值呢,是一个一吧,那先给个一行,然后接下来的话呢,我们通过一个循环的方式呢,给这个哥们呢去做这个赋值,好的,那我们这块就相当于想写这个叫lo了,是吧,那这个lo的话呢,我们需要注意的就是咱们给它起一个标签名。哎,起个标签名,这个名的话呢,大家自己定义就行,比如我就叫做loop labor吧。那这一个标签名好了,然后在我们这个其实就是叫循环体当中,循环体当中我们干什么事呢?一开始这个number的值呢,是一在这里边呢,我给它呢,叫重新的去赋值。
04:02
重新复制的话呢,我们讲过,简单的话呢,是不是就用set了,你要复杂的话呢,是不是写这个select OK,咱们这呢,因为不涉及到说是从其他的表中去找字段了,所以咱们就用这个set了,Set什么呢?哎,我们这个number呢,就等于这个number本身再加个一。OK吧,啊,这就相当于让他加个一了,那么我们在什么场景下呢,它会去退出咱们当前这个循环结构呢?哎,我这里边呢,去写这个if结构,如果呢,我们当前这个值呢,你发现它大于等于十了。哎,Then我们就可以呢,让他去做一个live啊,这个live呢,就推出的意思,推出谁啊,就推出我们当前这个,哎,你对应的这个结构,这个标签呢,主要添加的目的呢,就是来指明是我们当前这个循环的意思,那我们就结束呢,咱们这个标签所代表的这个循环结构啊,就这个意思,好,那这块你别忘了,哎需要呢,去摁一下我们的if结构,对吧,然后在这块的时候,我们再去摁一下咱们这个look。那上边这块你看有这个N的look是吧,哎这个标签的话呢,我们是不是也可以把它加上呀,哎加这哎这样呢,就是个完整的结构了是吧?好,那么这样的结束以后的话呢,我们可以在诶这个位置呢,我们去查看一下。
05:06
那因为我们这个变量呢,是定义在这个这个存储过程里边的啊,我们这个出出了这个存储过程以后呢,你想拿到的就不行了,所以我们在里边呢,去查看一下咱们这个number这个值,那也比较简单,我们直接的时候就select就行了。哎,这样就可以了是吧,好这呢,就是咱们写的这样的一个这个存储过程,好,那我们这里边呢,把它选中啊,咱们走一下啊,在我们当前这个数据库下啊跑起来。好创建成功了,然后下边呢,我们就来一个这个具体的调用。好,靠一下,我们当前这个叫test look啊。哎,粘过来没有参数,我们直接在就跑起来,那这块呢,大家应该能够想象到我们这个number这个值,你看啊,我们这块呢,哎,这个进来之后呢,它就开始值是一,然后给它改成二了,大A等于十嘛,是不是不满足啊,哎不满足之后呢,你就相当于回过去呢,又继续呢去加一加A加A加A啊一直到我们这个呢,就变成十的时候呢,大于等于十满足了,满足以后呢,我们就哎结束了咱们当前这个路循环结构,那这时候呢,我们再打印它,它这个结果是不是就是十啊好来我们走起啊执行,哎,你看这个结果呢,就是十。
06:12
呃,刚才呢,我刻画了一下它的一个执行过程,呃这块呢,实际上就是我们所谓这个叫呃循环体,主要呢执行的是它,而这个为代表的呢,其实想体现的就是我们结束的一个情况是吧,哎什么时候去结束的啊这样的一个问题。好了,这呢就是我们写的这个举例一啊,大家呢,简单的去体会一下,然后接着呢,我们结合一个实例呢,去说一下咱们这个look,呃,Look的一个具体的使用场景啊,这块我们看一下这个举例啊,哎,我们把这呢CTRLC一下传过来。啊,CTRLV啊,稍微有点长。嗯。啊,这个还是啊行,基本上就,哎就到这吧,好还有啊。啊,稍微有点长,来我们看一下说呢,当市场环境变好的时候,公司为了奖励大家,决定了给大家涨薪资。
07:02
这个声明一个存储过程,OKOK,下边呢,我们先别着急看,先把那整个存储过程的这个模板是不是先给它弄出来Di limit啊。好,首先呢,我们去create。啊,我们这呢是一个procedure。嗯,名字呢,已经起好了,叫update salary loop,嗯,OK啊,我们这块呢,CTRLC转过来。啊,然后这块呢,就是begin,然后下边是end,哎这个哎结束是吧,好,这里边呢,需要说明一个叫out参数呢叫number,然后我们来OK,来一个out叫number,是一个in类型的,它表示的就是循环的一个次数,因为我们是循环给大家呢加薪。那一直到这个一万二的时候结束,我们看到底加了几轮是这意思吧,好,那你在执行之前呢,咱们也可以先搂一眼啊,比如我们当前的这个avg的salary啊,From一下这个employees,我们看当前这个薪资是多少。哎,走一下。啊,7036啊,这是我们这个当前这个薪资啊,那我们相当于是呢,给每个员工呢都加薪,那加一轮之后呢,你再算一下平均,如果这个平均呢,肯定是比这高了,这个没有超过一万二呢,就再来一轮,再来一轮是吧,直到呢,我们当前这个,呃,所有员工的平均工资呢,超过一万二了,我们就结束是这个思路吧,好的啊。
08:20
呃,那这里边儿呢,我们相当于每一次呢,判断这个标准呢,就是看一下这个平均工资啊,是不是到一万二了。那这里边儿呢,我们自然而然的就会想到呢,咱们定一个变量,是不是来来计算一下,你先获取一下你当前这个表当中员工的这个平均薪资是吧?啊这呢,我们就声明这个变量啊。好,这块呢,我们declare一下,咱们叫avg的一个SL。哎,这是一个大类型的啊,我这呢就不用付这个初值了,是这意思吧。好,呃,然后的话呢,还得去想个事儿,就是咱们现在需要去计算一下它的循环的次数,我们把这个值呢,相当于是记录到这个number里了。哎,这个我们out是吧,写错了啊。
09:01
放到那个number里了,这个number的话呢,是从外边传进来的,我也不知道这个number一开始你有没有给过它值啊,你可能给他一个值十或者是几,这个我就不管你了,反正是我现在呢,是不是先定义一个变量啊。哎,我们这么找一下,哎,我们先定一个变量呢,咱们就叫做哎look的一个count吧,它这个int类型的,我们给它呢,需要去复制一个,哎这个复一个零,默认值是零,它呢相当于是来记录。它呢是用来记录我们这个循环的这个次数的,OK,有同学说,诶老师不是你这个number是记录的吗?哎,一会儿我给你说一下这个问题啊好,这块呢,我们就先这样呢来写,那一会儿呢你就知道了,然后这个呢,是来去记录咱们的员工的平均工资的,对吧。好了,那这块呢,我们就算是准备好了,那么下边要干什么呢?咱们,呃,按正常的思路的话呢,咱们开始要写这个是不是叫look了,那写look前面我们给它起一个这个标签名啊,比如我就还是叫这个look下划线叫呃,Label啊,你也可以简写,然后我就这样写也可以,这个你自己来定就行好,那这边进去以后呢,我们要干什么事儿呢?
10:09
回忆一下啊,如果呢,我们要是发现这个员工的薪资就是平均工资,他们是高于一万二了,我们就结束,这就相当于算是一个结束的一个条件是吧,结束循环的一个条件啊。结束啊,这个循环的这个条件。是你这个条件。哎,就是你这个高于一万二的就结束,如果要没有的话呢,我们就继续循环,所以这里边呢,我们需要判断一下你这个平均工资是多少,哎,那我们现在还没有怎么办呀,我们是不是得先来获取一下员工的一个平均平均工资是吧。哎,获取员工的,哎,平均的这个工资好,那这时候我们就,哎select叫avg的。Salary啊,是不是度到我们这个avg的S的变量里边,哎,From一下我们这个employees哈。对吧,那这样的话呢,我们就计算一下,就是默认情况下,其实就我们这个七千零三十六百就放到我们这个值里边了,然后在这里边呢,我们上来的话呢,诶同学说呢,上来了咱们就给每个员工去加薪,其实不是的,咱们需要上来呢,先判断一下,你当前就是我们是虽然一次还没有update过,我们先看一下你目前的啊,这个平均工资啊,他是不是这个怎么着啊,是不是大于一万二了,如果要已经大于一万二了,相当于一次也没有加薪,是不是直接就退出了呀。
11:27
啊,这个大家注意一下,所以这块呢,我们呃,先把这个if呢,给它写上,这个if的判断标准是什么呢?就是我们这个AG的SL呢,它是得大于等于是不是一万二了呀。哎,如果它大于等于一万二了怎么办呀,我们then,咱们是不是就要诶leave一下咱们当前的你这个循环结构了呀。是这意思吧?哎,那这块呢,我们就摁了一下,咱们这个艺术结构。好,那我们接着往下走,那如果说呢,你要是没有执行这个事儿呢,就相当于我们一进来的话呢,比如说是7036,相当于我们这块呢,判断一下是不是没有满足啊,没有满足是不是就执行到这儿了,那执行到这儿干什么呢。
12:02
哎,执行到这儿的话呢,我们说是不是要给这个员工去加薪啊,哎,这就相当于如果到这儿的话呢,相当于他就哎类似于我们说的那个else一样,是吧,哎如果呢,低于相当于是12000。那这时候呢,我们就是来更新员工的这个工资了,那怎么更新呢?那就是update呗。啊,Employees是吧。哎,赛一下salary等于它原有的这个salary呢,就乘以一个1.1。哎,涨薪为原来的1.1倍嘛,哎,这呢就是给所有的员工呢,都涨薪了是吧。那么都涨薪以后呢,注意这块就完事了吗?我们就要结束循环吗?啊,有同学说呢,是不是这块就可以,哎,终于结束一下我们当前这个循环结构了,你想想这时候对不对啊。呀,对不对呀。啊,这个时候如果我们要去执行的话,大家你可能会发现这就是一个死循环了。哎,这就是一个死循环,什么叫死循环呀,就是我们这个循环的话呢,它哎一直在里边去执行,它出不来,那就叫做死循环,那怎么就出不来了呢?哎,YIG呢,就是我们永远不会去执行这个语句了。
13:07
啊,为什么呀?哎,你看正常的我们更新完一次员工的薪资之后啊,咱们这个平均工资是不是就应该涨了呀,那你再去判断呢,它就大了是吧,但是这块你想我们这个值在一开始赋完值之后呢,你后边再改过它的值吗?是不是没有啊,哎,所以这块呢,一定要小心。啊,我们在这个位置呢,是不是一定要呢,去更新咱们这个avg的S2这个变量的值啊。啊,这个是一定要注意的好,所以这块呢,我们还得是不是再执行一下这个语句啊。理解吧,你看我们更新完员工的工资以后呢,你是不是得重新的再获取一下这个员工的平均工资啊,这时候呢,相当于比这个数要大了,是吧?然后呢,你再回到我们这个循环里边呢,看一下这个呃,平均工资是不是大于等于一万二了,那如果呢,哎,不满足相当于这块呢,就没进去,是不是接着更新,更新完以后再看一下此时的平均工资,哎,再判断,哎,如果这时候呢,发现已经大于等于二了,我们就结束这个循环。
14:03
对吧,那接入循环你别忘了我们要干什么事儿呢?咱们是不是要记录一下你到底循环过几次啊?哎,那执行完一次循环体,我们要记录一次,所以在这个时候呢,我们是不是要记录一下循环的次数。哎,记录这个循环的这个次数啊,那这个次数的话呢,我们刚才上面是不是定义了一个变量,就它呀,哎,CTRLC一下啊,默认值呢是零,咱们复制啊是不是S呀,它呢,就等于它本身呢,是不是再加个一就行。OK吧,好,那么这样的话呢,我们就把这个呢,就记录起来了,记录起来以后呢,哎,当我们这个循环结束的时候呢,哎,这就走到这儿来了。那走到这块呢?我们还需要做什么事吗?啊,你别忘了,我们现在是不是希望用这个number呢,来去记录一下你这个总次数,所以在这块呢,我们是不是需要呢?哎,咱们给这个number呢去赋值啊,哎,那这个number怎么赋值啊,是不是我们就set这个number呢?就拿咱们这个哎loop count呢去做一个赋值就OK了呀。这意思吧?哎,这就可以了。
15:01
啊,那好了,有同学呢就会说,哎,说老师本身我们这个number呢,就是人家给了你这样一个条件,用于呢去记录什么呀,这个循环的次数的,说你这块呢,还有必要呢去定义这个变量吗?好,那如果大家你看啊,我把这个给注入掉了,有同学呢,说直接拿它就行是吧?好那要是这样的话呢,我们相当于进来以后呢,在这个位置呢,大家就不用这样写了,你是不是就直接呢叫set number等于number本身呢,是不是加个一呀。然后呢,这块呢,也不用再去赋值了啊,直接结束,哎,最后呢,你再去通过我们这个call呢,是不是去调用一下咱们当前这个函数啊,这个存储过程是吧。哎,调一下这个存储过程,好大家看这样O不oko不OK呢。哎,实际上我说下这里边呢,会存在问题,那你看啊,比如呢,我这时候呢,这个number呢,我要这块负的值是个零,然后呢,我把这个CTRLC一下,咱们放到这儿。哎,你这个呢,相当于一进来的时候呢,它是个零。对吧,它这个是零的话呢,呃,其实这时候呢,我们相当于它既是个in又是个out了,是这意思吧,哎,既是个in又得是个out才行啊,你会拿到这个值啊。
16:04
嗯,行,那假设呢,我们这个值就进来了啊,这个值要进来的话呢,然后呢,它从零开始加个一加个一加个一做累加没问题了,但是呢,这时候你想我要是一开始给的这个值是十呢。那你这时候呢,是不是在十的基础上去做加加了,这显然是不是就不合适啊。哎,显然是不合适的,所以说呢,咱们不能够上来就拿着它去加加,而是呢,在里边需要呢,再重新定一个变量呢,然后让它的值是零,然后呢,让人家这个变量的话呢,不断的去加加是吧?哎,然后直到呢,你这个循环结束以后呢,你再把你这个number的值呢,复制为我们里边从零开始加加的啊,加一的这样的一个这个变量。啊,一个变量,我刚才说了个加加啊,这个呢,是在其他像变成Java里边语言里面,这个加加表示就加一的意思啊,哎,当然你把刚才我说的这个事儿理解成加一就可以了啊。哎,就这样来进行处理。能理解是吧,好呃,那这样的话呢,我们就把整个从这到这。好,现在呢,我们选中来做一个执行。
17:01
那这就可以了,好,那么执行完以后的话呢,我们刚才也查看过了,当前这个平均工资呢,是这个呃,7000多啊,那下边呢,我们就做一个调用啊,这块呢,咱们就我就不用写它了哈,直接是不是这样就行,调用完以后的话呢,我们在这块呢,是不是做一个select。哎,我们哎这么哎这样是吧,哎number啊,哎是不是这么着就可以了,哎你也可以分着去执行啊,先跑一下啊执行完了,然后我们再查看一下当前这个值是多少啊,这个是六,相当于执行过六次来我们这块呢,再去做一个select。诶,大家发现此时呢,你看12465,哎,就是还是比较接近我们这一万二呢,啊,那就相当于是应该是在这个一万二的时候呢,就结束的是吧。OK。好,那么这样的话呢,咱们就把这个loop这个函数呢,哎,这个循环结构呢,咱们就说清楚了。啊,他就说清楚了,好,然后接下来的话呢,我们来看这个第二个这个结构啊,这个呢是我们的。哎,4.1啊,我们这个是4.2啊,这个呢,我们来看一下这个循环结构之啊,咱们接着呢,说一下这个while结构啊。
18:07
好保存一下来回过来呢,我们看一下下边这个循环结构呢,叫做while啊well呢,就是也是表示循环了啊,它整个结构呢,长这个样子啊,我们CTRLC一下拿过来。嗯。好,我这块呢,粘过来了,Well这块呢,它有一个叫循环条件,然后这块呢叫do是吧,哎,Do然后执行这个循环体,然后呢end well呢表示结束我们当前这样的一个循环。啊,这个呢,诶这个我也是用那个中括号来表示,就是说没有说非得要加啊,你也可以没有我们这个label啊,具体什么时候有什么时候没有,哎我们呢,这一会总结的时候呢,来说啊,一会总结出来说。好,这是咱们现在要讲的,是不是第二个循环结构啊。诶,那在讲这个例题之前啊,诶,我说这么一个事儿。哎,我说这么个事儿,然后大家呢,方便呢,你去学习我们的循环。说老师你为什么不不一开始讲look时候说呢,哎,我们look呢,大家先感受感受是吧,哎,然后呢,我们再来去讲解这个事儿啊,哎,什么问题啊,哎,这个我写的。
19:09
写到这块也行。我就放在这最后了。哎,看一下啊,哎,我这样说就是凡是这个循环结构,哎,我们说呀,一定具备四要素。哎,四个要素。大家呢,也可以通过这个角度呢,你去看一下咱们写这个循环结构呢,你是不是丢东西了。哎,我说啊,凡是循环结构呢,一定具备四个要素,这个四个要素呢,不光是针对于咱们MYSQL来讲的,MYSQL中呢,我们讲loop,讲well,讲repeat是吧,那么在别的编程语言当中也一定是这样子的,哪四个要素呢?第一个要素我们称为呢,叫初始化条件。哎,叫做初始化条件,第二个要素呢,叫做循环条件。然后第三个要素呢,我们叫做循环体,然后第四要素呢,叫做迭代条件。
20:04
哎,叫做迭代条件好,那么我们这是四个条件啊,我说呢,凡是循环结构都一定有这几个部分的好,那下边呢,我们拿着这个呢,去套一下咱们刚才说的那个题目,当然那个题目呢,就是说,呃,员工的这个平均工资呢,得这个大于一万二啊,只要不满足的话呢,我们就给员工呢去涨薪啊,这个变成他原来的这个1.1倍啊是这意思吧,好那么在这个题目当中呢,你看看这四部分呢,分别代表的是哪一个结构呢?来,你看我这块呢,我往这放一下啊。来咱们分析一下,在我们这道题目当中,你说哪一个呢叫做初始化条件呢?初始化条件是吧,哎,那这块呢,我告诉大家,咱们这个位置上,就相当于是咱们说的这个第一个叫初始化条件。诶这个呢,叫做初始化条件,就是我们呢,诶先获取一下当前这个平均工资啊,这就是一个初始的一个值啊,拿到了一个咱们那会儿看的是7000多块钱是吧?好,那这个得到以后呢,循环条件是什么呢?这个循环条件就是我们在满足什么样场景下呢,咱们就会继续执行。
21:10
啊,或者叫不满足什么条件下的话呢,我们就退出循环啊这呢就是我们所谓的叫循环条件,那在咱们这个题题目当中,咱们去结束这个循环的标准呢,是不是就它呀。如果呢,是大于等于一万二了,我们就退出了,所以这个呢,理解为咱们说的这个叫哎循环条件。哎,这个呢,叫做循环条件。那就是它OK,那么循环体是什么呢?循环体就咱们说呢,哎,反复的会去执行的这个代码,那我们在这个题目当中呢,只要你不是大于等于一万二的,我们是不是反来反复的执行呢?就是来呃让员工的薪资去增加呃为原来的1.1倍是吧,那这个呢,相当于是咱们这个叫呃循环起部分。哎,这个是循环体,好,那么迭代条件是什么呢?哎,迭代条件通常都是针对于咱们这个初始化条件里边那个变量而言的,在我们这个里边呢,你执行一次循环体,我们是不是就要重新的获取一次你这个,呃,当前这个表当中的员工的这个平均工资了,是吧?哎,这个呢,就是我们这个叫迭代条件,就是因为我们这个变量呢,它的当你执行一半一遍循环体之后呢,它的平均工资呢,是不是就变一次,我们就要获取一次,获取一次之后呢,再看这个值呢,是不是满足这个条件的。
22:23
哎,所以把这个呢,我们就称为呢,叫做迭代条件。哎,叫做迭代。哎,这个条件是吧,那么整个呢,我们说这个循环结构啊,啊缺一不可,你看比如说呢,我要是把这个给去掉了,大家你想象一下这个题目会是什么问题啊。哎,就是我们那时说的是不是死循环呀,你看比如说我们一开始获取这个平均工资,哎,我记得咱们刚才是7400多是吧,哎,我就假设七千四了啊,那一进来之后呢,七千四大于等于二嘛,是不是不满足,不满足这块你是不是就给他涨薪,涨完薪以后呢,可能变成这个,我举个例子啊,比如说呢,诶变成七千八了。然后的话呢,你这块也没有迭代条件啊,这个比如加个一,然后又回来之后呢,是不是还是拿这个七千四呢,去判断是不是大于等于120,是不是不满足,不满足这块又加这块呢,其实变成比如说八千一了。
23:09
然后呢,你这块还是拿着七千四去判断是不是大于等于12000,这个显然的话呢,你这是不是永远出不来啊,因为你老是拿着7400,但是实际上我们平均工资都已经改了,所以呢,你需要呢,把这个平均工资呢,是不是重新再付给我们这个变量才可以啊,哎,也就是说呢,咱们这个事儿啊,大家一定不要去丢了。经常呢,大家写循环这个整体结构的时候呢,就会容易呢,去丢了这个迭代条件啊,那就麻烦了啊就麻烦了,好这个呢是我们说的,呃,这个这个题目了,那么以咱们刚才说的简单一点的这个结构来讲,你说我们这四部分怎么去对应啊。这块呢,相当于就是我们的初始化条件是吧?哎,我们定义一个变量呢,它这个值是一,这就初始化条件,然后这个循环条件呢,循环条呢,就是看一下你这个值呢,它是不是大于等于十啊,如果大于等于十的话呢,我们就退出了啊,如果不满足的话呢,我们就接着去判断,这个呢,就是我们说的这个循环条件,循环体呢,循环体呢,就是我们给这个变量去赋值了。是吧,它一开始是一,然后呢,我们让他去加一啊,每次加一加一加一啊这个呢,就是循环体,然后呢,这个呃,迭代条件,哎。
24:08
错了哈,错了,这个是我们的这个迭代条件是吧,就每次呢,让他去加一,这是一个迭代条件,这个循环体呢,咱们这里边儿呢,倒没有刻意的说我去做一个什么样的结构。就是现在这个循环体呢,我们没有做的事儿。能理解吧,你看我相当于让这个程序呢,一直循环了这个十遍,咱没有明确的让他去做个啥啊,这块呢,相当于给因为简单嘛,给略掉了,你也可以在这块呢,比如说呢,哎,我们让某一个程序啊,我这块简单写啊呃,可以考虑。哎,某一个代码程序。是不是反复执行?啊,这块呢,我们相当于把这个取完体这个结构呢给略了啊,因为咱这写的比较简单啊,实际当中的话呢,这个肯定不能略了,咱们现在呢,只是你像这个质量默认是一,然后让它加个一,然后呢,判断是不是大于零于十不满足,然后接着又加一,又加一又加一,我们相当于是让这个程序的循环了,就是十遍一样,但是我们没有去做任何的事,是吧,这个咱们只是举的比较简单了,正常来讲的话呢,这个循环体诶,它是一定存在的。
25:07
啊,一定存在的啊,这个大家注意一下,这个呢,是咱们这个迭代条件啊,不能丢了,这要丢的话,那是不是就出现这个死循环了是吧,好的。呃,这个说清楚之后呢,咱们下边来看一下咱们这个while循环,大家怎么去对应着四个结构,首先呢,我们也是来一个,哎,举例一啊,跟咱们上边这个类似啊,首先。看啊。哎,是这么着的对吧,然后在这呢,我们去create一个procedure。咱们来一个test,是不是这个well啊。哎,这么着。然后呢?Begin n的结束。哎,在这是吧。好,那这块呢,我们看一下怎么去做啊,首先呢,我们这儿呢,也是去declare啊,我定一个叫number吧,然后呢,是一个特类型的哎,Default。哎,这个默认值呢,比哎,Deportt就这样,哎是个一是吧,然后我们这个循环结构的话呢,直接就写个while呗,嗯,While什么呢?哎,我们这个number呢,让它哎小于等于这个十。
26:08
哎,你看我是这样写的啊,让它小于等于十,哎,当它要是满足这个小于等于十的话呢,我就让它去度啊度什么呢,下边这个呢,其实就是我们的循环体了啊,循环体这块呢,其实咱们还是这意思啊循环体,哎咱这里边呢,就是简单一点是吧,我就给略了啊哎,去做什么什么事啊,哎做完这个事儿以后呢,我们是不是需要这个叫迭代条件呀。哎,那你这个迭代小姐你想干什么呀?哎,我说呀,我这里边我就想让我这个number呢,是不是再加个一就行,哎,我们就set一下这个number呢,等于哎number呢,是不是自己再加个就可以了,好了,那这个呢,我们就写完了,然后最后的话呢,是不是有这个end well啊。就这样的就结束了。那么这里边儿的话呢,咱们这个位置是不是它就相当于又是叫做初始化条件呀。哎,输入化条件,哎,然后这个呢是哎循哎这个呢,相当于是我们的这个循环条件是吧。
27:10
哎,这个循环条件呢,就是让我们这个number呢,呃,小于等于十,只要它满足这个情况呢,它就会进去这里边去执行这个循环体呢,咱们也啥也没干啊,因为咱们这个比较简单嘛,哎,你可以比如说我去输出一个东西啊都可以的,哎,然后呢,接着你让这个值呢去加一,这叫迭代条件好的,然后此时呢,我们选中啊,从这到这啊走起。成功了,然后呢,我们接着呢去做一个调用了,哎,我就直接呢,就。套是吧,然后我们就test一个a well,哎这么着,哎,选中。不行。啊,不行啊,你看我这时候执行完以后呢,我们这是在里边定义的,咱们也看不到这个number这个值了是吧,那这块执行呢,倒是没问题啊,但是执行完以后呢,你也看不到任何的东西了,嗯,咱们呢,这么着啊,我重新再再去定义一下召和一下咱们当前的这个哎,存储过程。CTRLC。
28:02
哎,这个能选中啊,走一下。呃,在我们结束这个循环条件以,呃循环以后呢,咱们在这个位置呢,去打印一下啊,所以这块呢,我就呃select一下咱们当前这个number,哎,我这么找一下啊。相当于是一个查询。啊OK啊,那这个跟咱们循环就没有关系了,是这意思吧,好,那这块我们选中了,到这儿啊,咱们重新再给他跑一下。啊OK了,然后呢,哎,这个其实就没有了啊,然后这块我们就直接呢,去做一个扣啊走起啊这块你看就11。为什么11呢?我们这是小于等于十是吧?哎,比如我们在当number等于十的时候呢,其实这个呢,是不是又进去了,进去之后呢,就变成11了,11之后呢,大家回答11小于等于什么,不满足了是不是推出的,所以这个number最终的值呢是11。啊,是这样子的。啊,这是咱们一个调用存储过程的一个过程啊好,这个呢,就是我们举了一个简单的关于while循环的基本结构的一个问题,然后接着我们来看一下这个,哎,稍微复杂一点的这个看举例二啊。
29:06
好,那举例二的话呢,我们也是看一下这个题面啊,这个就去掉了,来从这到这啊CTRLC。转过来到这儿。看一下说这个市场环境不好的时候啊,公司为了渡过难关,决定呢,暂时降低大家的薪资啊,这个可以理解,比如说现在疫情期间,其实好多行业呢,现在都不太好待是吧。包括呢,这个前段时间国家又针对这个教培行业呢,这个动手了啊,这个动静还是很大的啊,这个牵扯的这个人员呢,也蛮多的啊,也蛮多的啊。呃,这个降低大家薪资了,没有办法是吧,那这时候呢,我们就定义了一个存储过程,然后去操作,行,咱们首先呢,把整个这个结构呢,咱们先搭建起来啊Di limit。哎,这么着是吧。
30:01
嗯,Create procedure。哎,这么着,然后呢,这块呢,名字也给起好了,叫update salary will啊,CTRLC一下,咱们拿过来看小块这样一整啊,然后比begin一下,看这块摁一下。哎,这是整体的一个结构了。好了,那咱们看一下这怎么写啊,嗯,这里边呢,声明这个参数呢,还是叫out,那我们还写到这儿啊,还是叫number,嗯,它是记住这个循环次数的,跟咱们上一道题其实类似。那只不过这道题呢,是降薪的啊,有点这个悲观是吧,上边是涨薪,下边是降薪啊,其实整个套路呢,应该是比较接近的啊,比较接近的。嗯,好了,那给大家降薪,降薪为原来的90%,那直到呢,公司的平均工资呢,达到这个5000啊,这降的还是很低的哈,诶原来呢是涨到一万二啊,平均工资员7000多啊涨上去了,现在跌回到5000,诶统计一下这个循环次数啊,其实整个思路呢,跟咱们上面那个loop呀是一样的啊。那首先呢,我们也去这个相当于生命这个变量了。好。
31:00
哎,我们是不是定一个变量呢,哎,它declare叫avg的SL,然后呢是一个哎W型,哎这个呢,我们就不取它的默认值了是吧。然后接着我们再去declare一个,是不是记录一下我们这个循环次数啊,哎,我们这个叫。呃,Well吧。哎,它的一个count in类型的。这个呢,我们需要给它赋个默认值啊,是个零啊,它呢是来记录。哎,这个循环的这个次数是吧。这个呢,是不是来记录我们的这个叫呃,员工的平均工资啊。可以了是吧,好,那么定义好这个变量之后呢,跟咱们上面这个套路是一样,下边的话呢,我们需要给这个平均工资啊,是不是先做一个赋值啊,OK,那就是select。哎,咱们的avg的salary是吧?诶,然后into到我们这个avg的SL这个from employees。没问题是吧,好,那么下边的话呢,我们就开始具体写这个叫Y循环了,哎,看一下相当于这个位置呢,就是咱们所谓的叫初始化条件啊呃,Y循环怎么写呢?咱们是不是要判断这个,呃,平均工资啊,这个平均工资满足什么条件呢?我们就进去呢。
32:15
如果你这个平均工资呢,我们发现它是大于。嗯,大于5000的,哎,我们呢,就需要去度,你看对不对啊。就是相当于我们一会儿呢,要降薪了,哎降一次新增之之后呢,发现这个平均工作量还是大于5000的,是不是接着再进行循环呀,哎,所以这个哎直到呢你到5000,哎,如果要等于的话呢,相当于我们也让他退出。啊,所以这块我就不加等号了哈,好,那do这里边想想我们要干什么事呢。哎,我们这里边呢,这个呢,就叫做我们刚才提到的这叫这个循环条件啊,这里边儿呢,是不是要写这个循环体啊,哎,叫写这个循环体啊,循环体的话呢,咱们要做的事是什么呢?是不是要给员工降薪呀。好的。那我们就是一个update啊,Update employees。
33:03
哎,然后set一下,这个salary等于原有的salary呢?是不是乘以一个0.9。这是不是就给全员做这个降薪对吧,那全员降薪完以后的话呢,我们还得去再计算一下,是不是这个平均工资是多少呀。哎,平均工资是多少,然后呢,哎,计算完以后的话呢,再看一下它是不是大于5000的,哎来决定呢,我们是不是要接着下一步的这个操作,哎,所以在这个位置呢,我们就直接呢去摁一下咱们这个while,哎是不是就OK了是吧。然后这个题面里边的话,我们是需要计算一下,计算一下你这个循环的次数,所以这个值的话呢,我们相当于顺便呢,也得在里边呢,去做一个操作啊,你也可以理解成我们叫循环体的一部分。啊,也可以理解成这个循环体的一部分啊,在这个位置呢,我们可以去塞一下它呢,就等于本身这个值呢,再加个一。啊,就这样个思路啊好,那么这样的话呢,我们在整个呢,呃,执行完以后啊,什么时候我们这个外部循环就退出了呢,就是你这个工资呢,达到5000的时候,不满足这个条件了,我们就退出了,啊退出以后呢,我们在这儿呢,相当于做一个什么呀,给我们这个。
34:08
呃,参数叫number呢,赋值。哎,给它呢,做一个赋值,相对这个number值呢,我们,诶set是吧,Set,我们这个number值呢,它就等于我们这个叫welcome count。好这就可以了,然后整个呢,我们就结束,哎,这时候我们就写完了啊,选中做一个执行。啊OK啊,哎,接下来的话,我们就做一个调用。嗯,调用啊,调用之前,调用之前的话呢,我们先查询一下咱们员工的这个叫平均工资啊,From employees。来我们这时候呢,选中啊执行好,这时呢是12465,哎,然后呢,我们这块呢,要给员工去降薪了啊,咱们调一下这个扣。哎,这个是吧,哎,CTRLC。哎,这样我们选中啊到这啊,嗯,这个位置呢,我们需要呢,给他传一个参数啊,这个我们叫一个number吧,哎,OK,这个一顿执行,执行完以后的话呢,我们看一下它执行的一个次数,哎,Select一下这个number是不是就可以了,好,那这块我们直接选中了,一次性的都跑起来。
35:11
啊九啊,这样一共呢,执行降薪过相当于是九次了,然后我们这块呢,看一下这个员工的平均薪资是多少啊走起。哎,4829,那你看应该是很接近于我们这个5000的,那就相当于是在达到5000的时候呢,它就给停止这个循环了。啊,降薪过很多次啊好,那如果我们这块再去执行呢,但是你看我再执行呢。这时候是不是应该是零了呀,哎,因为呢,我们一上来呢,判断这个员工的这个工资的时候呢,他就已经是4000多了,就不满足我们这个外部循环,相当于直接呢就退出循环了,然后这时候你这个y count默认是零嘛,啊,这个零呢就付给他了,所以结果呢就是零。啊,应该能看懂是吧,好的啊,然后这里边儿呢,我们大家不断的去写这个循环结构呢,你去体会我们说的这几个部分,在我们这个题目当中呢,这个咱们的这个诶。平均工资相当于它是一个叫初始化条件,然后呢,我们这个循环条件呢,通常针对的也都是这个初始化条件去做判断的,然后迭代条件呢,也是针对我们这个初始化条件呢进行更改的,更改完以后呢,再看一下你这个变量呢,是不是满足这个条件的,所以这个呢是我们初始化条件,这叫循环条件,这个呢,我们叫这个呃四叫迭代条件,这个位置呢,就是你每次循环要做的事儿,其实就是加薪啊,然后呢,记录一下这个个数。
36:25
是吧,哎,这呢,就是我们的这个叫循环题啊。好,这块呢,大家去明确一下啊。那么这样的话呢,咱们就把这个第二种这个结构啊,咱们就说清楚了,接着呢,咱们说一下这个第三种结构啊,循环结构之,哎,我们还剩最后一个呢,叫做repeat。哎,Repeat啊好,那么这个repeat结构呢,我们首先看一看它的这个整体结构是什么样子的啊,这块我就不去念了啊,咱们直接呢,就上这个结构CTRLC诶拿过来。好,这样子写的啊,这块呢也会有个标签啊,也是根据实际情况呢,我们看这个标签呢,需不需要去加叫repeat,然后这个呢叫循环体,这块呢叫until啊结束循环的条件表达式。
37:09
那你看这块呢,就要结束循环的血性表达式,它跟我们上边的不一样啊,咱们上边这个呢,是要是是真的话,或者你列成是处的话哈,它是真的话呢,相当于就进去了。你比如我们这个工资呢,是平均工资大于5000,你是不是还得接着降薪,所以这个是真的话呢,他就进去了啊,而我们这个的话呢,这个要是真的话呢,他就退出了。因为呢是结束的一个条件。啊,这块有点区别啊,一会儿咱们一写例子你就明白了啊。嗯,这就然后最后呢,叫N的一个repeat啊,就是这样的一个情况啊,好这个结构呢,也就这样了,然后我们下边就还是写例子啊,举例一。来,咱们写这个例子,嗯,跟上面一样啊,咱们就直接还是搞了一个让变量不断的去加,加这样加一的这样一个事情,嗯,还是the limit是。
38:01
这好像年纪大了,这个录的这一节,这个时间稍微长了点,感觉还稍微有点喘的哈。啊,最近的话呢,因为这个疫情的原因,在北京的这块在家里边给大家录课哈,有时候录的时间比较晚啊,大家你可能看到我这个右下角这个时间的话,有的可能是到夜里边一两点钟了啊,这个时间稍微晚一点,加上呢,天天在家憋着也不运动啊,体质呢稍微是会受影响。啊,这个咱们这个呃,基础阶段这个课程呢,也快是接近于这个尾声了啊,快接于这个尾声了啊,大家能够看到我们这块的话呢,相当于也是哎,不容易的啊,就是发现我们学任何知识都是呢,有好多小伙伴呢,就是在一开始的时候呢,诶这个都都都挺有兴趣的是吧,他开始去学,当然越往后人越少,越往后人越少啊。嗯,那关于这个数据库这块呢,这次咱们确实也是一次大的升级哈,然后整个呢,你从这个课程时间上来看,也能够看得到啊,我们这个整个时间呢,也很长啊,应该将近了这个五五十个小时,这个50个小时了吧,是吧。
39:00
所以大家呢,你要是真正的想学这个MYSQL或者这个circleq的话呢,诶好好的把我这里边讲的这个题目呢,去写一写,练一练啊,应该呢提升还是不小的,那我们下面的时候呢,重点呢,咱们就拉升大家这个技能了啊,企业当中的这个实战能力啊OK。好,那这块我们接着回来去写啊,然后呢,Create procedure。嗯。哎,这个这个是吧,然后这块呢,我们来一个是叫repeat,咱们叫test repeat。哎,就它啊一个小框,然后里边呢是begin是吧,然后一个end呢,结束没有问题,嗯,这块的话呢,我们看整个这个结构呢,是不是长这个样子啊。长这样子,然后我们这块也是先声明一个这个变量。啊,这个declare是吧,哎,我们还是叫number吧,然后呢,是一个类型的。敌方的这个值呢,是个1OK啊,然后呢,我们就直接repeat了。啊,这个叫循环是吧,这里边儿干什么呢,我们就让这个number呢。
40:01
不停的加一。哎,就是这样一个操作啊,加一加一加一是吧,Until什么时候呢,Until呢,你这个number啊,它大于等于十了。哎,这个时候呢,诶诶注意啊,你看我这个分号我先加上啊,哎,当你达到这个时候的话呢,我们就结束你当前这个循环啊,最后呢,哎,我们是摁了一下你这个repeat。哎,就这样的情况。这我就写完了啊,这我就写完了,嗯,这个你这么着对齐一下也行啊。好,那完事以后的话呢,我们在里边呢,再打印一下。哎,或者我们就要查看啊,哎,你这个当前这个number这个值,我们就select。哎,就这是吧,哎就可以了啊好,这时候我们选中呢,你执行一下,你看会不会报错啊走起,哎报错了在哪块报错呢,说near,嗯后边呢叫end repeat end repeat在这块报错的,哎其实这块呢,主要原因呢,就是这个分号呢,大家不要去加。啊,这个呢,一定要特别小心,这个分号不要去加。啊,你看他他不就在这块报错了吗?其实就是这个的前边啊,就是这块呢出的问题。
41:03
好这块呢,来我们再选中啊执行。你看此时呢才可以啊,所以一定要小心一点。然后呢,调用。哎,就靠一下,咱们去test一下这个repeat啊。Repeat,好,没问题,行,来选中了,我们走起来,这个值呢,你看是十啊,这个呢,来我们分析一下,首先呢,我们这个值是一,然后进去之后呢,我们是不是就变成二了,说until number大于等于十大于等于十吗?是不是不满足呀,注意你看啊,不满足的话呢,就进去接着循环。嗯,那么直到你满足的时候呢,就退出,是不是我们这个为真的时候呢,其实代表的是结束的意思是吧。啊,就是你满足这个式子了,它是表示结束的意思,而我们上边这个呢,你看。我们这要为真,那就意味着我们平均工资量现在是不是比5000还高啊,哎,如果呢,你要比5000还高的话呢,是不是还得接着降薪呀。
42:02
哎,所以说这个为针的时候呢,表示的是接着进去循环,而这个为针的时候呢,表示的是呢,我们就退出循环了啊,这是一个区别。哎,注意这是一个区别。OK啊。那这呢,我们就说到这儿,然后下面的话呢,我们再再再接着呢,咱们看下这个叫举例二啊。这个举例二的话呢,跟咱们前面这个类似啊,也是关于这个降薪,这个涨薪的这样的一个场景啊,CTRLC啊,现在呢,我们说这个市场啊啊又活过来了。那原来呢,跟着公司呢,一起打拼的没有这个在困境当中走的这个小伙伴呢,哎,公司呢,就接着给咱们再涨薪是吧。好了,看一下说呢,环境又变好了,公司呢,为了奖励员工给大家再涨薪,涨薪的话呢,是这么着,然后我们还是把整个这个结构呢,给它搭建起来啊,Limit啊。或者这个呢,跟咱们前面的整体结构呢,比较类似,咱们抄一下吧。抄谁呢?抄哪个其实都行,抄这个吧。
43:01
最近的这个啊,CTRLC。好拿过来,然后呢,这块呢又是叫呃叫update salary repeat啊CTRL一下把这个呢改一下。参数围要的还是他输出循环次数性,嗯,给大家呢涨薪,涨薪呢是原来的1.15倍啊,这个涨得高一点是吧,然后呢,这个直到全公司的平均工资达到一万三的时候呢,结束计算一下循环次数,哎,这个呢来统计下循环次数,这个来记录一下平均工资,这都没问题,还是这样做是吧?哎,下边这个位置呢,是我们要把它换掉啊。哎,这个我们要换掉了,哎,这个呢,其实还是保留的啊,那咱们现在呢,是一个叫repeat吧。啊,Repeat,我们要干什么事呢?进去以后呢,我们要给员工呢,是不是要加薪呀?Update employ employees。然后晒一下。嗯,这个salary。赛的这个salary呢,等于它原有的这个salary这个再乘以一个是不是1.15倍是吧?哎这么着,这就相当于是我们去加薪了啊,加薪完以后的话呢,你是不是还得再获取一下你当前员工的这个平均工资啊。
44:12
哎,你看啊,我们这个是加薪了,加薪以后呢,你再获取他这个平均工资,然后呢,我这块是不是有个叫repeat啊,叫一个叫until啊。N until什么呢?N我们这个值。啊,什么时候退出啊,诶,我们达到一万三的时候啊,大于等于13000。哎,这个时候呢,退出注意这个,嗯123注意这个分号的话呢,是不是不要加呀,哎要小心一点啊,然后呢,我们去摁一下这个repeat。那是不是这意思啊?然后呢,在我们这个场景里边的话呢,我们去加薪,加薪完以后呢,咱们还得是不是把这个个数呢,还得让你去做一个累加呢,所以我们这块别忘了这个事啊,诶塞一下它,哎,等于本身它呢,再去加个一。哎,这呢可以整个呢,这块构成我们的叫循环体是吧,捋一下啊,这个呢叫初始化条件。
45:03
啊叫初始化条件啊,就还有我们说的这个啊初始化条件,嗯,然后呢,嗯,这个循环条件是什么呢?循环条件是它。啊,循环是它,循环体呢,是它迭代条件呢是它。哎,缺一不可的。啊都得有行,然后最后的话呢,我们出了这个循环之后呢,我们再给它重新做一个复值,哎,注意这个咱们,诶我这个叫well啊,Well不合适了,咱们现在是repeat是吧。我叫repeat count啊,CTRLC。哎,重新再给它赋值,哎,这个重新去赋值好了,那这时候呢,我们再返回一下就OK了。没问题吧,你行,那这块我们整体选中啊,咱们做一个执行。好可以了,嗯,可以以后的话呢,我们首先呢,先查看一下啊,Avg的一个salary。From一下。Employees来这时候我们选中啊执行好,这时候呢,我们是4829块钱。
46:01
来,我们现在来去做一个调用。靠一下。咱们当前的这个。哎,CTRLC。哎,这个呢,存储过程是吧,好这么着啊,那这里边儿呢,我们放一个这个number进去。哎,Select一下我们这个number这个值行,这时我们就直接选中了,跑起来了啊,走起。诶,八。这个执行了八次啊,诶,然后这时候呢,我们选中以后,咱们再去执行,好大家看此时呢,是14773啊,已经超过一万三了啊,一共呢,是执行了八次,达到我们这样的一个效果的。能理解吧,哎,就是这个意思啊。好了,这个呢,我们就做完了啊。嗯,能行是吧。啊,这个大家可能下来还得自己写一写啊,你可能看我这块写的挺热闹的啊,就是看着也没报错是吧,然后你自己写的时候呢,有可能会好多位置报错啊,我在一开始写的时候呢,经常容易出错的,就是在until这块呢,哎,容易加分号啊,这个要小心一点,别加啊。
47:00
好了,然后呢,我再大家带大家看一个稍微有意思的一个小事儿啊,你看我现在呢,我再调一次啊,你看我再调一次。走起。哎,大家你看此时呢,这块写的是个一了啊。这块是个一,而且呢,我们刚才看到这个平均工资呢,是不是14000多啊,那你看我这会再去做个查询。哇塞,变成16000多了。这什么情况呢?为啥呢?来我们分析一下。分析一下,你看我们这块进去之后呢,哎,咱们这块呢,先取了平均工资其实是14000多了。对吧,已经变成14000多了,然后呢,这个呃,一进来这个repeat就进去,然后我们就把这个工资呢给涨了一下,涨完之后的话呢,我们原来这个repeat count它是零,然后加个一呢,它是不是就变成一了呀。哎,那这块我们再去查询,这平均工资是不是已经变成16000多了,哎,然后这块呢,说until啊,16000多大于等于13000,呃,一万三满足是真的,是不是整个人就结束这个循环了呀,然后下边呢,又把你刚才那个一呢付给我们的number了,所以这个number呢值是一,然后平均工作一查是16000多。
48:06
啊,我为什么这块呢,要再重新运行一下呢,诶我想给大家说明的问题是啥呢?就是我们这个repeat呀,它跟上边儿这个well。哎,我说呀,它跟这个while啊。啊,包括呢,我们上面说那个loop啊不太一样。为什么不一样呢,你看我们这个。啊,我们这个的话呢,你看咱们这块呢,是给他降薪的哈,诶我们当初呢,倒是没有跑过第二次,但是呢,咱们分析也能知道,如果这时候员工工资啊已经大于。呃,咱们啊,这个是降薪的哈,咱们当时是4700多哈。哎,就假设是4700多了,这个员工的薪资呢,已经在4700多了,然后我们这个循环结束了,然后你要是再运行一次的话呢,是不是一上来获取平均工资是4700多,直接呢,4700多大于5000吗?是不是不满足就一次也没有执行,我们要是再跑一次的话呢,其实你会发现咱们这个number的最终的值其实是零。
49:00
啊,因为呢,你没有进这个循环的循环体当中,就把这个最初的上边这个零呢,付给了我们这个number了。哎,我想说的点是什么呢?就是这个外循环呢,一上来他先呢是呃,执行我们这个循环条件。如果条件一上来就不满足,是不是直接就退出了,而咱们这个呢?的话呢,他是不是一上来,我不管你现在平均工资是多少,我上来以后呢,我先爽一把。我先执行一次循环起,执行完以后的话呢,一看就哎哟哎呀不好意思啊,执行完了,然后发现哦,你这个一开始好像就大于一万三哈,那不好意思了,反正我跑了一次是吧,诶他就是这个意思。也就是说我们这个repeat的结构啊,它不是一上来呢去判断这个循环条件的,上来呢先执行一次循环题,然后呢再判断循环条件。哎,也就是说我们这个repeat它至少呀会执行一次啊,大家体会一下这个点。好,那这个点的话呢,其实我也记录在咱们下边这个小的总结里边了,来大家看一下。
50:01
对比一下三种循环结构啊,第一个点呢,咱们先看第二点啊,这个while循环呢,就是先判断,咱们刚才说的先判断循环条件,后执行循环体是吧?而repeat呢,就是先执行一次循环体再判断,所以它就是它呢就是至少呢会执行一次。哎,这个有它的特点二这六步呢,你看我这块写的,它经常用于简单的这个死循环,其实这块这个死循环呢,我们需要加个引号哈,它不是说真的这个死循环了。而是说呢,我们经常这个loop的话呢。哎,这块大家呃,稍微的注意一下啊,这就相当于是咱们讲一下它的这个实际使用当中一些细节点啊,这个路的话呢,你你会发现咱们好像不是说通过像while啊,后边直接写那个循环条件了,它这个是不是借助一下我们这个if啊。哎,就相当于是他这块默认的,你看你看啊,大家注意,我们如果要没有这个哥们的话呢,你是不是上来循环咔就加一,然后这块呢,就就就再加一再加一,没有所谓的那个循环条件了,成了,那我们相当于是通过这个结构呢,是不是让它跳出的呀。
51:01
哎,让它跳出的,所以说呢,这个它呢适合于那种天然的,哎就先是一个雌循环,然后呢,满足某个条件的时候呢,让他出去,所以说呢,我们经翅看到这个lo虎啊,给跟我们这个利用呢,它俩结合着去使用。啊,这个我们见的比较多啊,而一旦呢,我们要是呃结合这个live去使用的话呢,咱们就需要呢,给他加上这个标签了,所以呢,大家你会看到我一开始上来讲loop的时候呢,有个标签,而我们讲这个while的时候呢。那while的时候跟我们下边这个,诶repeat的时候呢,其实我都没有用这个标签的。啊,就是只有你在用到这两个关键字的时候呢,我们会考虑使用这个标签啊,这个大家稍微注意一下,行,那么这样的话呢,咱们把这三个循环结构呢就说完了,然后大家呢,也相应的练习一下。
我来说两句