00:00
好了,那么第二节呢,咱们关于啊,MYSQL程序呢,在运行的过程当中,如果出现错误了,哎,我们该如何处理的这样的一个机制,那接着的话呢,我们来谈一下第三个问题,叫做流程控制,那我们说任何一个编程语言啊,其实都会涉及到这个流程控制的结构的,对吧?诶这个是毫无疑问的,呃,正常来讲呢,我们写一个程序的话呢,它默认呢,就是从上往下的这个顺序呢,是去执行,比如说我们在这个存储过程当中,我们这块呢,从上往下的顺序呢,去执行没有问题,对吧?OK,那么这种结构呢,我们就称为呢,叫做顺序结构。那就叫做顺序结构,那么在这个执行的过程当中啊,还有两类结构呢,呃,是我们需要呢,讨论的第一类的话呢,就是在执行的过程当中。出现这个分支了啊,就是可能会这样,也可能会这样,这呢是二选一的情况,还有可能呢,是不是出现这个多选一的情况呀,那比如说我们在这个生产流程当中啊,这个产品的话呢,时不时的会被这个抽检,那抽检的合格的话呢,就往这边走,不合格的话呢,就往这边走,对吧?这个呢,我们属于一个二选一的情况,那实际当中呢,有可能会我们会出现这种叫多选一的这种场景,这儿呢,都属于叫分支结构,叫分支结构,那么另外的一类结构呢,叫做循环结构。
01:13
在整个我们程序的执行过程当中,会有一些反复执行的代码,那我们就可以把这个代码呢,放在这个循环结构当中,比如说呢,在一些工业生产流程当中啊,经常在一些环境当中需要对,比如说一个诶这个我们这个半成品是吧?呃,需要做个清洗,然后呢,在执行一些步骤之后呢,回来再去清洗,那么这个清洗的步骤呢,相当于就是一个循环的一个结构。啊,大家理解一下,OK,行,那这呢就是我们说的主要的三类结构了,那下边的话呢,我们看一看,针对于MYSQL来讲,那相应的这个结构呢,它提供了哪些语句呢去实现。顺序结构呢就不用多说了,正常往下执行,它就是顺序结构的这个分支结构呢,这里边提到了一个呢叫做if语句,一个呢叫做case问then这样的这个语句。然后呢,循环结构呢,这里边提到了有三类,一个呢叫loop循环,While循环和repeat循环结构,那么在使用循环结构的过程当中啊,我们还可以呢,去使的这个跳转语句啊,Terrate和这个live这样的这个结构,所以这里边呢,我们要给大家讲的这个整体上的话呢,是这两套这个结构,然后呢,在使用的过程当中,我们还可以呢,去使用这样的两个关键字来体现这个叫跳转的意思。
02:23
好,那么接下来的话呢,我们就开始分别呢做一个讲解,首先的话呢,我们来看一下,这个叫分支结构对吧?诶分支结构,分支结构呢,这里边儿我们提到有两类,一类呢叫做if结构,一类呢叫做Switch。哎,不是Switch了啊,叫做case是吧?哎,Case问Z这样的结构好,那么我们下边呢,就开始来进行这个讲解,首先的话呢,我们来看一下这个分支结构之这个if啊if这个if的话呢,它的整体结构呢,是长这样子的,大家看一下后边呢,有个表达式啊,当然也可以简单点的话,就是一个变量了,对吧?哎,If一个变量或者一个表达式,然后Z啊这就操作一,如果呢,我们这个表达式呢,它的是它是一个真的。
03:03
啊,就是相当于它相当于是一个呃,判断完的结果呢,是真或假对吧,如果它是真的话呢,我们就执行这个操作,如果他要不是真的话呢,我们就往下边呢,接着去做判断。接着去做判断,然后呢,诶你看看,只要是在某一个表达式位置呢,它变成是真的了,我们就Z执行它后边的这个哎执行语句,那一旦呢,执行好这个执行语句之后呢,它就整个呢结束了我们当前这个if的结构了。诶大家能理解吧,就比如说我们这个呢,If刚进去的时候呢,这个判断它是假,那我们就判断这个else if,那这个呢,如果判断是真了,我们就执行后边的个结果,执行完以后的话呢,不会再去判断下边的else了,直接呢就跳出我们这个if这个结构了,啊就是这样子的,那大家你看到我这里边写的好像说呃,算是简单吧,哎,其实这里边呢,蕴含了好几种结构啊,蕴含了好几种结构,就是我们这呢加中号了,就是可以没有这个,也可以没有这个的,是这意思吧,好,那下边呢,咱们就给大家呢,举一下简单的一个例子啊,咱们来看一下。
04:02
这块呢,我们接着往下来说,前面的话呢,咱们是这二点几的啊,下边我们是三点几。哎,首先的话呢,我们,诶这个是咱们讲这个叫流程控制,OK,然后首先呢,我们讲这个3.1,这呢叫分支结构支啊我们说呢,叫这个if结构对吧。好,那这里边儿我们就来写这个具体的例子了啊,这个我就写个叫。举例是吧。举例好,那这个举例的话呢,我们说是在这个存储过程或者是存储函数当中呢,我们去体现这呢,我就拿这个存储过程呢来说了,首先呢,上来我们先是来这个呃,De特啊OK,然后最后呢,我们先把它这个封起来。行,然后在这呢,我们去create。啊。嗯,这里边儿呢,我就直接写呢,叫test if啊简单一点啊,下边里边就begin,然后呢,End是不是这个意思啊。好,那么在这呢,我们去做这个具体的测试啊,我们首先呢,可以拿去声明变量。
05:00
这呢,我们生命的变量呢,是不是就叫局部变量了?看前面我们提到过。好,那我们就用这个declare是吧。嗯,声明局部变量,我声明一个什么呀,比如我就叫一个。嗯,这个我们先用这个if来判断,我我这样写吧,这个叫呃,比如说叫呃学生的姓名能理解是吧,然后呢,是一个摩擦类型的,嗯,15个长度,嗯这呢default值我就不给大家去附默认值了啊先这样封起来。好了,那么在这种情况下呢,我们写一下这个if,说如果叫student,它的name。If no相当于你这个是空的对吧?啊if,然后后边呢,我们是不是就可以写这个叫then了啊,Then这块我们做一个select这块我写个字串得了啊说你这个,哎,它呢叫is no能理解是吧?好,那么这个呢,我们直接呢就结束了,哎,我叫end。哎,叫N,那对应的呢,就是我们这里边呢,你看我没有这个中号,也没有这个中号是不是,哎,N if是吧?哎,那我们这块呢,直接if完了以后呢,就是N的if了啊这个少一个if啊,别丢了啊好,那么这样的话呢,咱们这个呃,最简单的一个,呃if结构呢,我就写到这儿。
06:15
我是不是写完了是吧,好写完以后的话呢,我们就可以呢,把这个结构呢,从这到这儿,咱们给它选中执行一下。可以啦,然后呢,我们下面呢,进行一个调用。调用呢,咱们就直接呢叫call。啊test if,诶这么着一下,哎,这这相当于是个调用对吧?好,那这时候呢,我们选中执行,大家也会发现呢,我们这个语句呢,是不是就给输出了,诶因为咱们这个字符串的话呢,确实它是个闹的,哎,所以呢就给我们输出了。那这就这样个情况,这呢是最简单的一个依附结构了,最简单的好,那这里呢,我们把它呢,比如说注释一下,咱们再写一个啊,这是最简单的一个,咱们算是叫情况一吧。写到这儿。情况一是吧,好,接着我们再看一下这个情况二。
07:03
情况二的话呢,我们还是去声明变量declare,我声明一个,比如叫email。啊,这个变量,然后呢,是一个what类型,这呢我写成25,嗯,就这样行,然后呢,我们写if,说如果呢,这个email它呢叫is not啊然后我们赠一下啊这个我们还是写Z的话呢,咱们。给大家换行吧,哎,证一下select啊,我们说的email。Is no没问题是吧,然后我们这块呢,体现一下这个二选一的场景,那我这块呢,就来一个else了,Else的话呢,我们怎么着呀,我就select。叫email是不是叫is not no,哎,就这样来处理了,然后最后呢,我们是摁一下这个if结构。OK吧,那这就可以了,行,那这呢,其实体现的我们叫什么呀,叫二选一的这种场景啊,那这时候因为我们这个存储过程已经存在了,我是不是可以拿去照一下啊。
08:02
Test if OK,然后我们这块呢,把它选中做个执行。哦,这个哎错了,这个不能加小块了是吧,哎晕了啊好,那这块我们选中执行啊,这样的话呢,我们就把它,哎,Does no,诶写对了吗。衣服是吧?好选中那执行。哎,这就删除了,删除以后呢,我们这时候呢,再去把当前的这个,哎,存储这个过程呢,我们创建一下走起。可以了,好,那这时候完了以后呢,我们再去调用一下啊,咱们看一下啊,此时呢,说这个email is no。那email no是不是我们这块呢,确实没有给它附过值,它默认值,那不就是no吗?所以选择了我们这个执行,那如果这块呢,大家你写上一个叫做default,比如我们来一个默认值。那此时的话呢,他就会选择这一项执行来,我们可以测试一下来,咱们再把它呢给删掉。然后呢,咱们把上面那个再去重新的执行一把走起。
09:00
可以了是吧,然后呢,我们再去做一个这个call的一个调用,哎,这时候来看is not no没问题是吧?好了这块呢,就是我们说的这个第二种情况啊,叫二选一,哎,我把这个呢也注释一下。好,然后接着的话呢,我们看一下这个情况三。这个情况三的话呢,相当于呢,叫做多选一了啊,叫多选一,比如说我们此时呢,咱们来一个这个declare,我定一个age吧,叫年龄是一个int类型的,比如说default。这个默认值呢,咱们整一个20岁吧。这样子好,那这块呢,我们写一步说,如果这个A呢,是大于,比如说40吧。那这个情况,哎,这个40,然后这种情况下呢,我们Z叫select,嗯,咱写一个啥呀,说叫这个中老年。能理解是吧,然后再来一个else if,诶这块大家一定要小心一点,什么意思啊,这个else跟if这两个单词呢,是合在一起的。
10:00
是合在一起的啊,有的同学呢,可能学习过Java呢,哎,Java里边呢,Else if呢是分开的啊,这个呢,你要是分开以后呢,它就报错了。我们这age呢,大于,嗯,大于多少啊。大于我们比如说18岁吧,咱们这时候呢,再来震一下那select。这个18岁到40岁呢,咱们说的叫。嗯,青壮年吧。可以是吧,好,可以,然后再来一个l if else if age呢,咱们大于比如说八岁吧。嗯,这个我们再去证一下啊select,嗯,这呢相当于是。嗯,不能叫青少年了,就是。就叫少年吧。哎,青少年也行。OK。然后再接下来的话呢,就比这个八岁小的了,我就直接用个else else,我们就直接select。咱们叫这个婴幼儿时期吧。
11:00
零右耳,哎,这么着行,那这个呢是我们的else,然后最后呢,是不是叫摁一下衣啊,哎,别忘了最后这个结构行,那这样的话呢,我们就把这个呢就写完了,那这个是20岁的,那其实判断第一个没进去,是判断这个就进去了,然后呢,下边呢就不再判断了,那注意是这样的场景,那所以说我们这个呢,要输入的话呢,应该是青壮年是这意思吧,好,那我们诶刚才有没有删除啊。啊,这个执行了,那没有删来,我们先把这个存储过程呢给删一下。然后呢,我们再选中当前我们这个存储过程,记得一定把上边的diter呢给它选中啊,走起。诶可以了,然后呢,我们此时呢,去做一个call执行,哎,青壮年是吧,刚才我们说到了就应该是青壮年好,这个呢,就是咱们通过刚才这个举例啊,就给大家说清楚了这个,呃,咱们if else if是吧,Else,然后最后呢是N整体这里边呢涉及到了这三种情况。啊,三种情况,二选一的啊,多选一的,这个呢,就是你要是呢你就进去,不是呢就走后边儿了,这个谈不上说二选一了,这个是最简单的一种结构。
12:03
OK,我们CTRL一下,这呢是咱们做的这个举例的一个例子啊,咱们接着再看几个,针对于咱们涉及到的一些表当中的一个实际情况,哎,我们再举一些例子。好,大家看一下这里边儿呢,给的这几个题目,看看你会不会做啊CTRL,哎,这个我们直接把它这样啊,CTRLC一下。啊,过来,上面我们就要举例一。哎,这个我们看一下这个举例二这个题目呢,稍面稍微的这个长一些。好,来我们看一下。说呢声明一个存储过程啊,只要一看到存储过程呢,咱们先停下来,先把这个整体的结构是不是给它搭建出来啊。这样。然后呢,去create。Procedure。然后呢,这个名字呢,给我们起好了,那我们就直接CTRLC哎粘过来啊,一个小括号对吧,那下边的话呢,就开始写个begin,写这个N,诶先把整个框架呢,我们把它搭建出来,下边呢,我们看这个里边是怎么做的。
13:11
说呢,定义一个运行那个参数叫EPID,行,那这说到了说到了我们就去定一个EP。ID下面呢,是不是写个类型啊,Int类型的。输入员工的工号没问题,说呢判断该员工的工资这个呃,员工的这个薪资如果呢,是低于8000的,并且入职时间呢,超过五年了,我们就给大家涨500块钱,否则呢就不变,哎否则不变呢,那其实就不用管了,其实呢,我们相当于使用的就咱们对应的是不是叫情况一啊,OK,那这里边的话涉及到的点呢,咱们要根据员工的工资,还有他的入职的时间,哎,是不是进行判断呀,所以首先呢,我们涉及到了这个关于变量的一个声明。啊,声明局部变量。我们呢,从这个员工表当中去查询员工的这个,呃叫ID是这个人的这个工资和他的这个入职的,呃,就是他这个入职的时间是吧,那我们这里边是不是需要声明两个变量啊,OK,那首先呢,我们去declare一下,先获取他的工资,那我们就叫做啊,比如叫emp的SCL吧。
14:11
哎,生命它然后呢,是一个W类型的。嗯,Double类型的,行,我就这样子来写吧。然后再接下来,我们再去声明一个declare。嗯,Declare,我们来放他的这个,呃,入职的这个时间啊,或者我们就直接写,呃入职的时间,对,入职时间就直接这样写吧,还是data。是吧,或者你写一个这个EP的一个her date也行,这个入职时间的话呢,我们就是一个date类型的,没问题,好,那下边的话呢,我们是不是叫给这两个这个算式变量得做赋值了,诶赋值的话呢,咱们前面讲过一种呢,就直接你去通过S方式去赋值。啊一种呢,是赛的方式赋值,比如说给我们这个EP这个SCR,我们一个值啊付一个多少多少的这个1000块钱是吧,那显然我们这道问题呢,它不是一个简单赋值的,而是呢,从一个查询结构当中取到的这个值给了他是这意思吧。
15:03
那我们首先呢,要查询一下,就是这个员工的他的salary,所以我们去select一个salary,那into到我们的EP的SCL当中。From一下employees,咱们呢,现在都在这个,呃,16这里边儿,咱们已经有这两个表了,是没有问题的,好,From employees,然后呢,Where employ。ID呢,等于EPID。那这样的话呢,我们就给这个SL呢,这个salary呢,相当于就附上值了。是没有问题的是吧?好,那么这个附上值的,然后呢,我们还得去给另外一个变量去赋值啊select,我们叫hair data啊,然后把它呢,嗯,这个是her data了啊印度到我们这叫EP啊her data啊这个当中啊from啊employees,然后呢,诶wear一下是吧。嗯,From employees where,啊,Employee ID啊,等于啊E三角形ID好,这样的话呢,我们就计算出来它的这个叫相当于higher date了。
16:05
没有问题是吧?呃,那么在接下来去看的话呢,我们现在要获取到的啊,这个大家你看啊,我们要获取到的或者要判断的呢,一方面是他这个工资怎么着啊,另外呢,是要入职的时间,那我们现在呢,光拿到这个职其实还不太行,是这意思吧。不太行,那可以怎么办呢?要么呢,就大家你再去,哎考虑呢,比如我们定一个变量也行,你定个变量,然后呢,把这个呃,使用一个函数计算一下当前时间跟它这个差值啊,这是一种方式,嗯,或者的话呢,我们直接在这个位置呢,给它这个判断好呢,给它再印into进去,其实也行。能理解这意思吧?啊,能理解这意思啊,你看比如我们这里边吧,这里边的话呢,相当于我就直接呢,就是我刚才说的这个场景啊,就是直接呢,在这个呢,查询完以后呢,直接就塞到我们这个具体这个变量里边了,哎,或者的话呢,就是像刚才说的,你先把这个her取出来之后呢,再定义一个变量,然后呢,把那个运算的结果呢,来放到你再定义的那个变量里边啊两种方式都可以啊,你要说简单一点的话呢,我们直接呢,在查的过程当中,咱就把这个事儿给它做了得了。
17:08
哎,咱们用的是不是叫date啊,Differ是不是这样的一个函数啊。好,嗯,这个函数的话呢,判断它俩的这个时间的差值,嗯,我们先写一个叫当前的,是不是叫date。哎,然后逗号一下,还有这个叫hi it。这块你要注意咱们这两个日期之间的差值呢,它是前面这个直接减后边这个了,所以呢,我们要把当前的咱们现在这个时间呢,写到前面,把这个员工呢。诶把这个员工呢,他入职的时间呢写到这儿。然后这样的话呢,我们计算出来的是什么呀?是天数对吧,咱们再除以一个365,那是不是就他过来的对应的这个年数啊,哎,这个emp,那这个名呢,你要觉得不好呢,我们把它改成叫,哎,它相当于被雇佣时候的这个叫here year吧。哎,换一个名字,哎,CTRLC一下,把这个我们做一个更新没问题是吧。好,那么这样的话呢,我们就把这两个变量呢,相当于做了赋值了,下面呢,咱们就可以进行这个判断。
18:05
诶判断啊,说判断什么呀,说如果这个员工的工资呢,低于8000,哎,员工的工资低于8000,就1亿付这个emp的S呢,它是。小于8000的。And,小A8000并且入职时间超过五年了,是不是就意味着我们得到的这个叫higher year?这个值呢,是不是得大于五啊,哎超过五年了,你也可以说呢,大于等于五也行,对吧,然后呢,赠怎么着呢?嗯,给他就涨薪500块钱,哎涨薪500块钱呢,这是实打实的涨的,所以你得去更新我们这个表update employees,然后set一下这个salary。等于啊,你原来的这个salary呢,再加上这个500块钱。没问题是吧,然后呢,Where啊,你这块查的是谁呢,你就得给这个员工去找,你别给所有的员工都找了。这么着一下。
19:00
OK吧,如果说你要不满足这个条件呢,那就不变,那其实我们就不用管了,最后呢,我们直接呢,是不是就摁了一下我们这个if呢,结构就妥了。哎,就妥了啊,既然我们摁的这衣服呢,这块这个还有这个分号啊,给它结束,哎,那么咱们这个题目呢,其实就写完了,那此时呢,我们选中,哎,走一下。哎,我这个呢,函数呢就行,哎存储过程呢,咱们就创建成功了,嗯,在调用之前啊,咱们先,嗯,咱们要调用的话呢,你得能够验证才可以。嗯,验证咱们比如说你找一个这个工资呢,确实低于8000的,并且呢,他入职时间还大于五年了,你看它是多少钱,然后执行完这个存储过程以后,你看它是不是涨薪了,是这意思吧,来这样看一下你这个函数呢,它调用的是不是正确。嗯,那来吧,咱们做一个查询啊,怎么查呀,我就这么着吧。CTRLC一下,这个呢,就是看他来公司多少年了。啊,这多少年了,然后呢,咱们再加上它本身的一个,嗯,叫employee。ID吧,然后再加上它的一个salary,看from一下这个employees。
20:03
嗯,咱们再补一个条件吧。Where一下这个看salary呢,它得是大于这个多少八呃8000的是吧。诶,行,那么大于8000的。嗯。嗯,再补一个倒也行。CTRLC一下再按按它呢,是不是得大于等于五吧。好,那我们这时候呢,选中咱们走一下。出来了。嗯,在这里边的话呢,我们是不是就看到了咱们当前这个员工这个表当中,这呢是他们来公司的这个年头啊,这个都大于这个五年了啊嗯,工资的话呢,大于8000呢,我们这里边儿也都列出来了。啊也都列出来了,然后呢,比如说我们就拿这个103来说吧,这个103的话呢,他的工资是9000。嗯,他的工资是九,哎,咱们是写错了,是不是得小于把钱是吧。咱们是给这些人呢去涨薪的,来,我们走起。
21:00
好,这个出来里边呢,我们就看第一个吧,这个员工呢,来公司超过五年了,然后呢,人家工资呢,比8000还低,我们要给他呢,是不是涨500块钱,就104,咱们现在看到了104呢,是6000块钱,好那这块我们去调用。哎,这个存储过程。靠一下。咱们把这个呢,CTRLC哎拿过来这呢,我就不去定义这个变量了,咱就直接把104呢就写到这了,好,那我们选中了做一个执行。嗯,这里边儿提到说incor这个year啊,Higher year啊这块呢,我们写的是一个date类型的。嗯,这个呢,我们啊大家注意看啊,我这里边的话呢,咱们那会儿呢,是想把它定义成是一个说,诶来公司那个入职的时间,我写成date了,现在呢是运算完的结果是一个double类型了,所以我这块定义成date呢就不合适了,是这意思吧,OK,我改成是这个double,那这样的话呢,咱们把这个存储过程呢,再给他干掉一下。哎,你知道我刚才在说什么啊?
22:01
好,我们把这个存储过程呢,咱们再给它删一下。删掉。来,走起。好,然后呢,我们把这个存储过程呢,咱们再这个拷起来。没问题了,然后呢,我们这时候呢,去查询这个,这个已经查过了啊,咱们就针对104,他一开始是6000块钱,然后我们这时候呢,运行一下啊,运行完以后呢,我们再去查一下这个104这个人多少钱。哎,周琦。哎,你看这时候是不是变成六千五了,那说明呢,我们这个函数,哎,这个存储过程呢,它的定义呢,是没有问题的啊,是没问题的,好这个位置上你记着啊,就是大家定义好这些变量之后呢,你也可以在这块呢做一个记录,它呢是用来去记录这个员工的这个工资的这个。这个公司的是吧。哎,这是它,然后这个变量的话呢,我们一开始为什么写成date呢,是想用它呢,来表示他员工入职时间,后来我们不是说改成这个直接呢,就判断他入职多久了是吧,那既然是多久了,就变成W类型了来记录。员工入职公司的。
23:02
那咱们就要叫年头吧,啊,这个咱们的一个口语化的一个词,年头就多久了,不是呢,是那一天那一天的是个日记类型,多久了,这个呢,它就是个double类型了。好,这个呢,是咱们这个举例二啊,相当于咱们用的是对应咱们if这里边儿的第一种情况。没有问题。好,下边呢,我们我这儿还有几个题目,分别对应的是其他的这种情况啊,这个题目呢,我设计的还是挺到位的啊,还确实花了一些这个时间。CRV。哎,正好现在这个外边呢也是疫情啊,然后在家呢,这就诶给大家呢,把这个课呢,好好的咱们录好啊。行,那我们来看一下这个举例三,还是这个存储过程啊,画了个名,然后还有个参数啊,这个主要的区别就是这里边儿这个条件呢变了,所以说呢,它变化的有限,那我们就拖个栏,我把刚才咱们写的这个,哎,这个例子二当中的这个整体结构啊,我CTRLC一下我拿过来啊,CTRLV粘过来,这个呢,首先改个名,这是不是二了。
24:06
参数的话呢,还是EPID,输入员工ID说判断该员工的薪资如果低于9000元,并且入职时间超过五年了,涨薪500,否则呢,涨薪100啊,那这块呢,还得是定义这俩变量,我们主要变化呢,应该就是在这儿了,说如果他的工资低于9000啊,这个改了,改成是9000了。低于9000,并且入职时间超过五年的,还是超过五年的涨薪500,这是不是涨薪500了?然后否则的话呢,就涨薪100块钱,那我们这里边呢,是一个二选一的,诶前面呢,是不是加一个else,然后呢,下一步啊,接着呢,是不是做一个update的操作呀,哎,我们CTRLC把这个粘过来,这个就别写正了。然后这个呢,是加100块钱。然后N的意思。OK吧,好,那这个题目呢,咱们就写完了,来我们整个呢,选中做一个执行。好,成功了,成功以后的话呢,我们还是先做一个查询,这里边儿提到说是9000块钱是个坎啊,这个五年也是个坎儿,咱们还是拿刚才这块呢,嗯,去看一看目前的这个数据的一个情况,哎,我们先选中。
25:11
嗯,大于五年的。啊,并且呢,这个呃,工资是小于9000的啊。我们还以他要来说的话呢,这个是大于五年的工资小于9000的,诶那么我们这个104的话呢,应该是不是还得去涨500块钱呀。啊,他是,呃,他这个就是小于9000,然后呢,还大于五年了是吧?嗯,不满足这样的情况的话呢,给他们涨薪100块钱。不满足这样的情况的话呢,我们这个103是不是就不满足这个情况,你看这块呢,默认就是一个升序的啊,那那103的话呢,应该是涨薪这个这个100块钱,那我们这里边儿呢,就这样查了,我就select一下星吧。哎,From一下这个employees。哎,说where。这个employee。
26:00
ID啊,103104 OK,咱们看一下这哥俩他的这个工资。103的话呢,哎哟,103这哥们正好9000块钱,然后104的话呢,是6500,好了,那我们是不是给他涨100块钱,给这个呢,涨500块钱呀,好,这块我们来测试一下。调用。我们去靠一下咱们当前的这个存储过程。好,首先呢,我写一下103吧。来,我们选中。来选中啊执行。那执行完以后呢,我们再查一下这103。诶,你看九千一是不是涨了100块钱,然后呢,我们再去调一下这个104。来把这个呢,我们选中了做个执行。然后我们再去查看一下,刚才是六千五了,这块是不是就变成7000块钱了,没有问题,那说明我们这个呢,存储过程写的是OK的。啊,这个柔的保存一下,接着的话呢,我们再来看一下啊,这是二选一了,是不是还涉及到有一个叫多选一的情况。
27:00
你看我们这个题面呢,都变得大一些了,CTRLC直接粘过来。啊,这么着。哎,这样子。哎,这么着。好,这个的话呢,稍微的复杂一下,我们先把这个题面呢先看一看。说定义呢,还是这个硬参数,输入员工号下边,如果该员工的薪资低于9000块钱,我们就更新他的工资为9000,更新为9000,如果呢,你要薪资呢是大于等于9000,并且呢是低于1万的,我们但是奖金比例为no的。啊,更新奖金比例为他啊这呢,换了一个场景是奖金比例来说事儿了。嗯,那咱们就重写吧。诶是吧,好,然后这块呢,我们去create啊这个。这个有点长,咱们直接粘一下。
28:03
CTRLC拿过来,小括号in e下线ID in的类型好,下边begin。最后呢,End先把这个呢框架先写好,这里边的话呢,我们需要定义啥呢?一个是获取员工的工资,还有涉及他的一个奖金率的一个问题,好,那我们首先呢去声明变量。大家呢,养成一个习惯,就是我们在写这个存储过程,存储函数的时候呢,加上一些必要的注释,这样呢,它的可读性会更高一些。Declare。这个员工的这个salary是吧,嗯,那就是一个double类型的了啊,然后再去declare它的一个奖金率,我就叫bonus吧,叫奖金的意思,这也是个double类型的,好可以了。嗯,这呢,咱们说过了,8.0当中已经不建议咱们去加这个小框的方式去写那个M和D了,一个叫标度,一个叫精度是吧?好,下边呢,我们提到对这两个变量做一个赋值操作,首先呢,去附它的这个,呃,Salary这个跟上面一样,咱们粘一下。
29:01
CTRLC。哎,这样子,哎这个哎跟他看一眼是不是写的一样的,没问题,好接着的话呢,我们再给这个bonus去做了负值啊select我们叫。那咱们叫commission啊,这个commission PPT是吧。这个单纯的不太好写。Commission。POK,这个呢,你要把不准的话呢,你自己来这看一下d employees。查看一下我们这个表。那这块呢,我们有这个字段,哎,Commission p好OK,没问题,行,这个知道了。哎,把这个就删了吧,Select的commission PPT呢叫into,我们这叫bonus,放到我们这个变量里边,然后呢,诶后边呢是一样的了。哎,CTRLC,诶是不是就可以了。啊,这块你要愿意写的话呢,也标注一下,说他呢是来记录这个员工的这个工资的。啊,它是用来记录。
30:04
记录这个我们叫按员工的这个奖金率是吧,好的,那么复制完以后呢,下边我们就开始做这个具体的判断了。哎,这个判断的结构呢,就稍微复杂一点啊if,嗯,一方面呢,提到说如果工看从哪开始看,从这工资呢,是低于9000的,那就是EPCL它呢是小于9000。对吧。嗯,就更新啊,那就直接就这一个条件,我们就直接就赠了update这个把工新,把工资呢,改成9000块钱,Update employees set salary。等于9000。然后where啊,这个一定要记着啊,是改你这一个员工的。也都给改了,好,这是一个情况,然后else if,嗯说呢,如果公司呢,大于等于9000,并且小于1万的这个,我们只要这个不满足,是不是默认的这个EPSL,它就已经是大于等于9000了,所以我们这呢,直接是不是就写小于这个1万块钱就行啊,小于1万块钱就行。
31:05
低1万嘛,但是奖金比例为no的。啊,如果是这么着啊。诶且其实这算是个且了啊,企业奖金比例为no,那就是我们这加一个and呗。Bonus is no。对吧,然后这种情况下,我们做一个Z。为no的,我们就更新奖金比例为0.01,好在呢叫update。啊,Employees,然后set一下我们这个。哎,Commission。这个小心点,这个单词呢,有点长,PT怎么着呢,等于0.01,哎,OK,然后还有这个过滤条件,CTRLC加上。OK吧,然后其他的话呢,涨薪100啊,其他的话涨薪100,那我们这块呢,是不是就该else了呀。嗯,Else的话呢,相当于就是update呗,Employees。然后呢,Set一下这个salary等于原有的salary,再加上100块钱,嗯,Wear一下。
32:08
哎,还是这个,我就直接粘了。没问题吧,好,务必呢,记得我们后边呢,是不是再去摁一下我们的衣结构啊。啊,这就可以了。那这个可以了,行,那这呢,就我们按照这个题目要求呢,把这个题目呢,就写完了来,我们选中呢执行一下。啊,执行成功行,那执行成功以后呢,我们还得看看这个事儿啊,因为这里边涉及到这个情况呢,比较多,我们想演示一下这个函数的定义的,呃,存储过程是不是对的,工资要低于9000的呢,我们给它改成9000,那咱们看一眼吧。我就select from一下这个employees得了。枸杞。工资要低于9000呢,改成9000,嗯,咱们拿,诶拿这个,这个是104好,就拿104的,这是一个情况。104,咱们把它拿出来,他的工资低于9000啊,我们要拿它去说的话呢,把工资就改成9000了,这意思吧,好,另外一个的话呢,说呃,工资要大于9000,但是呢,Boner这个commit呢,是闹的啊。
33:06
工资大于9000,那我们看一下这个103吧。103的话呢,他的工资大于9000,这个呢是no,诶那我们就拿它在说事。相当于我们执行完以后呢,它就改成0.1了,是这意思吧。哎,这个稍微的这样。行,然后呢,下边的话就涉及到了else,嗯,那就相当于你的工资呢,是大于1万的,大于1万的情况下呢。嗯,然后这时候呢,他就是加了100块钱,那比如我们就拿这个幺零打1万啊102。102,好,他们是哥仨,是不是直接就行是吧,那么你就直接呢,这块我粘一下这哥仨吧。那他们仨说事,哎,就可以了。好,那我们就来直接我们加一个吧,Where。Employee ID啊in啊,102103104啊,一会儿呢,咱们就直接光看这哥仨就行。哎,目前呢,他们仨的一个场景,好,那下边呢,我们去做这个调用。
34:05
调用呢,我们直接就靠一下当前的存储过程走起。现在是来一个102。这102的话呢,我们执行完它应该是加了100块钱是吧。哎,我们选中呢,执行一下。哎,这么着啊好,那这块呢,就执行成功了,然后呢,我们选中呢,看看是不是变了,哎是不是加了100块钱呀,哎没有问题,好我们再来。然后针对这个103,哎,我们就单独的这样去运行吧,哎,走起啊,103的话呢,应该是是不是改成是这个要0.1了呀,哎,再查询一下啊,是不是变成0.1了,好在104。哎,走起。104的话呢,是把这个工资呢改成9000了,哎,我们选中了执行。哎,9000没有问题,好,那这样的话呢,咱们就把这个if结构呢,就给大家在实际咱们这个,呃,结合具体这个表当中的这个场景啊,就给大家举清楚了,哎,这呢就是我们说的if else if else的这个结构,行,那大家下来的话呢,也把我们这个结构呢去练一练,那么关于我们这个分支结构的第一个if结构啊,咱们就说到这儿。
我来说两句