00:00
好,同学们,咱们关于变量流程控制和游标啊,咱们就说到这儿了啊,然后呢,接着咱们来看一看这一章的这个课后练习题。啊,这一章课后练习题啊,第16章,哎,这个呢,我刚才呢,是设计了一下我们这个课后的练习题啊,这块呢,就给大家呢,呃,出了出题啊,这个出完这个题的话呢,发现这个时间呢,已经挺晚了啊。哎,那我们这块呢,还是把这个题呢,我们给大家讲完啊,OK好,这块这个题的话呢,我分成了这样的三部分来给大家讲,第一部分呢,是关于变量的。第二部分呢叫流程控制啊,第三部分呢叫游标啊,这块我们列了一些这个练习题啊,就大家呢多练一练啊,多熟悉熟悉好,那首先呢,关于这个变量啊这块呢,我们一共有四个题,哎,这四个题的话呢,如果大家你做了上一张题的话呢,哎,这四个题呢,你看到以后呢,会稍微有点脸熟啊同学说,哎,我怎么看着不脸熟呢啊,可能做了以后呢,这个印象不深刻了啊,这四道题呢,其实就是我们上一章当中啊讲的这个存储函数里边这四道题,那我为什么又把这四道题拿过来呢?哎,我们相当于对这个存储函数的这四道题呢,做一个这个调整啊,你看什么个意思啊,咱们先找到一下咱们第15章的这个课后练习题。
01:10
好打开了是吧,这个后连接的话呢,我们是分成两部分啊,一个呢是存储过程,一个呢是存储函数,咱们呢直接定位到咱这个存储函数这块。嗯,准备工作啊,OK,好,这是存储函数的这个练习题对吧,哎,从这一直到咱们的这个最后。哎,到这块啊,CTRLC一下啊,这个我就不要了,然后这呢,我们就新建一个。来新建一个,好,这会我先写一下,这呢是咱们这个,哎,算式这个练习一,咱们主要呢,是来测试一下这个变量的一个,呃,使用的。OK啊,然后这块呢,我CTRLV呢先都粘过来啊,先都粘过来,咱们先把这个文件呢给它建好啊,这块咱们写了这1000多行这个代码了啊诶好,这块我们回到最初。啊这块,然后我们这样呢,CTRLC一下粘到我们这个位置啊,也是放到这个最开头啊,CTRLV这个变量流程控制与U标的这个课后练习。
02:01
好,这块呢,我们首先呢,CTRLCCTRLS,先CTRLV啊保存到我们当前这个文件目录下,OK,没有问题是吧?好,那这块呢,我们来看一下,呃,为什么我们把要把这个第15章的这个存储函数的题目呢拿过来呢?呃,因为呢,我们这里边啊,咱们之前的练的这四道题里边呢,你看咱们在这个begin和N的这里边儿呢,我就直接return啊,然后呢,包起来,这样写的话呢,实际上呢是挺丑的。你看这样的写法,包括这样的写法其实挺丑的,那我们呢,在讲完变量以后啊,咱们就可以呢,用变量的方式呢,去改造一下我们这里边这个题目了啊,这就当做是我们这个关于这个哎变量的一个哎练习问题,哎变量的话呢,大家应该清楚,咱们当初讲的这个分类是吧?哎这块呢,我们再稍微的复习一下啊,这个事呢,大家你得清楚。那你得清楚这个变量的话呢,哎,我这样写,咱们分成了两类啊,一类呢,是不是叫系统变量。哎,另外一类呢,是我们叫这个,哎,咱叫这个用户变量啊。
03:02
哎,用户呢,或者你再准确点,就是用户自定义变量呗。哎,这样两类,然后这个系统变量的话呢,它是不是又分成了两类,第一类呢,就是我们说的这叫global。啊,这个我们叫这个全局,哎,这个系统变量是吧,哎,这是一类了啊,我叫globe啊,这个写成中文吧。哎,全局。这个系统变量。哎,还有呢,我们称为叫session session呢,我们叫绘画,哎,系统变量。那我们也提到了,说有些变量呢,它既是全局的又是绘画的,有些呢只是全局的,有些呢只是绘画的是吧,我们提到过了啊,那么关于这个用户自定义的这个变量的话呢,我们分成了两类。啊,也是两类,一类呢,就是这个叫绘画。这个用户变量,那么会话用变量呢,就是在整个我们这个,呃,这个会话当中,哎,或者说就是整个我们这个连接当中,咱们是有效的是吧?哎,叫会画用户变量,还有一量呢,是不是就是叫局部变量啊,这个局部变量的话呢,咱们这个也用了不少了,就是定义在咱们这个begin和end当中的,呃,Begin和end当中的是吧?哎,这个我们说的叫。
04:05
这个局部这个变量啊,OK好,那这块呢,我们就回过来看一下咱们这个题目这块呢,就测试变量的使用,那主要呢,就是针对咱们用户自定义的这个变量,嗯,好的,呃,那么首先的话呢,我们也是先创建一个对应的这个练习的一个。这个叫什么呀?数据库是吧,这我们写成这个16吧,哎,T的16这个位置呢,咱们就不写成这个存储过程存储函数了,那这个呢,叫variable变量吧,然后咱们再来一个叫哎得了,好,这样的话呢,我们就创建,诶这个不是这个use了啊我们首先呢,先得去做一个创建。哎,Create data是吧,然后往这一放好,就不写这个character set了,然后这块也不写这个if not exist了啊好,首先呢,我们选中了做一个执行。然后呢,我们去use一下啊,选中好,那此时呢,是不是就切换为我们现在呢,刚创建的这样一个数据库了,好在这里边的话呢,我们这个相当于又是把阿德硅谷D利下的这样的两个表呢,咱们给它呢,是不是复制过来呀,啊首先呢,走这个。
05:08
107条记录过来了,然后再走这个。哎,27条记录呢过来了,好这个呢就OK了啊,哎,这个呢,咱们暂时呢,这个没提到说是需要用它的是吧,哎,我们这个呢就嗯删了吧。好,然后下边的话呢,我们看一看啊,这个创建函数的这个问题,嗯,首先第一个说创建函数呢,叫get count,说返回公司的员工的个数,这样呢,我们就查询了一下公司中员工的这个个数了,然后直接return了啊,这个咱们觉得稍微的丑一点是吧,那我们就可以呢,是不是在这个。哎,Begin当中呢,咱们去这个定义啊,或者我们叫声明。哎,声明一个是不是叫局部变量啊。哎,声明一个这个局部变量好了,那这块呢,咱们就来写啊,这个declare是吧?呃,声明一个局部变量啊,那我们叫个什么名啊,咱们是员工的啊,那就ERP的这个count吧,啊,Int类型的这个默认值呢,就不用写了。
06:02
啊就不用写了啊,下边呢,是我们这个局部变量它的一个表赋值,哎这块呢,我们,呃,要是简单点赋值呢,你直接用个set去赋值,然后要是复杂的赋值,像我们从一个表中呢,取得数据的话,我们就用select了是吧,哎,Select什么呀,就是我们其实哎就是整个这个语句呗,CTRLX啊拿到这,然后在这个位置呢,是不是叫into一下我们emp,然后这个a count。对吧,哎,From我们这个employees啊这块一个方法结束,那这呢就附上值了,那附上值以后呢,你最终的结果不就是把我们这个emp这个account给我们返回一下就可以了嘛,啊这呢我用的是do乐谱,那这也是到乐谱,那这样就结束是不是就妥了?好,那这时我们选中当前整个这个结构呢,哎,执行一下。来执行一下,好,那块执行的时候呢,来注意啊,这个咱们之前讲第15章的时候呢,这个是上一章了啊,我现在讲的话呢,是隔了一天啊,那就意味着我把这个电脑呢,我都重启过电脑了啊,你一重启电脑的话呢,我们这个MYSQ这个服务呢,是不是就重启了,那一重启的话呢,咱们之前设置的这个电量呢,是不是就没有了。
07:02
哎,我刚才我我还把那个变量给删了是吧,那就自己先写一下吧,然后这块呢,叫set一下这个,诶global。啊,这个变量的名是不是叫它呀,哎,我们就把它呢,哎,CTRLC一下,然后拿过来,哎,把它这个值呢,复成个一啊就可以了,好选中呢执行一下。执行完以后的话呢,我们现在呢,再去执行咱们当前这个存储函数是吧,好这块我们走起。行,那这样我们就创建成功了,嗯,你在这个F5刷新一下,在我们这个数据库下,我们这是一个函数,哎是不是就已经有了,哎没有问题,好,下面就是一个调用,哎调用呢,我们是看一下这个员工表里边有多少条记录来我们这块呢执行。啊,107啊,没有问题,行这呢,我们就相当于是声明这个变量的方式啊,第一道题搞定了,好,接下来我们来看这个第二道题。这个创建函数呢,叫呃1NAME salary,根据员工的姓名呢,返回他的工资啊,这让我们传入的是员工的姓名啊,返回的是他这个salary啊,这是我们说的这个结构还是呢,整整个说呢,这样的写的话呢,是可以,但是稍微还是丑一些啊,我们在这个位置上是不是就可以声明变量啊。
08:10
产生变量,咱们在这个begin和N当中呢,可以通过declare的方式呢,去生命变量啊,那你说我这样写行不行,咱们这个给大家做演示哈,我这就直接这样写了。哎,直接这样写,然后呢,诶,我们就把它复制为零啊,整体格式上来讲呢,是不是像我们定义了一个叫用户变量啊。对吧,哎,叫用户自这个相当于会话的用户变量,就这个啊。哎,绘画的用变量,以前呢,咱们倒是没这样写过是吧?来咱们这块举个例子啊,看能不能这样去写。啊,这块呢,我们是相当一个声明了,然后下边呢,你是不是就涉及到关于这个变量的一个赋值问题是吧。互留的话呢,我们还是啊把这个语句。哎,CTRLX啊诶到这啊,CTRLV拿过来select这个salary,然后呢,是不是into到我们的,呃,这个SCL这里边啊,你看我既然这样写的话呢,肯定是用户自定义变量了啊哎,因为呃规划的用户这个变量了,然后它是一个艾特符啊开始的啊,那因素到这里边,然后这块呢,我们用一个分号呢结束,最后呢,我们return呢,哎,实际上呢,就是你想返回的这个变量呗。
09:14
这意思吧,好的,然后最后呢,我们这样一个收尾,好选中来走起。你看可以是吧,好,那这时候我们去做一个调用,呃,我们呢,输入的还是这个阿贝尔,然后返回他的一个,诶诶返哎,返回他的这样的一个这个这个工资是吧?哎,函数的调用的话,我们用的是select啊哎,说过好这时候我们走起。哎,是不是11000。没有问题吧,哎一万一好,那就是问一句,你说我们这时候呢,我去呃,Select一下我们这个SL啊,这个能出来吗?到期。你看也能出来,能理解吧。啊,能理解的意思是吧,哎,因为这个时候我们其实定义的还是一个什么呀,叫做哎,我就可以这样粘一下,让你能知道它是什么类型啊叫哎绘画用户变量。
10:01
哎,你看这呢,相当于是我定义了一个哎绘画用变量,所以说呢,哎,我们除了当前你这个哎函数之外的话呢,我们还可以去调用。哎,还可以交用啊,因为它对于咱们当前整个这个绘画呢,它是有效的,对吧?啊这个注意一下啊,好,那就说明呢,我们在这里边呢,也可以去定义咱们叫绘画用户变量,只不过呢,我们以前呢,都是定义成局部变量了啊这个大家稍微关注一下。好,这就过了,然后下边呢,创建函数,它根据部门的名称,然后呢返回该部门的平均工资啊,这个你看写起来更丑啊。更丑,那接受不了,那咱这是定义变量。呃,这个我注释写不写都行了啊,我就直接直接写吧,因为咱们这个这几个题都类似啊好,我们这块呢,直接就去D啊,咱们要。第clear是这样写,要返回的是该部门的一个平均工资,那我就写avg的一个SCL吧。嗯,这个大玻璃型的是吧。
11:01
W型这个呢,默认值我们就不用赋了,因为你下边不就是给它赋值的嘛,哎,那这块呢,我们就是把这个结构啊CTRLX拿出来放这儿,然后呢就是select它呢,是不是叫into到我们的avg。哎,里边,然后呢,From这个咱们往前拽一下啊,稍微好看一些。好,那么这个起拉语句呢,咱们相当于是把这个平均工资呢,是不是就放到这变量里了,然后最后呢,我们return一下你这个ABG的S是不是就妥了。啊,没有问题,好,那我们此时呢,选中啊走一把。哎,这就可以了啊,那创建完以后呢,我们要计算一下,哎,相当于是呃,叫这个部门名的,哎,叫这个部门名的,它的一个平均工资是多少啊行,那这块我们就直接拿去运行了啊,是9500。哎,九千五啊,OK,好,这个题呢,我们就过了,然后下面我们再看下一个说创建函数叫ADD float啊传入两个float,哎,返回二者之和。好,那这块呢,我们就returns这个float,然后begin啊直接return好,那这个位置呢,同样道理,我们可以呢,就是declare一下。
12:05
哎,我们叫呃,Some value吧,好。嗯,这是一个flow的类型,那你求和以后呢,还是一个flow的类型啊,默认值那就不用去付了。然后的话呢,我们直接呢让哎这就咱就set了啊,因为它比较简单,不是像上面呢,得去表中取数据,咱用select了,你要是呢,直接就谁等于谁的,你就直接呢就set就完了是吧?哎,然后呢,让我们这俩CTRLX啊粘过来,哎,这就相当于是做了一个赋值,那赋值完以后呢,你再把我们这个。哎,是不是叫哎sum这个value,哎,我们给他反馈一下就可以了,是吧,好,那这呢,就是我们说的这个第四道问题,来选中走起。哎,又成功了,你看我这老执行都都错不了是吧,有点恶心啊,就大家的话呢,也是多写一写啊,写熟以后的话呢,想出的都很困难啊。当然了,这个你要是写的比较长的时候呢,有时候可能就是有点疏忽,那一运行出错了以后呢,大家一旦出的错比较多的时候呢,你一看这个错误信息,你就大体知道是哪块出问题了啊,直接奔着过去就行啊行,那接下来的话呢,我们还是传入一个12.2,一个2.3,结果呢应该是14.5是吧。
13:13
来我们这块呢,选中啊走起。哎,14.5没有问题,好,那么这样的话呢,咱们就把这个,哎四个关于变量的问题呢,咱们就说清楚了啊,接着咱们说这个第二波啊,关于这个流程控制。哎,关于流程控制啊,这个流程控制这块还用我去复习一下吗。哎,大家应该是比较清楚,我们这块呢,都讲了哪些东西啊,简单说一下是这个分支结构啊,分支结构的话,我们说过这个if啊,If l if我就简写了啊,还讲了一下我们个kiss是吧,A kiss呢一种呢是这块呢有变量啊,你就写问啊问Z问是吧,这是一种,还有呢,直接呢我们kiss when。哎,是不是这是一种。那OK啊,这是我们说的这个分支结构,然后呢,我们说到这个叫循环结构,循环结构的话呢,我们讲课的时候呢,是按照这个顺序的,先说的是这个loop,然后说的是这个while是吧。
14:02
然后最后呢,我们说了一个叫repeat。啊,这样的情况,呃,然后呢,我们提到了在这个呃,循环结构当中啊,咱们可以去使用的这个结构,当然其实有一个也不往是在循环中去用了啊,那这个呢,相当于是我们提到了这咱们写个叫其他的。啊,提到了一个呢,叫做live是吧?啊,这个live呢,呃,如果大家你学习过Java的话呢,类似于Java里边这个break啊,还有一个叫什么呢?叫eter啊,这个呢,类似于像Java呢,这些语言里边这个continue啊,然后这个live的话呢,它除了在这个循环中去使用呢,它还可以呢,去结束一下我们当前的,比如说这个begin end,咱们也写过这个练习,在这个begin前面加个标签是吧?哎,它可以呢去推出,哎,就是推出你当前这个整个的叫函数体,或者叫存储节,呃,存储过程体啊,然后terrate呢,它是使用在我们这个循环当中的啊表示呢,就开始下一次循环。哎,这个结构啊。这个都得是,呃,我们这块该用标签都得用标签啊OK好,这个呢,是我们简单复习了一下,保存一下,然后下边呢,我们来看一看这个课后的这个题目。
15:04
课后的题目好,嗯,这块的话呢,我一共是放了有三道题啊,比较有代表性的啊,CTRL一下。啊,这个题呢,好多也都是我现编的哈。啊,自己编自己讲OK。哎,你说自己编的,会不会把自己给难住呀?啊,也有可能是吧,哎,自己编的题太难了啊,自己不会写是吧?啊有点意思啊好来我们看一下,说第一个呢,叫创建一个函数叫test if case哟,怎么写个if写个case啊哎,因为这道题呢,哎,我想呢,让大家呢用两种方式呢去实现啊。传入这个成绩啊,如果成绩大于90分呢,返回A,大于80分返回B,这个大于60分呢,返回C,否则呢,就返回D啊是这么个情况,哎,分别呢去实现好,那这块呢,我们就。哎,直接呢,就方式一了是吧。好了,嗯,方式一,首先在the limit。哎,这个我用这个符号,用这个符号都行啊。哎,然后这个我们再还原回去,嗯,这呢是说了叫创建函数了啊,那我们就直接呢,就function神了,嗯,这个存储过程,存储函数这个结构呢不太一样啊,语法呢,大家就多练一练,就没有必要死记硬背啊,你多写几个就熟了。
16:11
那我们把这个呢,CTRLC拿过来,这个咱们叫个一吧,在这里边说传入成绩,那就意味着我们需要去传这个参数了。嗯,先写成绩,咱们就叫做score吧,成绩呢,定义成什么类型啊,写成个你要是带小数的,那就写成,咱就写成个double double吧,OK啊。然后returns,嗯,返回的是什么呀?返回abcd,其实那就是个叉类型啊,一个字符就可以了,我这样写的话呢,其实就相当于省略了一个一了。能理解是吧。好的,那这块我们就returns它,然后呢,是不是就begin了呀,哎,Begin呢,最后呢,是不是end呀,然后呢,一个倒数啊OK好在这里边我们去分析。分析啊,嗯,这个呢,传入这个成绩啊,成绩呢已经过来了,说如果成绩呢,大于90分啊,这块就就是我们简单的一个if else的一个使用啊说if我们这个scar呢是大于90分的,哎,那是不是就算了算一下我们这个什么呀?哎,返回abcd啊OABCD呢,咱们可以去定义成一个变量是吧?啊所以这块呢,我们再去啊,相当于生命变量。
17:15
生命变量啊啊,我就还用这个局部变量吧,这个呢,咱们理解成是一个等级,等级呢,你可以叫这个level吧。嗯,Level,嗯,是一个叉类型的,嗯,默认值呢,就不给了啊,因为你这块呢,反正是一定会有一个值的啊,就不给了。那其实相当于就是个闹是吧。哎,Level哟,这个level的话呢,你看它这个样子,好像是一个关键字的情况是吧,那你就嗯叫一个嗯分数的一个level吧,Score。Level,这样可以吧?好CTRLC说如果呢,你这个要是大于90分呢,我们就ZZ干嘛呀,咱们就给这个值,哎,这个变量呢,是不是负个值,这个呢,就是A呗。哎,就这么着是吧,然后else if,那如果说你这个K呢,是大于80的。S杠大于哎80的,嗯,这个呢,应该大家不用去担心了啊,就是你这个不满足的话呢,就走到这其实就是八十九十之间的呗。
18:07
啊,然后再去证一下啊,Set一下我们这个高value呢,它是一个B等B等级的。然后呢,C等级的啊L。衣服是吧?哎,这个杠它是大于60分。哎,然后呢,再去增一下啊塞他。哎,C等级OK的是吧,然后最后呢,就是一个else了,Else的话呢,我们直接呢,你这样写到这也行哈,Set一下我们这个,哎,就是个D导呗。哎,然后最后呢,我们是摁一下衣服来表示结束啊。好的,那就结束啦,结束就结束了,我们这块呢。嗯,我这传了一个成绩。他这块呢,需要返回啥的,不返回地啊呃,返回。呃,否则返回地这个呢,是咱们的成绩。哎,我看一下啊。呃,声明这样一个level。嗯,然后呢,那我们这块呢,是不是得在这里边呢,去给他去啊啊讲这个函数啊晕了,想这个存储过程了啊,这个函数的话呢,是不是直接返回就行啊。
19:08
哎,这个返回啊,数据用就用这个符号了。啊,存储扩展的话呢,咱们现在得在里边,你去输出一下,要不这个出不去了啊,那你这个函数的话呢,我们直接就return呗。呃,把我们这个scar呢就返回。哎,妥了啊。好,完事,然后呢,我们此时呢,从这到这儿走起。啊,很遗憾啊,我这又没有出错啊。哎,来调用一下,大家写的话呢,可能刚开始写经常出错,哎,函数的话呢,我们得用这个select去进行调用。Select的话呢,就把这个CTRLC啊往这一扔。嗯,然后这么着是吧,然后这里边你就放成绩就完了啊,比如我们98分,98分的话呢,就是A档呗,哎,走起A就出来了,再来一个这个哎,不及格的,不及格的就是56分,哎选中哎走起是不是低档呀,OK啊好,这个我们就不演示其他了,这呢是咱们说这个方式一啊好的,然后呢,我们再接着这个来一个方式二。
20:05
这个方式一的话呢,我们是使用这个if这个结构来实现的,然后这个方式二的话呢,我们得使用这个case了,那么case的话呢,我们是kiss when呢。哎,是这种呢,还是kiss,然后这块这个when呢。这俩呢是有区别的,你要是把这个变量写到这儿的话呢,是问Z问Z,它这就是离散的几个值,这么着写的话呢,我们其实是可以来表示这种范围的是吧,所以这里边我们选择的应该是这个结构好的,那么我这块就投点懒,我直接把咱们刚才写的这个呢,我CTRLC一下。然后呢,我整整体呢粘过来好吧,我粘过来以后呢,从上往下去捋啊,这个位置呢,我改成叫这个test if k2好的啊这个呢,我还叫它,哎哎,这就别if了啊,那咱们现在是不是就得用这个。嗯,我我我我这么着一下啊。在这啊,我们kiss一下,我把这个问字写这儿吧。
21:00
Case问,呃,这个Z呢,咱们就给它一行吧。case问,然后呢,大于90分啊,Z是不是它呀。然后呢,这个再问。然后这块呢,就再增是吧,哎,就这么着。然后这个再问。哎,在正。哎这么着,然后最后的话呢,问政问政是不是也有个else啊,哎这么着,哎最后呢,这块呢,是不是摁一下这个case吧。啊case啊,这个这个case不是那个打的那个case啊,这个case啊CSE啊好结束一下我们这个case结构。嗯,然后呢,咱们再去这个,哎,Return一下我们这个结构啊,然后这块没问题是吧,好这块我们选中啊,然后呢,我们把这个呢选中一下走起。好了,然后呢,还是五六分啊,这个我们是改成这个二了啊,然后再选。哎,这个就是D档,然后再来一个这个,嗯,76吧。76的话呢,应该是这个C档来,我们选中了再跑起来,来C档好没有问题啊,这就过了。
22:05
好,深深吸一口气啊,有点缺氧啊,来,我们看一下这个第二道题。创建一个存储过程啊,Test if和啊,然后传入工资值,说如果工资呢,值小于3000啊,这个题有点绕啊,这个题是我编的啊,编的时候呢,我都觉得有点绕啊。来来看一下。嗯。这个创建存储过程叫它传入工资值,哎是是咱先把这个整个框架呢,咱先搭出来,以免呢,有了灵感以后呢,咱这一下手的话呢,这个结构呢,还没搭起来呢,是吧,哎,你到了不一样啊。哎,这么着。然后呢,咱们创建的是一个存储过程啊,Create。Procedure。哎,就它呗,然后我们把这个CTRLC拿过来,哎,一个小括号,哎,然后下边的这个begin,然后这个end,然后哎,这么着先把整个框架呢,咱们搭起来,说到传入工资值啊,传入工资值咱们这是存储过程了,所以记得加个in。
23:08
这个工资值呢,我们就写成叫SCL吧,这个呢就是个W类型。OK吧?好,就这样,传说呢,如果工资值呢,小于3000怎么着,如果这个怎么着,如果这个怎么着,那就整体呗。看一下。这个如果工资值小于3000,那咱就用if吧,如果哦,注意咱们这个啊,这个工资值就是咱们传的这个啊,这就是工资值啊,直接拿着它不是我们表里边出据,如果这个工资值呢,小于3000啊,那就直接小于3000呗,哎,然后呢,这一下你要干什么呀,你要删除工资为此职的员工啊,这个我自己写的都挺少的啊。Delete from这个employees啊,嗯,然后呢,叫where。嗯,这个employee ID呢,等于咱们的这个IC,哎哟,错了,不是employd了,是我们这个salary。
24:02
是这意思啊,你比如我这个值呢,我传的是2500。然后呢,我们这个员工表里边呢,假设有个员工呃,工资呢,就是2500,那我们一判断这个就满足,然后这块我就把这个2000,哎,当然也可能不止一个两千五的啊,我就把两千五的这个工资的人呢,就全删了。哎,这就是他这个意思,好,然后呢,这个else if。这个3000~5000之间的啊,我就直接呢,就不用判断大于等于3000了,只要这个一幅不满足的,自然而然就大于等于3000,直接我们就奔着小于等于5000来是吧?啊那我们再去挣这个要干什么呢?就是修改工资值,呃,修改此工资值的员工涨薪1000块钱,就是你要是有的员工呢,比如我们是6000块钱啊,这个否嗯,啊不是6000了,这个4000吧。呃,有员工的工资是4000,我们就走到这里了,那相当于把这个4000呢,给大家再加1000块钱啊,这这个是一个update是吧。这个employ employees啊,像我们讲这个存储过程啊,存储函数啊,包括这个流程控制啊,是不是都得基于咱们对DML啊,DDLDC是吧,你这得熟悉啊。
25:03
好的,这个else if,然后then update employees,然后set一下。嗯,我们要给他涨薪是吧,哎,Salary。等于原有的30,是不是给人家加上这个1000块钱呀。然后呢,是不是where啊。这个salary。等于CR。哎呀,这个还挺逗的,我这个苹果手机搁到这了,我说的salary给我把这个salary给我吊起来了啊,行,我给它关一下啊。回过来啊,这个set salary呢,等于salary加1000块钱,然后y salary等于它,嗯,能清楚是吧,好,再回过来。否则呢,涨工资500。否则涨工资500,那就else呗。这个涨了500,那还是update也就这么着。哎,CTRLC。诶拿过来这个涨500块钱。应该是清楚的啊啊这个涨500块钱,然后就是呃得就是这个工资值的,比如我这块呢,传入的是个6000,那6000的话呢,不满足这个,不满足这个,那6000的就把工资是6000的员工呢,薪资都涨500块钱,哎就是这样个场景。
26:14
嗯,完事了,这是存储过程,那我们这块呢,就整个。是不是就没有了?可以了是吧,好,那这块我们选中。啊,执行。好,报了个错。这个看一下啊啊,忘了咱们这块是不是还有一个N的if了,把它给丢了啊好,这块我们选中啊再执行。好,没有错了,然后呢,我们去调用一下这个存储过程。靠,是吧。调用一下我们这个结构啊,CTRLCCTRLV啊拿过来这里边呢,我们需要写这个工资值,那我们怎么验证咱们这个函,呃,存储过程写对不对啊,咱们这块呢,哎,这个顺带着咱们去需要呢,做一个这个这个查看啊from employees。嗯,这么着,我们从这个员工表里边呢,先看一看这个信息,咱们找一个这个工资呢,是小于3000的。
27:07
小啊小三,那就这个吧。工资要小于3000的话呢,我把这个人给删了,是这意思吧,这个是116啊,哎,一会儿我们看下这个116呢,这个人还在不在。哎,就看它。好,这个呢,是多少钱呢是。2900,好,这个位置我写上2900。来,我们选中。来我们这个是107条记录啊,来我们执行一下。三条受影响哈,好,这样我们再去做个查询。咱就可能还有别人是2900,咱就只看116啊,正常来讲是不是按照这个递增那个顺序来的啊,你就看116还在不在啊,115117是不是就幺六给干掉了,哎,说明我们这个是没问题的,然后呢,咱们再找一个这个3000~5000之间的吧,3000~5000之间,哎,那这幺五是不是就行。115的话呢,是3100。嗯,然后我们需要给他涨薪一百一千块钱,好,这个我们写上3100。
28:01
好,执行。然后我们这块呢,再选中去执行啊,115找一下。哎,要五刚才呢是3100,你看现在是不是四千一了,哎没有问题,然后这块呢,我们再找一个,哎,找一个比如说第一个人吧,第一个呢是这个公司的老大了啊,他是这个两万四啊,那这个工资呢,我要是写成24000。123啊三个零,这时候呢,给他涨500块钱来,我们这时候再选中走起。哎,再看看这时候是不是涨了500块钱,好,那说明我们整个的这个,呃,存储过程呢,咱写的是没有问题的。啊,这个是我自己编了一道题啊,就是感觉说的都有点绕啊好,那下边呢,我们看一下这个第三题,这个第三题的话呢,在咱们下篇当中啊,哎,我经常呢会用到。所以咱们在这个第三篇,呃,第三道题这块呢,哎,我给咱呢,相当于是呃,这个做一个演示啊,就是我们在下面的时候呢,去演示一下这个数据,它的一个执行效率的时候,比如我们写这个查询语句,这个查询语句的话呢,我们呃想看到它这个执行的是比较慢的,那这时候呢,需要依赖于我们得有个表中的数据量比较大,比如我造了100万条数据。
29:05
啊,那这个数据的话呢,是咱们自己造的,那怎么造啊,我们就可以使用这个存储过程的方式呢去造,那这块呢,我就给大家做一个演示啊,咱们怎么呢,去这个造个表里边儿呢,给大家造一些这个假数据啊。好的,我们看一下这个创建一个存储过程呢,叫insert data。说传入参数为in的啊,In的类型的这个变量叫它这个呢,就表示我们想这个造多少条数据。啊,这个意思,然后实现呢,像这个表中呢,去插入这个我们指定的这个参数这样一条记录啊嗯,这个表的话呢,我们这块啊,我也提前已经写出来了啊,有ID,有这个username和这个password这样的三个字段,这个呢是主键词增长,这个呢是这个用户名,这个是这个密码啊都是闹闹的啊比较简单,哎,我们选中了走起来。好可以了,然后此时的话呢,我们去做一个这个查看一条数据也没有对吧,然后下边呢,我们去创建一个存储过程呢,给他去造这个假数据啊。
30:02
哎,首先呢是the limit。哎,这个用他的方法应该都可以啊,看你个人习惯了。然后哎,这个Peter是吧,哎这么着一下。Create。造一个存储过程。这几天写这个呢,是不是都写的有点想吐了啊,这个单词老写哈。嗯,这里边儿呢,我们是叫insert data啊,CTRLC啊整过来。传入呢是in,写个in。这个int类型的叫做insert count,你看我编这些题的时候呢,我还是写的很清楚的啊,大家你练的时候呢,参数是什么呢?都给你写好了都。嗯,然后呢,还有然后吗?这是一个存储过程,就没有returns了,咱们就直接来说就比begin了。然后一个end收尾,哎,就这么着对吧,看我们要干什么事,咱们的实现像me这个表中呢,插入这么多条记录好了,我们现在呢,插入这么多条记录呢,相当于我们要ins射多次啊,In射多次呢,你是个循环吧。
31:07
哎,咱们刚才上边这个还,嗯,这个广练这个分支的,咱还没练个循环呢,是吧,好下边我们来去练这个循环,那练循环的话呢,我们要插入这么多条记录。哎,我们是不是得说明一个变量啊。比如这块我用这个while循环来做啊,我们去先声明变量。哎,这位同学呢,可能,哎,我怎么想不起来生命变量呢,就是大家呢,你写多以后呢,你这个感觉就来了,哎,就来了啊。就跟那呃咱们学英语一样啊,天天你研究语法呢,研究这个句式,那不行啊,你你你最后还是不能跟人交流,你得出去啊,得跟人去交流,去说话才行啊,像我上大学的时候呢,这个一个好朋友啊,这个他爸呢,因为本身就是这个外国语学院的这个教授啊,所以他在这个特别小的时候啊,两岁到四岁期间呢,就呃说把他就扔到这个英国呢啊,就待了这个一两年。啊,这英语水平就比较好是吧,呃他呢给我们说当时大学的这个,呃,说去哪去哪的时候呢,然后他直接就在这上面就呃我我印象很深刻啊,当然我们是这个需要出去呢,去一个银行,那当时呢,没有说像这个安卓,呃iOS这个操作系统啊,你手机一搜就知道银行在哪儿了,诶那时候呢,这不方便啊,你也得去图书馆呢,上网查很麻烦啊,那这块呢,就他就给我们讲,因为他是本地人嘛。
32:23
然后呢,就说啊,你往那个人民大街这条路往前走,走到哪哪的时候来说这就有一个银行,哎,这个很神奇的啊,你要咱去给别人说路的话呢,你是不是这块你就写银行就完了,诶他这块呢,竟然来了一个bank是吧。啊,那说明他就有这个语感嘛。啊,就跟那别人呢,如果说这个比如说别人的啊,就是你自己这块,比如说走路突然崴了个脚啊,这个东北人可能就哎呀妈呀是吧,啊,你要这个外国人有这个口语的话,你是不是就来一个叫傲啊。啊,一个傲齿啊,这挺有语感的啊,哎,你得有感觉啊,好,那这个位置呢,有同学说我怎么想不起来定一个变量呢?哎,这个你写多了就知道了啊,我们为什么要定变量呢?哎,咱们现在不是想用这个叫外循环吗?
33:04
对吧,我想用外物循环啊,外物循环这块呢,是不是得写个叫循环条件呀,比如说哎,怎么着是吧,你这个变量啊,你得是小于。嗯,小于咱们要上面一,那这就加个等于啊,小于等于是不是叫insert。看他呀。就是我们指定的这样一个临界值,所以你前面呢,是不是得有个变量啊,哎,这就我们说的这个啊,这我们比如说叫in吧,In一个count,哎,这个是一个in类型的default。嗯,这块就看你这个default值是几了,那这块defat值比如说写成一。哎,我写成是一了啊,那这个位置的话呢,我们CTRLC一下,哎,这就写成这样了。大家看一下能看懂吧。是吧,哎,这呢是一个初始的一个这个变量啊,然后让它呢,是小于等于这个因素的count的,我们比我们这呢写成是这个100,那个它小于等于100是吧,然后接着呢,记着我们这个循环结构呢,有个度啊,然后在这里边呢,写我们的循环体,嗯,你要干什么呀。
34:00
嗯。咱们要干啥,咱是不是就要去添加数据啊,所以呢,核心的做的就是叫insert into a Thein啊一定要指明咱ain里边呢,第一个ID呢,咱就不管了,咱直接呢就给这个userername。啊,然后逗号一下,还有这个哎密码。给这两个字段呢,是不是去赋值啊,直接就values是吧,然后这个values这块呢,写的话呢,嗯,咱们这么着吧,看一下啊。这个用户名啊,咱们让各自呢,都还是有点区别的,那我就这样,嗯,Contact。哎,这么着,这个我们逗号一下,然后这个位置呢,我们就编一个这个词啊。哎,编一个词,嗯,编一个词,我写一个啥呀。嗯,写一个。啊,比如叫at特硅谷吧,就某些人没想起来别的词啊,好,然后逗号一下,然后再后边呢,我就用这个叫a in这个count。哎,能看懂是吧,这个可能稍微长了点啊,这呢是一个函数,然后叫艾特硅谷杠啊及啊这呢我们就写个数,那第一个数呢,是不是就杠一啊。
35:05
啊,这就我们说的给咱们这块附的呢,是你这个user name啊,后边这块呢,是我们这个密码,这个密码呢,咱们也整一个随机的吧,随机的这个函数呢,叫round,还记得吧,咱们前面讲这个单行函数的时候呢,还有它啊数值类型的。它呢是一个数值类型的,咱们乘以一个。我多整几个零吧。哎,比如说六位数,嗯,这个我看六位数啊,这呢,它返回是零到一范围内一个值啊。嗯,我这整几个了,123456行,然后的话呢,我们得到的其实是一个double型的值了,咱再来一个这个四舍五入。Round。哎,让我就不要这个小数点了啊,所以咱们就这样包一下。嗯嗯嗯,行啊OK是吧,呃,这样的话呢,咱们就给这个呃,用户名和这个密码呢,咱们就做了一个这个,哎,算是一个赋值了。诶复制了是吧,诶复制完以后呢,别忘了,咱们这里边呢,这个以ne count呢,它是不是每次执行完一次,这个所谓的循环体,它得加加一下,所以我们还得是让它呢,是不是,哎,我就要加加了,加个一是吧。
36:08
面加个一啊,我说它加加的意思就是就加一的意思了,好,那这时候我们得有个S结构啊,然后最后呢,我们来一个是不是叫N一下,我没办法循环就可以了。这是一个非常典型的一个我们说的四个条件的一个情况,这个位置呢,相当于我们的啊叫啥呢,是不是叫初始化条件部分。哎,我再带着大家复习一下啊。对于循环结构呢,我们说一定包含四个元素啊,这呢叫初始化条件。哎,就它,然后我们这个位置的话呢,这就相当于是叫循环条件。哎,循环。条件,那么这个呢,是不是咱们就典型的循环体啊。哎,这是循环体,然后这个呢,哎还记得吧,哎,我们说的这个词呢,叫什么呀,叫迭代条件。
37:03
哎,好的啊,保存一下,这就我们说典型的这四个部分,大家呢,再去写我们这个循环结构的时候,一定不要忘了把这个迭代条件加上,否则呢,你就成个死循环了啊,出不来了。嗯,然后就然后就没有然后了呗,哎,那这块呢,我们整个呢,从这到这儿选中,哎,走走一下。好可以啦,然后呢,咱们去做一个调用。哎,调用呢,咱们这是一个存储过程啊,就用这个call来调用了啊,CTRLC啊,激动人心的时刻就来了,我们这里边儿呢,咱就别写多了,咱们就先整一个100条记录吧,好,那我们这时候呢,选中了走一下。诶成功了吧,啊挺快的啊,那成功以后呢,这时候你大家再看啊,我selecting from我的命一下啊这块你看就100行记录,这呢我们就at Google杠一杠二,哎这呢,是不是我们就取得这个密码嘛。没问题是吧,哎,就是这个意思,好,那我们到下边的时候呢,咱们需要呢,去演示一下这个SQ的性能的时候呢,咱们要造个表啊,到时候呢,也是这样的方式去填充这个假数据,到时候我们可能加的数据量大一点啊,100万条记录花的时间呢,就稍微长一些,然后呢,我们再去演示一个查询,那可能这个时间呢,就超出了我们呃期望的那个值量啊,那我们去找一下那些慢查询有有哪些啊。
38:18
行,那这块呢,我们现在给给大家提前呢,就做了一个演练啊,嗯,这儿呢,咱们就说到这儿了,然后的话呢,咱们看一下这个是不是该第三波了。啊,第三步的话呢,我们给大家呢讲一下,哎,该这个油标是吧,看它的一个使用。哎,大家呢,其实你发现了这个游标使用的话呢,哎,我们不是最核心的一步呢,叫使用游标叫fetch是吧?哎,那你肯定是不是要结合着咱们的循环结构去使用啊,啊,因为你fetch呢,只能取一次,然后呢,你循环一下是不是接着取下一次fech fech fech fetch啊所以这个游标的使用前提呢,诶,它得有这个循环结构啊。好,那这块呢,我们再回过来。哎,找到咱们这个游标啊,这个还是我编的这道题啊,这个编的呢,还挺绕的。
39:03
这个编的挺绕的啊,差点就把我给绕进去了。啊,因为这个讲完咱们前面内容之后呢。哎,这个咱们再整这个内容看,现在已经很晚了啊,现在已经是一点快一点半了。夜里边啊,夜里边。哎,但是呢,还算精神啊,来咱们给大家呢,把这个题目呢讲一下。嗯。哎,我这么着拿过来。可以了啊行,大家呢,你看一下我写的这个需求的话,你能不能看的清楚啊,首先的话呢,我们先把整个这个结构呢,咱们先给它搭建起来。哎,这个,哎分号结束,哎这么着。嗯,好了,这呢,我们创建的是一个存储过程啊,咱们就create。这个叫update salary。啊。啊,还没写这个procedure哈。
40:00
哎,这么着。嗯,然后呢,下边呢就begin,然后呢一个end,哎,就这一个大框架就完事了,好,下面呢,我们来看一下这个具体的细节。说这个参数一啊。一个in是吧,然后呢叫做DEP。啊是int类型的啊,我这块写的很清楚啊,它代表的叫部门ID,好下一个。这个参数二呢,是一个in。嗯,是一个呢,叫做a change。Change叫ICL呢,这个叫count。好。嗯,In的类型,嗯,就他俩好回过来啊,不用回过来,这个我们就可这样说一下是吧。嗯,这个呢,是要干什么事儿呢,你看我后边这个描述哈,我呢要查询这个部门的员工的,呃,这个薪资。啊,除了薪资之外呢,还要查他这个higher data啊。这个嗯,这表示的就是我们这个部门啊,举个例子啊,比如我们这个部门啊,查完以后,这个部门啊有50个人。这个部门有50个人,然后呢,我按照这个呃,Salary啊,这个按salary的去做一个升序。
41:04
吓我一跳,我这个C。把Siri又给唤醒了。这个这个。哎,关掉了啊。Salary,那这个我发音很像CRY吗?啊,这个大半夜的,这个发一个声还挺吓人哈,好拉回来啊。这个说哪了?我们这个50号部门,哎,50号部门呢,我是按照这个啊salary啊小点声音啊,哎,我去做了一个升序排列啊,这就把这50个人呢,是不是就按照三六去排列了,是吧?然后呢,我们接着呢,是想给这个呃,指定的一拨员工呢去调薪啊不是所有都调,这不50个人嘛,我想调几个呀,我通过这个变量呢,指明我要调几个,比如我就调俩,那相当于这里边你就相当于给第一个跟第二个人去调薪,相当于这个部门里边是不是薪资最低的两个人去调薪啊好,那调调多少呀,诶调多少呀,我还需要看一下这个higher data。特别绕啊,这个her date的话呢,嗯,根据他的这个情况的不同呢,我给大家调薪的的这个范围呢,也不太一样。
42:05
那这块呢,就是我们这道题啊,这里边儿呢,我们就要用这个科四,你不用科四你搞不定,因为比如我们就想要两条,那你要查50号部门呢,查出50条了,那要不就成了全都,哎这个update了是吧,我们现在只要俩,哎,所以我们就可以通过这个科的方式呢去定位,非常精准啊。这个我刚才是口述的,这呢是我们把这个需求呢,我写到这儿了啊。行了,那下边咱们就开整,这里边呢,涉及到了一个问题呢,就是咱们关于刚才说的这个her date呢。它是不是有一个,呃,随着它的一个不同呢,我们这个调薪的这个情况呢,还不太一样啊,这个我们把它放到这个位置吧。再往上一点。行,那这个过程当中啊,其实咱们是要用到这个变量的啊,所以咱们就先把整个的这个框架呢,咱们先写出来啊,尤其是咱们这个代码量一旦大的时候呢,一定要小心一点啊,缺一个步骤呢,有可能会报错。
43:00
啊,那要是科呢,缺了一个close呢,那就不是报错的事了,那就是这个性能会受到影响的问题了,行,那首先的话呢,我们这里边呢,八成会需要定义变量了,那我们就先标出来,然后呢,关于游标的使用呢,还记得吧,首先呢,是不是也是叫声明游标吧。然后呢,是不是叫打开游标。嗯,然后呢,是不是叫使用油标。这个使用游标的话呢,得在循环里边用了,最后呢,我们就要关闭游标啊,这是一个大框架啊,这个呢,你记着得有啊。好,那我们这块呢,首先来看一下,这个叫声明变量,声明变量呢,你可能一下子有点摸不着头脑,说这个变量我们都需要声明什么呀,啊,这个想不到啊,想不到那你就往下写。啊,你要这个经验丰富了这个呃,写代码写的比较多的时候呢,你可能那个一上来呢,就根据经验你知道,哎,我得需要定义什么什么样的变量啊,这块你想不到,想不到那就先先走下边的。电脑下边了啊,这个声明的这个游标啊,那你要游标也想不到,那就麻烦了啊,诶低declare啊,低declare怎么写啊。
44:02
呃,员工的这个薪资的问题是吧,哎,那我这块我就还写成这个叫延P吧。哎,科。还记得我们这个,呃,课字这块怎么去写了呗。后边这块呢,我们叫。哎,For是吧。哎,科特报什么呢?哎,接下来的话呢,我们需要呢,写一个是不是查询语句啊,哎,我们要查什么呀,咱们要查出来这个部门的员工的,哎,咱们要调薪了,你薪资的话呢,呃,是不是,呃薪资它要有个排序了哈,呃,其实薪资倒还是不用了,我们得需要查出他们的这个hard data,因为你一会要按照这个hard data是不是要判断呀。哎,Hard的一个,再一个呢,我们要改的时候呢,你得指定按照某一个员工ID去改,所以这块我们就得哎去查这几个字段啊,一个呢,叫做呃,Employ employee啊。诶,对吧,啊employd啊,再一个呢叫her。哎,From一下我们的这个叫employees这个表,然后where呢,我们叫a department,就稍微有点长了,咱们换一行吧。
45:02
Where?这个ID department ID啊,等于咱们这个参数一。那然后呢,叫order by是吧,哎,我们这个salary。哎,升序吧,AI你省略一下也行啊,那这样的话呢,我们这个科色的话呢,是不是就整个对接了我们整个这个查询的这个结构了呀。没问题是吧,啊对接我们整个查询结构好的,那么接下来的话呢,你看啊,我们写到这块的时候呢,大家其实你注意到咱们是不是查询了两个字段,那你这两个字段一会呢,去做这个fe的时候呢,肯定是不是要放到变量里,那你其实这两个呢,是不是肯定得有了。啊,这个得有是吧,哎,那这块咱们就把它写出来吧,哎,那我们就declare一下,就这个呢,你一看就是需要了啊这个呢叫EPID呗。嗯,然后呢,是一个int类型的啊,就不用父母认知了。哎,Declare这个我们叫emp的一个。嗯,Here date是嗯,是一个date类型的啊,这个呢,也就不用复制了,好用它呢,我们来去记录。
46:04
记录员工的ID啊,你可以在这标识一下,尤其呢,当你这个代码量比较大的时候呢,建议呢,大家标注出来,他呢是记录这个员工的入职时间。嗯,好了。呃,那这块呢,我们就先这样啊,你也不知道别的变量定义啥,那就先走着看啊,下面呢,就要打开游标啊,我们open一下。来咱们的这个科,哎,这个是or啊。哎,写错了啊,哎它啊CTRLC,哎,Open一下我们这个哎,Cer这就打开游标了,然后呢,接下来呢,我们就得使用游标,其实就用的这个fetch吧,Fetch呢,就是从我们这个游标里边,咱们就取这个具体的你这两个字段了,哎把它呢into道啊你这块呢有俩是不是这块也得有俩,而且呢得对应啊,先写这个EPID,然后逗号一下,就是再写我们这her data呀,哎,CTRLC啊这么着。啊,这就fetch了,但这块你fetch,你注意我们要多次呢去fetch,哎,所以这块呢,你是不是就得用个循环结构来表示啊,啊,那咱这块呢,比如还用这个while循环吧,那Y循环循环几次呀?哎,我是不是只想循环这么多次啊,那这块你是不是还得有一个变量来定义一下,咱们或者就就跟咱们上边那个写的练习一样,哎,叫初始的这样的一个值啊。
47:15
哎,初始的一个count啊,Int类型的default。嗯,这个初始看的这个敌方有写几啊,写成一吧。啊,这呢,就是哎,咱们用于用于循环的这个默认值哈,或者叫这个初始化条件。哎,表示。哎,循环结构的,呃,初始化啊这个哎条件啊。好,这个完了以后呢,我CTRLC一下,咱们现在呢,要在这个位置呢,我要去写这个循环了。我这块我还用while循环吧。哎,那我们要求呢,就是这个变量呢,咱们得小于等于,呃,咱们只是想取这几个啊,所以就是你想改变几个员工的这个工资的啊,这个这工资啊,我就这几个,我这是个一,哎,注意我这块是个一啊嗯,然后这块呢,你就带上这个等号就行,比如我们这呢,就想改俩,那就是哎,先一小点于二,然后里边你再加加一下回来二小于点二啊,再加一下三就不满足了,所以只改两次。
48:09
啊,小心一点,然后呢,度一下是吧,好进来。嗯,在我们这个循环里边啊,这不是咱们就是调的这个事儿吗。嗯。这个事是吧,嗯,这里边的话呢,我们就一个fight一下啊,把这里边呢,这俩都取出来了,取出来以后呢,下边该干什么了呀。嗯。哎,这个我们关闭游标,这个放在外边啊,哎,我取出来这个邮标了以后呢,呃,有取出邮标中的这个数据呢,这是一条了,放在这俩变量里了,然后接下来的话呢,我们就要根据这个her date呢,咱们是不是要判断一下你这个具体的,呃,掌心的这个幅度是多少啊。哎,那这个幅度呢,它是不一样子的,那下边咱们现在就得写这个分支结构了啊说如果。呃,那么咱们是拿这个her date呢,跟这个年份啊,年份这块呢,实际上又算一个数值了,咱们前面呢,也讲过这个日期类型的单号函数啊,其中有一个呢,叫做这个year。
49:02
哎,咱们就直接这么着啊,CTRLC一下粘过来,这个呢,就取出这个时间的一个页了。啊,这个一的话呢,如果你是小于这个1995的啊,这个应该能看懂吧,啊我们这块呢,是不是就震一下。好,那赠你干什么呀啊,这块呢,就给大家调薪了啊,你可以在这块呢,直接就试图调薪或怎么着的,哎,我这块呢,就先不去调干嘛呀,哎,你这里边呢,情况不同,不只是不就是这个,诶要调新的幅度不一样吗?我还可以呢,是不是专门来定一个变量去记录你这个所谓的幅度啊。嗯,记录这个幅度,我们叫一个salary的一个rate吧。啊,Rate就是一个这个这个率是吧,哎,这个工资的一个率啊,或者我们叫ADD的,哎,这个salary的一个rate。嗯,这呢,就是一个呃,Double玻璃型的了啊,我就写成double了啊,你也可以写成DEC啊,嗯,默认值呢,我就不给你了。咱们用它呢,是用来啊记录。
50:01
记录这个叫哎,涨薪的一个比例吧。比例啊好CTRL一下。好这块呢,我们就升V完了啊,我CTRLC说呢,如果你要是这么着的话呢,我就塞了一下啊,你当前这个变量呢,咱们就负个值,你是1.2,诶是不是就这么着啊好接着呢,Else衣服啊。哎,这个小框。哎,这块我还得把这块呢,再CTRL一下啊粘过来。这个呃,这个要不满足呢,自然而然的就是大于等于1995了,然后呢,还得小于等于1998啊这块就是1998呗。没问题是吧,好再一下,然后set一下我们当前这个变量,CTRLC粘过来。这个1.15。那就这么着,然后再接着呢,嗯,还有一个啊,那我们就把这个呢,整个CTRLC一下。放这这个呢是大于九,嗯,上边这个你注意啊,这是不是有个等号啊,那你记得在这块把那些等号给人提供上,嗯,这个等号是在这儿啊,那就在这里边的。
51:01
然后下边这个呢,是小于等于零啊2001年啊,这个等号补上2001OK吧,啊没问题啊,嗯,然后呢,这个是1.10,嗯,1.10行给他,然后接着再来个L。这个L的话呢,咱们就直接呢设置成1.05了啊,我们把这个呢CTRLC。哎,在这是不是叫1.05吧。0.05没问题是吧,好,那记着啊,咱们现在呢,是这个if结构里边,你记着最后呢,别把这个if呢,这个N那个给结束了啊,给给丢了啊,这个呢,记着N的一个if。那么这块呢,咱们就算是结束了啊,这个目的呢,咱们整体上来讲是为了就是要获取这个涨薪的这个比例啊。哎,通过我们这个if这个结构呢,去实现的,获取这个涨薪比例的目的不是目的,咱目的呢是真的给人家涨薪,下边是不是要这个涨薪了,哎,涨薪这个操作了啊嗯,我们这块呢,进来以后呢,取的是其中的第一条记录啊,这不记录呢是哪一条,它ID是多少,这不都记录了,它D是多少,这都很清楚,哎下面呢就涨薪是吧?Update。
52:08
这个employees。Set一下,嗯,Salary。哎,这个等于,哎,你这个三列是不是乘以一下咱们刚才的这个瑞呀。嗯。没有问题吧,哎,然后呢,我们去where啊,我要改谁呢,是不,我们这个employd呢,就等于我们这个下边这个EPID,就是咱们上边的这个吧。哎,就这个是吧,哎,我们取出来这一条记录,哎你这条记录呢,你看一下这个hundred data呢,它的一个情况,哎得到一个比例,然后呢,我们是不是就改你这个ID的他的这个哎工资就可以了。这不就是个掌心吗?好,完事了吗?也就说哎差不多了啊,该这个结束循环了是吧,哎这个呢叫end一下哎,Well。哎,这么着整的话呢,就差点意思了。哎,大家写循环的时候呢,哎,我建议呢,你像我一样啊,就是去数一下1234。
53:00
这个位置呢,为代表的就是它这是不是我们叫初始化条件是吧,这叫一,这个呢,是不是叫呃循环条件呀,好,然后呢,你可以列解成整个这块呢,目前来看呢,其实都算是这个叫循环体,那我们还差一个是不是叫迭代条件啊,迭代条件就针对于我们这个初始变量的,它是不是得呃操作完一次之后呢,我们再取一条,是不是你得让它加加个一啊。哎,所以这块呢,是我们的这个,呃,迭代条件的一个更新啊。哎,那我们这块呢,就得塞一下它,然后等于它呢,是不是再加个一,哎,这样就妥了。OK吧?好,那么这道题的话呢,哎,啊还没完事呢,咱这还有一个关闭有表是吧,哎,Close一下,哎把我们这个科呢,哎,CTRLC,哎,CTRLV,随着我这个close啊,咱们整个呢,这个关于这道题目呢,哎也就接近尾声了。来,我们把它呢选中啊,成不成在此一举是吧,哎,我们走起。
54:03
哎,还真错了啊。看一下哪块错了。哎,错误代码,它是在我们这个Z这块啊,这个是1.05这啊看一下1.05。嗯,这个if else if啊,Else if else啊,这个多一个字吧,啊这个啊。哎,这个呢,就是大家你写多之后呢,你就直接知道呢,它是在哪块出的问题啊好,那我们这块呢,再选中啊,又是击中的时刻啊,然后走起。好,没有报错,没有报错呢,意味着我们这个程序写对了吗?不一定啊,只是说呢,你这个语法上没问题,你有可能逻辑上是有问题的啊行,那这块呢,我们就该做一个调用啊,咱们去看一下这个,哎,是不是有问题啊。嗯,咱们要调用的是这样的一个存储过程。哎,我这块来一个call是吧,哎叫他啊,诶我们需要传入这个参数的话呢,一个是部门这个ID,一个呢,你要改几个人,嗯,咱们先做一个提前的一个查询吧,比如说我们查询一下这个星写啊from employees,然后where一下。
55:06
这个department。这个ID啊,比如说我们查一下,我记得咱们52部门人应该是比较多一些啊,啊凑齐啊确实多一些,43点记录好,那这么着,咱们现在呢,要那我这块呢,我查的时候咱就从50部门查吧,那这个部门里边我要改几条记录呢?呃,改两条记录吧,那这两条记录你是改的哪两条呢?咱们是不是取出来的,是按照你这个,诶这个公司呢,排了一个升序之后的前两条记录啊,诶所以我这么着。咱们来一个叫order by吧。哎,Order buy一下这个salary,咱们只要52部门按照它这个ary是一个升序牌,然后呢,我把这个呢选中一下。啊,这个量有点大啊,你也可以呢,就是我们只看咱想看的这个字段,Employd,这个hard data呢,你愿意加就加,然后我们再看一下这个salary是吧。来这时候我们选中了再执行啊,就这几个字段,咱们现在呢,查询的是50号部门的,按照这个工资的一个升序排的最低的是不是就这俩人啊,如果我这个位置写二的话呢,言外之意呢,我们要改的话呢,啊,你看这块呢,这俩人一样的是吧,那咱们这块再再加一个吧,改三个人。
56:16
三个人吧,哎,就是你要俩人的话呢,其实他这块呢,呃,这个排序的时候呢,你还得最好呢,就指个二二级排序,要不他有的时候可能就不是特别确定了,是吧,但一般情况下呢,他要俩工资一样的话呢,他会呃优先考虑呢,就是哪个呢,先添加的他就放放前边了,嗯,咱这边举例呢,我这就写个三吧。那就意味着咱们要是把它运行起来的时候呢,他应该改的是不是就只有这三个人的这个,呃,叫什么呀,工资是吧?哎,后边这些人的工资呢,正常来讲就没有改了。哎,就没有改了,那他们仨呢,改成比例是多少呢?那我们就看一下你这个hair date了。对吧,哎,是这个意思啊,行,那咱们这块呢,先把它这个本身的数据呢,咱们先截截出来一个了,下边呢,我去调用一下咱们这个存储过程。
57:02
啊,调研完了啊,这个写意你不用管它啊,然后这块呢,我们再去做一个select啊,激动人心的时刻啊,这才真正看上你这个靠不靠谱呢。呃,第一个呢,你看是这个132诶。第一个是132,你看他这个工资呢,是不是涨了呀,没问题,第二呢是128,诶这就说怎么变了,因为你涨薪以后的话呢,它这个再去升去呢,它这个位置就会有变化啊,你找128,哎128的话呢,你看它是变成2420的,哎,比例表是不是也变了,好第三的话呢,是这个136啊136这哥们在这儿呢啊这哎两哎他俩一样嘛,他俩本身的薪资就一样,涨幅呢肯定也是一样的。然后呢,这仨呢就完事了,然后再往下呢,你也可以验证一下,你看是不是确实没改哈,有127127的话呢,是2400,你看这个没改吧。然后呢,135啊,也是两千四啊,也是两千四也没改,然后这个幺,呃191还幺两千五也没改啊,140啊,你看下边其实都没改啊,没问题,相当于咱们就改了这三条记录。对吧,哎,没有问题的啊,哎,大家比较小心的点呢,在哪呢,就是我这呢,默认值是一,哎我这个呢叫小于等于有的同学呢,这个呢,可能把默认值写成零了。
58:08
你要再写成零的话呢,这些小于等于呢,这个还是三的话呢,其实就改了四条记录了,除非呢,你把这个等号给去掉也行是吧?哎,这个位置呢,大家稍微的去留意一下就行。好,那么至此的话呢,咱们关于咱这个课后这个练习题呢,咱们就说完了啊,这是变量流程控制和游标的使用啊,大家下来呢,一定要练一练啊,一定要练一练啊,写收了就可以了啊,存储过程呢,咱们也说了,呃,在实际当中呢,就是一些大型公司,有的呢是推荐使用啊,有的呢可能是禁止使用,那你到底是推荐的呀,还是这个禁止的呀,哎不管怎么着啊,至少呢,从我们学习my circle,还有这个circleq的角度来讲。大家你是需要掌握的啊,至于说呢,你公司用不用呢,到时候再说啊是这样。好,那这块呢,我们就先到此为止。
我来说两句