00:00
好,那关于系统变量咱们就说到这儿了啊,系统变量这里边儿呢,还是有几个内容啊,需要大家去掌握的啊,需要大家去掌握的,比如说呢,我们该如何呢去查看咱们的这个系统变量啊,像这个是global级别的呀,还是这个session级别的呀,哎,都一样啊,咱们去查看,包括呢,我们如何去修改这个系统变量的这个值,以及呢,这个系统变量它在什么样的范围内呢是有效的。啊,这个呢,是需要大家清楚的啊,咱们到下天的时候呢,还会讲一些常见的这个系统变量啊,包括我们去查看呀,去修改啊,都会去做操作的啊,到时候呢,我们大家呢,再去熟悉熟悉啊,再去熟悉熟悉行,那么接下来的话呢,我们看另外一类变量啊,另外一类变量呢,我们称为呢,叫做用户变量。啊,我们前面呢,说变量分成系统用,呃,系统这个变量和用户变量对吧,那下边呢,我们来看看咱们自己定义的这些变量啊,咱们自定自己定义的这个变量的话呢,又分成了两类。又分成两类,那一类呢,咱们称为呢,叫绘画用户变量,哎,然后呢,哎,另外一类呢,叫做局部变量。
01:07
你看这名字呢,好像这个差别有点大是吧,有点大哈,这个绘画用户变量呢,顾名思义就是咱们定义的这个变量,它的这个有效范围呢,你可以理解为是不是就是当前绘画是有效的呀,OK,那么这个局部变量呢,就是只在这个局部是有效的啊,比如局部地区有雨是吧?哎,只在你那一块有雨,别的地儿就没有雨了,那局部变量到底是作用于范围是哪个范围内呢?咱们一会儿呢来展开说明。那么这块又提到了说MYSQL这个编码的一个规范,说这个用户变量以一个这个艾特符呢去,呃这个这个开头的,诶这块我们需要呢,格外再再给大家强调一下,咱们前面呢,提到了这个系统用户,不管你是global级别的,还是这个三神级别的,咱们是不是都是用的这个两个艾特服去做的一个规范,对吧?那我们这里边呢,提到了这一个I的符,注意这一个I的福呢,准确来讲呢,不是说呢,用它来去修饰绘画用户变量和具变量啊,咱们这一个I的福呢,主要是用来修饰这个绘画用户变量的。
02:06
主要是用来修饰,修饰这个绘画用变量,这个局部变量啊,咱们就不用这个艾符号去操作了,因为呢啥呀,它的作用域范围比较小啊,比较小,它只在哪里有效啊,只在咱们这个begin和N里边呢,是有效的啊,意味着是不是我们存储过程或者存储函数里边,对吧,你出了这个存储过程,存储函数就没有效果了,所以呢,基本上我们也不会呢,跟系统用户这个变量,系统这个变量来进行这个混淆,所以呢,我们只需要区分的就是咱们会画用户变量和前面的系统变量。啊,所以系统变量用两个,哎,后边用变量呢,就用一个就行啊,旧变量就都懒得用了啊,就是这个意思。好,先进入这个事儿,然后呢,我们下边就提到他们俩的一个区别啊,绘画用户变量呢,它的这个作用域,哎只对当前这个绘画啊,当前绘画呢,就意味着是咱们当前的这个连接,哎是有效的,那局部变量的话呢,它只是在我们这个比例和N的当中,哎,它是有效的,只是使用在存储过程和这个哎存储函数当中。
03:06
首先呢,咱们把这个点呢,哎,给大家这块呢,就说清楚啊好,这呢是咱们这个第1.5个事儿。啊1.5个事儿,哎,咱们相较于系统变量,这个我们称为呢,叫做哎用户变量是吧。好,那这里边儿呢,咱们写一个简单的这个注释信息。那么首先的话呢,第一个点关于用户变量的一个分类。哎,用户变量化呢,我们刚才看到了啊,说分成呢,叫做哎叫会画,哎用户变量。对VS一个啊,我们叫做局部变量是吧。局部。呃,变量好这两种好,这是我们说的第一个事儿,然后第二个的话呢,我们说一下这个会话啊,用户变量。哎,怎么叫负二用变量呢,我们说呢,就是首先呢,它是使用我们说这样一个。
04:00
哎,这个我用一对双引号来表示吧,一个这个I的符号呢,呃,是开头的对吧,然后呢,这个作用于啊为啊咱们的这个当前的绘画。啊,当前绘画呢,在我们这个现在这个来指向的话呢,它就是一次连接啊,我们现在比如写的这个代码呢,我们一会儿呢,定义一个这个绘画用户变量,定义完以后呢,我们在当前这个连接当中是有是有效的,你要新建一个针对于MYSQL8.0这个连接,那就是一个新的会画了,你这个变量就无效了是吧,诶就无效了吧,只要你断开连接。啊啊,断开连接在这了啊,只要我们断开连接,相当于你这个当前会话呢就结束了,那你这个定义的变量呢,就没有效果了。这个呢,是我们叫这个绘画这个用户变量啊,OK,然后呢,这个第三个小点,哎,我们再简单的提一下,这个叫局部变量。哎,这个局部变量,哎,它呢是只能使用在咱们的存储过程和呃,存储函数中的。啊,这个就我们说的它的一个主要的特征行,那这块呢,大家先整体上有个印象了啊,哎,整体有个印象啊,那局部变量你看出了这个结构呢,你就用不了了是吧?然后接下来的话呢,我们就具体的展开去讲解一下我们的绘画啊,用户变量和这个H5变量啊,下边我们来写这个A1.6啊。
05:15
哎,绘画。哎,用户,哎这个变量。好,那么规划用户变量呢,我们讲它的无外乎就涉及到它的一个声明,它的一个赋值啊,包括它的一个使用是吧,哎,就这样一个过程,哎,这块我们来看一看。啊,这个就定义位到这儿了,嗯,首先呢,我们提到了一个变量的一个定义啊,其实这里边儿呢,它的一个声明和它的一个赋值呢,就同时进行了,嗯,主体上的话有两种方式啊,一种呢,是用这种set的方式啊,比较简单一些。第二种的话呢,是使用那个叫select。那这个为啥用select呢?呃,因为我们这时候呢,定义的这个,呃,绘画用户变量的这个变量,它可能这个值啊,来源于某一个查询语句,哎,所以这个呢,就稍微复杂一些啊,就是根据实际情况呢,大家你看一下,你是直接定一个值呢,还是说这个值呢,来源于来源于一个具体的一个表当中的一个字段。
06:04
啊,如果来自于表中一个字段呢,你就用这种方式就可以了。哎,那么我们声明完以后呢,哎,其实也把这个值呢,也都附上了,下边呢,你就可以直接呢,去做一个select的一个查询是吧?哎,这个select这种方式呢,其实就是一个查看的一个方式了。没有问题吧,哎,就这样一个情况啊好,那这块呢,我们把这个呢,相应的这个核心的知识点,我们CTRLC咱们粘过来,哎,关于绘画用户变量啊,我们也是写一个这个多行注是吧。哎,这个相当于是一个叫变量的一个,哎声明和赋值,哎,这是它这个是我们说的这个,哎,算是这个步骤一吧。来我写个这个一啊声明和赋值,然后第二的话呢,我们声明也好了,赋值也好了,下面呢,就相当于它的一个使用啊使用呢,我们刚才看到了直接是不是就使用这个select,哎,这样方式,然后呢,加上这个变量名是吧。哎,这样方式上去使用好,下面呢,咱们来给大家呢,去做这个举例啊,做这个举例,嗯,那这呢,我们就直接呢,是不是就目前就在咱们当前这个绘画里边了,我们上来是不是就直接set了呀?啊比如我们来一个叫M1啊,我们可以等于这写个一,然后再去set一个啊比如我们这个叫M2冒号等于啊也可以这个叫二。
07:19
好,再来一个set一个,比如我们叫这个sum,哎,冒号等于就是用我们这个M1呢,去加上我们这个M2,哎,这样呢也是可以的。哎,这样也是可以的,行,那这样呢,你看我们选中了做一个执行。哎,这呢我就执行完了,执行完以后的话呢,诶我们下边呢,就可以去是不是使用了呀,哎,我直接呢去查看一下我的这个叫sum这个值,来我们选中呢做一个执行。好这个值呢,你看就是三是吧。诶同学想说,诶这个我们这个程序都执行完了以后呢,你这个再去执行它这个,诶怎么还会有这个值呢?诶注意哈,咱们这个变量,或者说你这个M1和M2也是一样的,不是说呢,我们这块执行完以后呢,整个从内存当中可能就这个消失了没有。
08:02
没有消失,为什么呀,咱们是不是在当前这个绘画当中定义的呀,哎,这个绘画呢,大家就理解成是咱们当前这个连接啊,我们没有断开这个连接,就意味这个连接呢,始终是连接的啊,在这个连接保持的这个情况下呢,我们这几个变量呢,始终是存在的,所以说呢,只要这个连接不断,那你这块去获取是一定能够拿到的。啊,一定能够拿到的啊,没有问题,好这呢是咱们说的这个方式的,然后下边这块呢,我们可以通过select从表中查询一个字段,然后付给相应的这个,诶会话用户变量。嗯,那这块的话呢,咱们是不是得有这个具体的这个呃,表了得是吧,咱们当前这一章呢,还没有开始去创建具体的这个表呢,那那咱们做一个准备工作吧,这个准备工作我就写到这了。啊,写到这吧,是一个准备工作,好这呢是咱们这个第16章,所以不妨呢,我去create啊一个这个database。哎,咱们叫ADB,哎,TEST16是,哎,创建一下我们当前的这个数据库。
09:07
然后呢,我们再去使用一下啊,咱们这个a DB test16这个数据库。行,这块大家都比较熟了,然后在这个数据库下呢,咱们这个造两张表,跟咱们前面这个思路啊是一样的啊,Create一个table,我将呢,Employees,然后as select,大家应该明白我这个意思啊,From一下at硅谷DB下的employees,哎,从我们这个表里边儿呢,把这个数据呢复制过来是吧,创建一张新的表。啊,周期。OK啦,然后接下来我们再去create。啊,这个table,哎,我们叫departs as,呃,Select啊星from一下,我们at硅谷DB下的啊departments这个表,好的来,我们把它呢选中,咱们也来跑一下啊。啊可以了,好,那我们首先呢,执行完以后呢,咱们去做一个查询los。
10:04
Selecting from depart。诶次是吧,查看一下我们当前这个创建的工作呢,是不是OK的啊,这个表没问题,下一个这个哎,部门表我们走起。哎,也没有问题,好了,那么我们这个准备工作呀,咱们就做完了,哎,下面呢,可以理解成是咱们具体的这个来叫测试是吧,哎,测试我们去定义这个绘画用户变量的,嗯,那这呢,相当于是咱们测试的这个算式叫方式一吧。哎,这个方式一啊,这种呢,就是用于咱们比较简单的啊,你定义了一个变量,然后直接设个值,然后下边呢,我们来看这个稍微复杂的这种场景,哎,咱们可以使用的是什么呀?叫做这个select是吧?呃,一种方式呢,就是我们叫做select,呃,首先呢,你把这个哎括号用变量呢先写出来,然后呢,是拿一个表达式呢去赋值,比如说我们去select,咱们先。哎,我这叫一个,比如就叫这个count吧,哎,然后怎么着呢?哎,拿它呢,用另外的一个东西去赋值,用的是冒号等于啊注意好,那我们就冒号等于什么呀,我们来一个count星诶from一下employees,诶能看懂吗?
11:13
哎,能看懂是吧,好,那这时候我们做一个选中啊走起。那这就可以了。啊,这就可以了啊,这块呢,相当于是整个把这个呢显示了一下,那我们这个呃,变量的话呢,呃是咱们这个叫count是吧,我们查看一下它的这个值啊走起。哎,是不是就107啊,啊,没有问题,好,这呢是一种方式啊,那有的同学呢,可能更喜欢呢,另外一种方式叫select什么呀,比如说我们叫这个avg的一个salary,哎,是不是平均工资啊,然后叫into到哎,我们的一个变量里边,那我们叫呃,Avg的一个SL吧,哎,From an employ employees。行OK是吧,哎,就是选择呢,我们查询一个表中的某一个表达式,然后呢,把它透到一个用户变量里边啊,这个也是可以的,来我们选中了执行。
12:02
哎,可以了,然后执行完以后的话呢,诶不会担心这个变,不要去担心这个变量呢,它就失效了啊,因为我们当前这个连接呢,还是保持着呢,哎,你就可以呢,去做一个select,哎,查看一下我们当前这个变量。这么着就可以了,哎,选中。啊,选中啊执行啊平均工资,哎,6461是吧,没有问题。啊,这个是OK的啊好,那么这样的话呢,咱们就把这个呃会话用户变量呢,它的一个呃声明它的一个赋值,哎,包括呢,它的一个查看,哎,我们就说清楚了。啊,这就说清楚了,好,那这个说清楚以后呢,咱们接下来呢去讲啊,咱们这个叫哎局部变量啊,局部变量的话呢,我们就得放到这个存储过程或者存储函数当中呢去讲解了。来我们看一下这个A1.7啊。啊,这个呢,我们是在局部。变量。好保存一下,那么关于这个局部变量的话呢,我们首先看它一个说明,我们使用这个declare这个语句呢,去定一个局部变量。
13:03
啊,定一个九变量,然后这个declare写在哪呢?它需要写在我们这个begin和N当中的首行,就是上来的话呢,你就来指明,哎,你看我这块举了一个例子啊,这呢是咱们存储过程或者存储函数当中这个begin和end,我们必须一上来呢就去指明这个生命的局部变量啊,你不要把它写在下边呢,可能有一些查询语句的后面啊讲就会报错了,哎,上来呢就去必须呢去指明。哎,这个具体的定义的话呢,是用的这个declare,然后呢,这个诶赋值的话呢,诶可以用这个set啊,也可以用我们这个select啊,这个跟我们刚才讲的那个绘画用户变量稍微有点像是吧?哎,这个用表的话呢,就用它了啊。然后呢,你要使用的话呢,哎,其实也类似啊,其实这块呢,整体上跟我们刚才讲的呢,有点相似了,主要区别呢,就是需要大家关注的就是只能够是定义在我们的存储过程,哎,或者是存储函数当中。而我们刚才这块的变量的定义,是不是我就只要在当年绘画里边上来就可以直接去定义了呀,那区别呢,主要在这儿,好这呢,我们做一个这个说明。
14:08
哎,做个这说明这个局部变量。就是我们怎么去区分你这个。就是只要咱们自己定义的呢,那肯定是叫用户变量,对吧,那你用自呃这个自己定义的呢,叫做这个用户变量了,分成叫会话用户变量和这个局部变量,你怎么去区分这个局部的和我们这个诶绘画用户变量其实非常简单啊,就是我们这个局部变量呢,它诶必须。啊,这个有这么几个点啊,第一个啊是使用declare。哎哎,声明。啊,我们前面这块呢,是不是都没有这个底啊,这是我们说的第一个点,然后第二点的话呢,呃,相当于它必须呢,这个呃使用在啊就是声明。啊,并使用在我们的这个begin。啊和这个N中。
15:01
那这个B跟N的为代表的话呢,相当于就是哎,使用在啊我们的存储过程啊这个存储函数中,那我就简写了,哎,是不是这个意思啊。哎,这是我们说的这个这两个点啊,而且还有啊这个第三个点。那第三个点,那就是我们这个,呃,Declare这种方式啊,它声明的这个巨变量必须放在我们这个比begin中的这个首行。啊,Declare的这个方式声明的这个局部变量。哎,必几乎变量啊,必须哎声明在我们的这个哎比begin哎中的这个相当于这个首行的位置。啊,当然你要有多个的话呢,那你就先后顺序呢,去给声明就可以了。好,这呢是我们这个局部变量呢,它要想使用的话呢,必须满足这样的几个点。啊,这个呢,我们可以这样把它的,哎,拉下来啊。哎,必须满足。
16:00
哎这样,哎这呢,就我们说的这样的一个,呃基本的这样的一个事情,好这个呢,呃清楚以后呢,接下来我们要谈的问题呢,是不是就涉及到他的这个叫哎哎声明,哎包括呢赋值,哎包括他的一个查询是吧,或者叫一个使用OK。啊,这呢,咱们算成是第一个小的是吧,然后第二个呢,是呢,我们涉及到它的一个,哎,这个声明格式啊。声明格式呢,直接我们从这个课件里边给他拿过来。哎,就是,嗯,就这样子的。诶就这样子的啊,CTRLC我们粘过来,通过这个呢,我们能够看到呢,就是我们declare去声明这个变量的时候呢,哎,还可以指明一个默认值是吧?哎,这个默认值的话呢,你要是没有指定呢,哎,默认它就是个no啊,这是一个另外的话呢,你会发现哟,这块方式,这个局部变量的方式呢,我们定义的这个变量还有一个类型啊,你看是不是有个类型啊。咱们前面定义的这个,呃,会话用户变量有类型吗。是没有啊。哎,没有啊,你看我们这块定义好变量以后呢,直接负的这值,这个值呢,我们是一个整形的啊,它就是整形了,我们select谁放进去,我放在一个平均工资啊,平均工资呢,它就是一个呃,浮点类型的啊,这块呢,它自动的就是个浮点类型了,所以前面我们这个会画用户变量呢,没有去指明它的类型。
17:16
啊,那我们这个局部变量的话呢,是需要指明它的类型的啊,这是它的一个这个区别啊,一个区别好这呢是我们的一个声明的方式啊,那声明完以后的话,紧跟着我们是不是可以去交赋值了是吧?这个赋值的话呢,我们有两种方式啊,这个我们CTRLC一下。啊,这个是哎赋值,哎,方式一啊,比较简单的方式啊,就直接呢,我们就给他了一个值,这叫方式一,那方式二的话呢,就是我们这个需要呢,哎,通过这种查询语句呢,找到一个你想要的这个值呢,然后付给我们当前这个局部变量啊这就属于这个方式二。啊,这这个呢,具体你要用哪个的话呢,你就具体问题具体分析了。啊,具体问题具体分析好,这个就是赋值,然后后边呢,是一个具体的使用,哎,或者我们叫一个查询,哎,就是通过这个select这个方式呢,去使用就可以了。
18:05
比较清楚这个呢,就是咱们关于这个呃,局部变量的这几个知识点啊,下面咱们首先给大家举一个例子啊。好,我这块举个例子,咱把这几个呢,相当于给大家做一个演示啊,那要想使用的话呢,咱们首先说了,是不是必须在这个存储过程和存储函数当中,是吧,哎,Limit。哎,这个。分号结束,这呢,我们去创建一个存储过程吧。哎,这样是吧,哎,我们去test一下啊,我们就variable了啊,我们这么着,哎,然后呢,Begin,哎,最后呢,End结束,哎,这样。好在这嗯,在这呢,我们首先呢,是要声明是吧,哎,局部变量啊,应该用我们这个符号啊。来声明这个局部。啊,变量。好,哎,这个呢,我们说到了是用这个declare了,Declare呢来进行声明的,比如我这块呢,就是declare这个A啊,是个int类型的啊,哎,你要有默认值呢,你就写上这个default,比如说是个零,那这一个,然后我再去declare一下,这个B也是个in类型的啊,比如说这个default,我要不写的话呢,默认值它就相当于是个no是吧,就没有赋值的意思了。
19:18
嗯,这块呢,我们有123呃三种方式呢,那这块我就写三个吧,咱们再去declare一个。嗯,这块呢,比如说我们想查询嗯,某一个员工他的一个姓名吧,啊,那我们这个declare呢,我们叫EP的一个。哎,Emp的一个name是吧,是一个哎water差类型的啊,长度呢,比如是25 OK那就可以了。啊就可以了哈,行,哎,上面这块呢,我们稍微提一下,如果说呢,你这两个变量它的类型一样,默认值如果也一样的话呢,哎,大家可以考虑呢,去做一个合并。啊,比如说declare a啊这个A逗号B,然后呢,是一个int类型的,哎,你要是都有这个默认值是零的话呢,你就可以可这么着去写也OK啊。
20:03
啊,这块我就分开写了啊,理解一下好,这呢相当于我们一个声明,然后呢,下边我们提一下这个具体的赋值。哎,赋值的话呢,我们,哎刚才提到了是不是用这个S的方式啊,哎,A呢,我们可以呢,先直接负一个值,这个值一,然后set一下这个B呢,哎冒号等于的方式也行,哎,我负个值呢是二。这个呢是针对他俩呢,我们就做了一个操作,然后下边呢,针对于我们这个EP这个name啊,我们可以这样,咱们是得用这个稍微复杂一点的,是不是就这个select呀。嗯,Select一下啊,这个我们叫last name,然后into到我们emp这个name里边,From employees这个表,说where啊employee ID等于啊101,比如我们这里边呢,就查询161这个人的一个lastname,把它放在我们这个哎,旧变量里边。啊,这就可以了是吧,那就可以了啊嗯,这个呢,相当于是个负值的,然后最后呢,我们相当于是一个具体的使用吧。
21:03
哎,使用呢,我们就做一个简单的select就行了,我查询一下咱们的A逗号B,还有呢,我们EP。啊,这就可以了,好,那这里呢,咱们把这个呢,整体上做一个选中,哎,我这块呢跑一下。哎,成功了是吧,好,成功以后呢,我们下面呢,是不是来调用一下我们这个存储过程啊。看没有问题啊,存储过程调用是不是用car啊,还记得吧,哎,Test一下我们这个腕,哎这样。哎,没有问题是吧,好,我们这时呢,选中,哎我们跑一下他就出来了,那此时的话呢,我们A呢,那就是一啊B呢是个二,然后这个呃,员工的101这个人呢,他这个last name呢,哎就叫他。啊,这就没问题了。好,这里边的话呢,大家去熟悉一下我们这个局部变量,它存放的一个位置啊,声明的一个位置,然后呢,它这个三个哎过程是吧,哎,这个是第一个过程。啊,这个是我们的第二个过程赋值,哎,第三个过程呢,哎,它的一个使用啊,这就行了,好呃,基本上呢,这块给大家做了一个演示,然后下边呢,我就呃又写了几个这个题目啊,通过这个题目的话呢,大家再练一练啊,大家再练一练,熟悉熟悉,来我们看一下这里边儿一共我写了是有三个这个题目啊,咱们来做一下这几道题啊。
22:17
好,首先呢,我们来看一下这个第一道题。声明局无变量啊,只要一看到声明局无变量了,是不是首先呢,你肯定得有呃,支撑的你这样的一个存储过程,或者是存储函数是吧,哎,Limit。呃,Di limit啊,封号结束啊,这块呢,没有具体的去说的话呢,我们就把它创建成一个存储过程吧。行,嗯,哦,这里边儿也没有说这个具体的叫什么啊,我这叫test,比如说叫。啊,就这样吧。那这样的。一定。真的。好在这说呢,声明就变量分别并分别复制为员工表当中的employee ID为102的lastname和这个salary,啊,这里边涉及到是不是有两个具体的变量啊。
23:03
行,那这呢,我们就做一个declare。嗯,我做一个declare,嗯,我们声明这个局部变量一个呢,是复制它的这个last name的啊,那我们就是emp叫name吧,是一个water类型的啊25。啊,这是一个。嗯嗯,再一个呢,是他的这个工资啊,我叫SL吧,是一个double类型的啊,比如说十逗号二,嗯,这个呢,你可以去写上一个叫比如说default啊,哎,然后零啊或者0.0啊也都可以。哎,这呢,相当于是他的一个呃声明啊,这给我写上一个注释吧。好,生平发以后呢,我们下面来考虑这个负值。哎,赋值,那我们这里边就把这个102这个人的last nameme和salary呢,赋给我们这两个变量就可以了,哎,我们选用的是不是就是这个select啦。Select叫lastname,哎,逗号啊,Salary。
24:04
哎,然后into到我们emp这个name,还有我们这个C里边from employees是吧,Where一下。啊employee ID等于啊102啊这个人好,这呢就相当于是个赋值的过程,然后下面呢,相当于是具体的使用,哎,这个呢时候咱们的使用呢,就是简单的去查看一下,哎,所以我就用这个select了。哎,查看一下我们的,嗯谁呀,Emp。EP。Name,然后呢,还有我们这个叫ICL是吧,哎,咱们定应的这两个变量啊,就只在咱们这个,呃,存储过程当中是有效的啊,那你出了以后就没有效了,所以我们必须得在里边呢,把这个查询呢,我们得看一下才行,行,那这时候呢,我们把它这个选中呢,做一个执行。嗯,可以了是吧,来我们下边去调用一下咱们这个存储过程。哎,这样。啊,这个我们就直接呢把它哎这块呢拿过来CTRLC一下,我们再来一个call是吧。
25:04
哎,这么着哎就可以了,好,那我们这块呢,选中做一个执行,那这就出来了,这个呢,就是对应的咱们102这个员工,他的lastname和他的这个salary。啊,大家你也可以自己呢,去查一下是吧?啊select一下这个a last name。Salary from from。An employees。再说where一下。啊,Employ employee ID啊等于啊102是吧,好,我们这个看一下,你看跟这个是不是一样的啊,走起啊是不是一样的呀,好,没有问题啊好,这呢是咱们这个举例的第一道题,然后呢,接着看这个举例二啊。加第二啊,这个我们把这个呢CTRLC啊拿过来。放在这。说生明两个变量,这个并求和呢,并打印啊,分别使用绘画用户变量和局部变量方式去实现啊,这是提到两种方式啊好,那我们这个先说一下这个方式一啊,使用我们的绘画用户变量。
26:05
看这个啊,这个呢就比较简单了啊,生明俩变量求和并打印啊,那我们就直接呢,嗯,我就set了是吧,哎,接着呢,我们这个绘画用变量是一个艾这个开头的。嗯,求和并打印,那我们这时候呢,哎,注意这时候我们去定义变量的话呢,咱们跟之前你定义过的啊,在咱们当前那个绘画当中,比如我出现过这些了,大家尽量啊,是不是就把它给递开啊,啊这个要注意一下啊啊比如说这个叫哎V1了啊,我们定一个值,比如叫10SET一下,这叫V2啊,我们叫20,这个加不加这个冒号呢,都可以的。然后接着让我们去求和是吧,哎,我们加一个比如result啊,它呢,比如冒号等于啊,这个加不加冒号都行,哎,说我们这个V1呢,加上我们这个V2。这样一看呢,你一个艾特符号操作的开头的就是我们自己用户定义的啊两个的话呢,就是系统的用这个这个变量是吧,那比较清楚好定义好以后呢,我们下边呢,是不是进行一个。
27:03
啊,相当于一个叫查看是吧。直接呢去select就行。哎,Result啊,这就妥了啊好,那这块呢,我们比如说把这个呢去做一个执行啊,就有我们这个result这个值了,那我们这这块呢,再去做个查看啊,就有30是吧,好这呢,就我们说这个方式一。采方式一啊,比较简单一些,然后下面呢,说一下这个方式二。好,方式二的话呢,我们就使用一下这个叫局部变量。哎,使用这个局部变量。好,那只要一提到这个局部变量呢,这个呢,首先啊,是不是又对了面条了。OK啊,嗯,这块呢,我们定一个存储过程吧。嗯,OK,嗯,去求和的啊,那我们这块呢,就是。嗯,定义两个值,我们叫I的Y6吧,比如说。
28:02
啊,Begin end,结束,这样。先把这个大框呢,先这个写出来,哎,然后首先的话呢,是不是先又是一个声明对吧?Declare。好,Declare的话呢,我们去声明一个叫,嗯,这个我们声明叫什么呀,比如叫Y61吧。是一个int类型的啊,默认值呢,给不给都行了啊,我就不给了吧。哎,然后呢,哎,如果都一样,那你就直接呢,这块Y61,然后再逗号一个Y62。理解是吧,啊这呢就叫做声明,然后下边呢叫做赋值,嗯,这个赋值呢比较简单,因为我们也用不着说,哎从哪个表里边去取得字段的值,然放到这里啊里了,所以直接我们就塞就完了,对吧,在这个Y61啊这个跟咱们上面这个复值的方式呢,基本上就一样了,我这呢写这个十,然后塞在这个Y62呢,我们冒号等于一个又来一个100吧,哎,这样这就负值是吧,然后接着我们相当于是。嗯,并求和啊,这个还有一个求和的一个操作呢,求和的话呢,我们就哎再来一个吧。
29:03
哎,Set一个,嗯,我们求和,嗯,我们来一个这个some吧,诶,Some。二。哎,等于,哎,我们要这个Y61,是不是加上我们这个Y62。是这样一个意思吧,啊嗯,这样的话呢,我们前面呢,这块也逗号一下啊,我们就定一个这个sum,哎,这个sum呢有歧义,那我们就要哎,Some v l吧,哎它一下是吧,哎,CTRLC。哎,这么着啊,那么前面这个sum VR的话呢,哎,相当于这三个变量,我们都没有写具体的默认值啊,相当于都算是这个no啊,然后在这呢,是把这两个值呢,加到它这个身上了,下边我们一个呃使用哎,我们只是想看一下。哎,咱们这个sum,哎,这个VR的一个值啊,这就可以了。没问题是吧,好,那此时呢,我们选中到这,哎,走起。成功以后呢,我们这时候呢,就调用一下我们这个存储过程。
30:03
哎,这样确动过程,哎这么着这么着一下就可以了,哎也不需要传参数啊,走起,哎这个一百一啊没有问题。好,这呢,就是我们说的用这个方式二啊,局部变量的方式呢,去做的演示,这个我们就不谈,说哎呀,你这个简单,这个复杂就不谈这个事儿了啊,这个就是使用的场景是不一样的啊,所以我们就没有什么可比性。好,那接下来的话呢,我们看一下这个练习三。啊,这个三的话呢,这个稍微的长一点,来我们看一下这个题目。首先呢,这里边儿叫创建一个存储过程,行,那我们先不看具体这个题面要求啊,咱们先把整个这个框呢给它搭起来。哎,然后create一个啊,Procedure。啊,这个名字呢,也给我们起好了,就different啊,Salary啊,就他好这么着说呢,查询某员工和他领导的这个薪资的一个差距啊用in的参数,嗯,In参数是因这个EPID接收员工的一个ID,然后用out参数呢,返回他们的一个呃,薪资的具体的差值的差值,哎,这个用out来表示的,好,那这块我们用in一下。
31:12
放一下我们这个员工的ID啊,是个int类型的,然后out这个参数呢,返回他们的一个差值。啊,它叫这个,哎变量名呢,也给我们提好了,我们就用它这个给好的变量名,嗯,薪资的一个差值呢,是不是就是个double类型了,哎,我就这样来处理没问题是吧,然后begin一下,然后最后呢,End OK,好在这里边呢,我们看一看。我们怎么去做这个事儿呢?嗯,在这个过程当中,我们需不需要去定义这个变量呢?啊,在这个题面当中啊,我们分析分析。嗯,我们有这么几个事儿需要去做的啊,相当于是一个分析的过程。这里边呢,给了我们是不是员工的这个呃ID了是吧,哎,那我们这里边可以做的事是不是查询出,呃是不是这个EPID这个呃员工的一个工资对吧?啊这是我们说这这是一个需求了,我这样子吧,这个需求,然后呢,我们接着呢,需要干什么事呢,是不是要查询出。
32:11
啊。EPID这个员工的管理者是吧?哎,管理者。啊的这个。嗯,管理者的什么的,它那个ID吧。哎,管理者ID呢,我们得查出来,然后呢,我们需要呢,是不是叫哎查询,哎管理者这个ID的,哎,就是相当于这个管理者的他的一个工资没问题吧,哎这个工资呢,我们也需要查出来,然后呢,接着怎么着呢,是不是计算两个工资的差值啊。哎,工资的这个差值。哎,就是这样的几个事儿啊,就这些事儿呢,这几个事儿呢,都是需要我们来做的,那么在这个过程当中啊,实际上我们就可以考虑呢,去定义这个变量了。啊来我们这块呢去呃,声明这个变量啊,在实际问题当中啊,大家有可能呢,不是说我变量咔咔一写写了四个,然后下边就用,很有可能就是我们想到了俩,我们下边用的时候呢,发现诶好像还缺,那我们回来再补,通常呢还都是这样子的,比如说呢,像我们刚才提到说查询这个EPID这个员工的一个工资,那我们这块想到他了,那咱就先把这个呢声明出来。
33:18
比我这块量。啊,这个是我们声明是咱这个员工的他的一个工资是吧?啊员工的一个SL啊,是一个W类型的啊default这个写上也行啊。哎,Default这个我们比如说是0.0,这个呢,是我们来去,呃,相当于来记录员工的工资是吧。哎,记录员工资,那现在的话呢,我们是不是,哎,你能想到的就是再去,诶找到一个我们记录这个。哎,什么呀,管理者的这个工资吧,啊declare哎,我们叫MGRR的一个SR啊后边这个呢都一样。啊,CTRLC一下CTRLV,它是来记录这个管理者的。这个工资行目前呢,我们说就想到这两个变量,那我们就先写俩,接下来呢,是不是要考虑这个赋值的,这个赋值的话呢,就不是我们直接赋个值,而是说呢,是用我们这个查询语句,然后呢,哎,查到的某个结果呢,赋给我们这个变量,所以我们用这个叫select是吧。
34:13
Select查询指定ID员工的工资啊,我们select salary啊,然后into PMP的r from employ employees,然后where。啊,Employee ID呢,等于是我们的PD啊。哎,就是我们这个,哎传进来的这个参数。哎,这样,哎,通过这样一种方式呢,我们就查到了你这个员工的这个工资了。哎,把这个工资呢,放到我们这个,哎,局部变量里边啊,这个就没问题了,好,哎,这个是一个事儿啊,然后呢,我们下边是不是要把这个管理者的这个工资找到是吧,那管理者工资呢,按照我们的思路的话呢,是不是也应该类似这样去写,但是现在的重心就是我们需要找到管理者的ID吧。对吧,我们现在只有员工的这个ID啊,通过员工ID呢,找到管理者的ID。
35:01
嗯,其实也不复杂,哎,我们这块呢,哎,有这的话呢,咱们想到咱还可以呢,是不是再去定一个变量啊。哎,比如说我这块呢,叫declare一下。呃,管理者的。MG2是吧。管理者的一个ID啊,这个ID呢,是个int类型的啊default我们写个零吧,哎,这个我们是记录。哎,管理者的这个ID,诶这样子,哎管理者ID我们怎么获取呢?哎,其实也比较简单,我们就找到哎manager。ID它是不是into到我们这个MG这个ID里边from。Employees where?Employee ID呢,等于。哎,EP_ID能看懂吧。这个呢,我们就取出这个员工,哎这个员工呢,他的这个manage ID呢,哎,就取到了啊,我们在员工表里边呢,前面呢就是员工的ID,后边呢,是不是就有他这个管理者ID,哎,这就根据员工ID找到这个管理者ID,把这个管理ID呢放到我们这个变量里边看就可以了,好那么我们这个变量呢,就也有值了,然后再接下来的话呢,我们就可以这样去做了,哎,Select其实就跟我们这个思路呢是一样的了。
36:15
啊,管理者ID找到了,实际上呢,某一个员工的ID是不是就是这个管理者ID了,我们就找那个管理者ID呢,对应的那个员工ID的工资其实就行啊,就类似于我们把这个呢,CTRL一下或者拿过来。啊,Select a salary into,这个就是我们管理者的这个工资了,是吧?哎,From where啊,Employed是谁呢?是不是就我们刚才正好得到的这个,哎,管理者的这个ID了。这个有点绕不。啊,大家晕不晕?哎,我举个例子啊,Select,我们来个星吧,From employees。好把这个呢,我们选中了做个执行,举个例子啊,比如说。咱们一会儿测试的话呢,我这个EPID,咱们就拿这个,比如说102来说吧,啊,这个呢,就是102啊,这个换成个红色的啊。
37:04
他呢是102,然后呢,我们这块呢,相当于是不是找到102这个工资了,哎,这个salary写到这102这多少,你看一下一万七是吧,哎,这呢,我们这个一万七呢,是不是就放到这了。然后再接下来的话呢,我们根据这个102放到这儿看一下,你这个102这个员工他的这个管理者的ID,好往后走是不是管理者ID呢,你看是100吧,哎,所以这块呢,我们这个变量是不是100就有了。啊,它就有了是吧,好他有了以后呢,再下面。哎,我们这块呢,去查询一下啊,员工是ID呢,是100的这个人的一个工资,诶这不就找到这个员工啊,100就是这个100,不就是对应这个100吗?他的这个工资呢,你看是24000,哎,相当于我们这个两万四呢,我是不是就写到这里了。就写到这儿了吧,这就两万四呗。那这个都出来了,最后呢,我们是不是希望呢,把这个值是不是给他,哎,填充上啊,让这个值呢,就出去是吧?哎,下面又是个负值啊,相当于我们去set一下谁呀,咱们这个变量CTRLC一下,让这个变量它的这个值呢,等于谁呀。
38:07
是不是等于我们这个管理者的叫MGRR它的一个SL呢,去减去咱们EP的啊一个SL啊。是这意思吧,好,那么整个呢,咱们这个过程呢,相当于就该结束了。啊,现在就结束了啊好,那我们此时呢,选中啊到这儿啊,心情还是有点激动的啊,来我们选择执行。哎,这就可以了啊,没有报错啊好,那么接下来的话呢,我们这里边去做这个测试啊,相当于咱们去调用。在存储过程。靠一下是吧,这个问题啊,哎,调用一下我们当前的这个啊,CTRLC啊,咱们粘过来好这么着一下啊,那么这里边呢,需要我们传递来的一个呢,叫做EPID。啊,需要传进来的,你可以直接写这或者呢,咱们这块我去定义一个啥呀,这是不是就相当于是咱们前面讲了一个调用存储过程或存储函数的时候,我都这样用过啊,哎,我这样写的,大家还记得我们当时这样写过吧,哎,这个呢,从现在来看呢,相当于就是我们用的是哎,绘画用户变量吧。
39:10
哎,互化用变量,嗯,咱们就拿这个102来说吧。哎,我就把这个变量呢传进来,哎,CTRLC一下穿过来。哎,逗号一下,呃,然后呢,这块呢,还有一个是不是叫differ salary是吧?哎这个时候呢,你可以直接在这就写一个叫呃,Dif,然后那个salary啊或者的话呢,大家你你要是提前给盯一下呢也行。啊,也行。就是这么着,CTRLC啊,CTRL给粘过来,嗯,只不过这时候你要负个值的话呢,咱们先复个零吧,哎,放进去之后呢,哎,它呢就一顿计算啊,最后呢,把这个值呢,是不是就给做了一个更新啊,更新完以后呢,你可以再去做一个是不是一个查看啊,哎,咱们这个DFSCL就可以了。啊,这个呢,诶我们整体选中,诶刚才呢,咱们这块呢,算的是多少钱,上面是上面是这个17000,下边是两万四吧,啊那应该是差7000块钱是吧?哎,我们选中了,走一下啊。
40:02
你看就是差7000块钱。啊,那这个呢,你也可以改是吧,你改成别的,你看看这个103的,哎,走起。哎,8000块钱是吧,哎,这个就哎,你可以通过这个呢,再去做个演示啊,8000块钱看103走一下看看。103他自己的工资呢是9000,他的管理者呢,是102啊102在这儿,哎是这你看这块呢,是不是差着就是8000块钱。啊,没有问题,好,那么通过咱们刚才这样的一个讲解呢,呃,大家应该能够知道了,我们如何呢去定义啊,绘画用户变量和我们说的这叫局部变量啊,他们的使用场景啊,哎,是完全不同的啊,那到底有哪些不同呢?简单的来做个总结。哎,这个呢是当前绘画有效,这个呢,只在我们begin和end中有效,这个呢,哎,当前绘画的任何位置都可以去使用。那这个的话呢,只能是在我们比begin和N当中呢去使用啊,定义的位置呢,是放在这个首行的啊,这个呢你随便啊在哪想用就随时去定义啊就可以了,加上我们这个X服这个呢就不加了啊这个呢没有类型,这个呢有类型这个咱们都提过了是吧。
41:06
啊,那么实际当中大家在用的话呢,呃,应该说呢,咱们在这个,哎,存储过程和存储函数当中啊,咱们定义局部变量的场景呢,要更多一些,哎要更多一些,那对于我们说哎什么呀,这个绘画。会画用户变量呢,这个相对来说咱们使用的场景呢,要就是自己定义的机会呢,要稍微的少一些啊,少一些啊,但是一旦你定义了以后呢,在整个我们这个当前这个连接当中啊,这些变量啊都有效。啊,你比如我们这块盯着它,我拉到这个,最后我现在去获取它的这个M的值,能获取到吗?肯定可以的啊,肯定可以啊,因为当前会话呢,始终没有关闭啊。好,那么这样的话呢,咱们就整体的把这个变量这块呢,就给大家交代清楚了,哎,那么对我们有指示意义的就是这个系统变量,我们到下天当中还会去用啊,还是去用,到时候呢,怎么查看,怎么修改,大家呢,你得熟悉熟悉啊,然后这块的话呢,针对于我们讲的这个局部变量呢,哎,咱们在下边包括涵带这个流程控制当中,咱们还会去用啊,整体上链的还相当于是这个存储过程和存储函数他们的这个函数体,或者是呃,存储过程体的这个问题。
42:12
OK,好,那变量呢,咱们就说到这儿。
我来说两句