00:00
好,那关于存储过程和存储函数这一章的这个知识啊,咱们就说到这儿,哎,下面的话呢,咱们来看一看这一章的课后练习题,那我们找到这个练习章节练习,哎,存储过程与函数好打开。那这块呢,课后练习题的话呢,我也是分成了两部分,这个先呢来看一看这个存储过程练习,然后呢,我们再来看一下这个叫存储函数的这个存储过程这块呢,我一共是列了有八道题,哎,存储函数这块呢,有四道题,行,那这块呢,大家先练一练,然后我们到这个下一章啊,讲这个变量流程控制和U标对吧?诶,下一章这块呢,我们其实还是在。存储过程和存储函数当中呢,去做的这个练习OK,好,那这块呢,我们来看一看咱们这张练习,呃,首先呢,咱们把这个文件呢,先创建好,哎,先把文件造好。回到开头这块啊,CTRLC一下,然后我们粘过来,哎,拿过这个存储过程与函数的啊,课后练习好没有问题,这块呢,我们先CTRLC一下,CTRLS啊先过来我们保存一下。
01:00
可以了,行,那这块我们就先来看一下这个存储过程的这个课后练习题了,存储过程这块呢,一共是有八个小的题目。啊,这个都是我这个一个一个的设计的啊,好拿过来,然后我们放到这块,那我们就从头开始看了。那么整个呢,咱们这一章里边这个课后练习题啊,咱们放在一个独立的数据库下呢,咱们去执行啊,独立数据数据库,所以我们这呢,先去create一个database,叫TEST15PROCEDURE和这个function是吧?哎,选中以后呢,我们做一个执行。嗯,可以了,然后接着我们去使用一下咱们当前的一个数据库,好这块呢,就做了一个切换行,那这块你也可以F5刷新一下,这里边呢,其实是目前啊表啊,这个视图啊,存储过程,存储函数看啥也没有是吧?好,那下边我们来看这个第一道问题,说创建存储过程,然后呢叫insert user。传入的用户名和密码,然后把这个数据呢,插入到我们的dmin这个表当中,诶这个dmin这个表呢,这个没有是吧?诶这块呢,已经给你提供好这个创建的代码了,这个你看创建个表这里边呢有ID,有username,有password,这个ID的话呢,是主键自增长的啊用户名呢,这块呢是一个非空的,密码呢也是一个非空的,OK。
02:09
诶,密码的话不能设置成unique吧。啊,不能啊,这个每个人的密码没说一样不一样啊,这你要这个还设置有内核不合适了,行,那这块呢,我们选中做一个执行。OK行,这时候我们这个表呢,就已经有了F5,刷新一下看已经OK了是吧,这个表里边目前呢,实际上是没有数据的,咱们可以呢叫select星from一下我们叫admit。来我们此时呢,选中执行一下,没有任何数据行,那下边呢,我们通过一个存储过程呢,这个创建一下,然后呢,专门就是往这个嗯,Ain这个表里边呢,去添加数据的啊就这样个过程,好那我们看怎么写呢,首先呢,Limit是吧,那这呢,我们用这个Dollar也行,双斜线也可以,那最后呢,接着我们把这个再改回去,是这意思吧,好,然后在这块呢,我们就可以去create procedure。
03:00
OK,这个函呃,存储过程的名字啊,已经帮我们记好了,那咱们就直接呢,CTRLC呢,我就打过来了,说传入用户名和密码,然后呢,插入进去,传入呢,相当于我们这时候呢,是不是就得这个in的参数啊没问题,用户名呢,我们比如说叫user。嗯,就叫user吧。然后呢,呃,这个用户名的话呢,你看一下这我们要把这个值呢,是不是要写入到我们这个字段里边啊,人家的类型呢,是我差15,那这块我们在写的时候呢,那我们建议呢,跟他就一样了,那个同学说能不能不一样呢?嗯,也可以不一样,那不一样的话呢,大家推荐呢,是不是一般的你这个要小一点。你像如果呢,我们这个船的U色呢,假设写的是25,我们要超过这个15这个长度的话呢,我们往这里边引四的话呢,是不是这个呢,没有那么长就可能出问题了是吧?哎,OK啊,需要注意一下这个问题,这是一个,然后呢,我们再去传一个参数啊,传一个什么参数呢,就是对应的这个密码吧。或者说我这块我刻意的把这俩写成一样的行不行呢?来咱们看一看,这个我也叫username,然后这呢是一个叫PWD啊,这个也是一个what类型的,这个长度的话呢,我们诶啊这个是25,那我们这呢也写成25吧,就这个呢,写成十五更短一点是可以的,因为你传进来这个长度呢,呃,不长于15,然后呢,你要是隐射到这里边肯定能放得下,但反之的话呢,你这个要写成个35,我们要传的这个呢,假设是长度为30,这个呢,是不是就塞不进去了。
04:20
啊,有这么个问题啊,大家稍微关注一下,那我们这呢,就传入这两个参数好了,那么接下来的话呢,我们是不是就begin了。啊,对于咱们这个存储过程来讲呢,我们说也可以去设置它相关的一些约束或者叫特性啊,Characteristic是吧?啊这块呢,咱们就不写了啊,我直接呢就来一个这个begin了,OK begin,然后呢,后边是不是end呢,Dollar for,收尾是不是结束啊没有问题,行,在这里边我们去写,那我们呢,就要写一个是insert操作啊insert into呢,咱们就in。在这里边儿呢,我们只考虑这个叫username和这个PWD这两个字段,因为呢,我们这个字段呢,是自增长的,我们就不管了values,嗯,Values呢,往里边填的呢,是不是就我们这是一个。
05:03
那字段啊,VALUE61个,他一个呢,是我们这个PWD啊。没有问题是吧,行,那这样的话呢,我们就把这个相当于存储过程呢,就给它,诶写完了,写完以后呢,我们这时候呢,选中,哎,我们执行一下。可以了,那这块呢,你也可以呢,去F5做一个刷新,你看我们这个存储过程是不是就多了一个啊好,那这块我们开始呢,是干什么去调用吧。来调用。调用存储过程的话呢,咱们使用的是不是叫靠啊没问题,然后调用一下我们这个啊这样子去操作了,然后呢,这里边呢,我们需要传入两个具体的值的,嗯,你可以呢,直接就写到这块也是OK的,那它是字符串比我们这个叫Tom了。然后下边是他密码,我叫ABC123吧,那这块呢,Tom对应的是它,然后这个呢,对应的是这个PWD没问题是吧?好,那此时呢,我们选中了做一个执行。嗯,好了,执行完以后的话呢,我们再去SELECT1下来,我们走起好此时呢,大家也会发现我们这个in表当中是不是就添加了一个数据啊,那这是没问题的,诶或者的话呢,大家你也可以呢,把这两个咱们现在相当于是直接就把这个值就写到这了,你也可以把它定义成这个变量的方式。
06:10
啊,变形成变量的方式定义变量这块呢,如果大家还不是特别熟的话呢,咱们下一章呢,就开始重点给大家讲解的,其实就是这个变量相当于咱们提前呢用了用啊这个呢我就不写了,咱们下边呢也有这样的练习啊,下边呢再说好,那我们接着看第二个题目。说创建这个存储过程叫get phone传入女神的编号,然后呢,返回女神的姓名和女神的电话,哎,这事挺好哎,输入个编号,然后女生电话姓名就有了,哎,姓名电话就有了,你就可以打电话了是吧。啊勒勒,你是另一说,哈哈,行,那这个时候呢,涉及到了一个新的表,这就是叫做这个女神的这张表,这个表呢也没有,那我们呢,就把这个表呢,创建的这个操作呢,都给你写好了,有他的ID自增长的,然后呢,他的姓名,电话号码,还有他的一个生日啊行,那此时呢,我们选中呢做一个执行。好,这个表呢,我们就造好了,接着的话呢,我们把这个表中啊去添加一些数据,便于呢,我们这里边去做这样的一些操作了,这呢我一共添了有六条数据啊,我放了一些呢,就是从我的角度认为啊,这个感觉还算是女神的啊,当然最后一个呢,其实是呃,有点违心的啊,迎合一下咱们这个九零后的同学哈,这个我不知道杨超越在大家这个心里边儿是一个什么样的一个。
07:23
地位是吧,不太懂啊,当然前面这些的话呢,应该算是,呃,当然邓紫棋呢,稍微年龄小一点啊,但是我觉得唱歌还是蛮好听的,呃,像这个朱茵的话呢。这个很漂亮啊,然后孙燕姿的话呢,是我上初中的时候呢,呃,从开始听歌啊,就是开始听流流行音乐开始,然后呢,喜欢的第一个这个,呃,这个女歌手啊,这个现在呢,前段时间不还说孙燕姿是这个,有人吐槽说是什么这个不出名的是吧啊,过气的还是啥的,但是号召力还是很强的啊,铁木真等等啊。哎,那时候听she的歌啊歌。行,那这呢,我就哎放一些这个数据了啊,刚才扯了两句,那我们就insert into一下执行一把,然后呢,我们再去做一个select,确保一下我们这个数据呢,你看写进去了没问题,然后呢,基于我们这个表呢,咱们下边来看这个存储过程它的一个实现。
08:15
啊,它的一个实现好,这个呢,关于存储扩展的名呢,已经给我们起好了,我们就直接呢用这个名,那接着我们就在这儿去写,首先呢,把我们这个开头结尾呢,还是先给它弄出来,嗯,双旗线都可以哈。啊,这个分号一下,然后在这呢,我们去create。嗯。行,然后这么着是吧,嗯,盖缝说呢,你传入女神的一个编号,其实就传她的ID,然后呢,返回女神的姓名和他的电话,OK,行,这是存储过程,注意行这块呢,我们就写的叫in了,传出他的编号,那就写一个ID吧,是一个int类型的,然后呢,在out传出来的是他的姓名和他的电话啊姓名。
09:00
那我们就直接写叫name吧。是一个类型的。摩差类型的,误差类型的话呢,写多少呢,你看这个位置呢,我们设置的它的姓名呢是15,所以这块我们就也写成15吧。逗号一下,然后再一下他的这个电话号码。比较缝是吧。就是这个名的话呢,这个其实没有必要跟他一致的啊,这个你自己呃,其实只要建名之意就OK了,然后类型这块呢,我们通常呢,诶倾向于呢,你就设置成是一样的吧,我们这呢,就写成叫我差。接着那我们这里边儿就开始叫。Begin。嗯,OK begin,然后这块呢,摁了一下啊,这个双斜线,好,这里边我们要干什么事呢?就是当你传进来这个ID的话呢,我就把相对应的这个name和这个缝呢,就给你返回了啊,那就相当于我们这时候呢,去select一下我们这个表里边儿的啊,咱们这个字段呢,也是叫name啊,这个呢也是叫phone逗号一下这意思吧,然后呢,From一下我们这个叫beauty。
10:05
那这张表说where呢,这个我们叫嗯啥呀,嗯叫ID啊,说ID呢,等于ID,这时候可能有点懵了,这个ID的话呢,是我们这个表里边的ID,这个ID呢,是我们行参的ID啊,所以你可以这么着一下吧,我们在这儿比如写个B。那这个呢,就是b.ID是吧?啊,那你这个呢,也可以理解成是我们这个表里的这个name和我们这个表里的这个缝。没问题是吧,然后呢,把这两个值呢,是不是写入到啊,我们叫into到咱们一个呢叫做name这个字段,还有一个呢,叫做这个phone这个字段啊可能大家呢,觉得这俩变量是不是我们这块呢,加个括号呢,咱们先加上看一眼好,那这时候呢,我们查完数据以后呢,把这俩就写到这两个变量里边,哎,然后最后呢,摁的结束OK了,哎,我们选中了执行一下。好,大家看这时候呢,是不是就报错了呀,报错呢,它的位置呢,就在我们刚才说的这个位置上,那这时候呢,我们把这个括号呢,给它去掉。去掉这个括号,来,我们再选中执行一把。
11:01
啊可以了,所以这块呢,这个括号呢,大家就不要加了。哎,注意就不要加了,行,嗯,这个完事以后呢,下边我们就开始谈,这个叫调用。调用的话呢,我们就直接扣了。哎,去get这个缝是吧,就这么着,哎这样行,那我们这边呢,比如我就直接写了一个一把它呢就传进去,接着的话呢,我们这块呢,再去写俩变量,一个呢叫name啊,一个呢叫做这个缝。哎,当这个调用完以后呢,我们就可以获取它这里边的这个数据了,那我们就是内幕一下。奉一下是这意思吧,好,那这时候我们选中的执行,哎,大家看我这个一呢,写的其实就是第一个人啊,朱音就出来了,朱茵的这个姓名和他的这个凤啊就OK了,然后你也可以呢去调整,比如我们改成这个三啊选中。执行,哎,田馥甄啊,就出来了,好,这个呢,是咱们这个第二道题目,过了再看第三道题。创建存储过程,它传入两个女神的生日返回日期的一个间隔大小,就是两个这个日期之间呢是有多少天,哎,就是这个意思,这呢需要借助一下我们前面讲过的这个单行函数来就行,那首先呢,我把这个头尾呢给它弄出来啊,Limit。
12:13
啊,这个你用它也行啊,然后the limit。行,然后呢,我们这个分号结束在这呢,去create。啊,我们procedure。没问题是吧,然后呢,我们把这个呢,哎,存储过程的名呢,放在这儿传入两个,那就其实是对应的两个in了,嗯,两个呢,生日了,我们写成叫birth吧,BIRTH1什么类型呢?日期类型的嘛,我们叫date类型了,年月日这个十分秒。就别传了,直接呢,我们就年月日了,然后呢,再是一个阴。For,那我们写个二还是个date类型没问题是吧,它这块呢,提到这个返回了,那我们这块呢,就得再定一个out型的一个参数了。返回它的一个间隔,间隔呢,我们比如叫my date,叫some吧。
13:02
Date啊这样,嗯,那这块呢,是日期的间隔,那就是一个int类型吧,那多少多少天是这意思吧,好,那下边呢,我们就begin。啊,最后呢,N去结束。好,那我们看一下这里边怎么去写,呃呃,传入的是两个这个birth,然后返回它俩的这个时间的间隔,那这块呢,大家还记不记得我们用的这个函数啊,是不是就是这个叫date differ吧。啊,回忆一下啊,然后这呢,我们把这个呃,写两个参数呢,分别给大家传进去,传进以后呢,我们把它呢,写入到啊,得到的结果呢,写入到我们这样的一个参数里边。没问题吧,嗯,这个时候的话呢,其实我们from写不写呢就无所谓了,当然你肯定呢,不用写,说具体哪个表了,Beauty表我们这呢,其实说白了跟这个表也没啥关系,是我们自己传了两个日期,说白了是吧,所以这个时候呢,其实from也可以就不写了,那就这么着选中。来,我们此时选中跑一下。嗯,成了,然后下边呢,我们来看一下这个调用。
14:04
哎,调用一下,调用的话呢,还是这个扣。调一下我们这样的一个存储过程。那此时的话呢,我们需要传进两个date类型的这个格式是吧?嗯,这个呢,咱们用一下这个变量吧,比如我们直接set一下,我叫一个BIRTH1,嗯,咱们写一个啊199,比如二年的这个,咱们就按照这个日期的标准格式了。啊,这是其中一个,再去来一个。啊199,哎,我这块呢,特意的让这两个接近一点啊,这样咱们自己也可以,比如说你你你这个啥。哎,我们自己呢,也可以口算出来,大概里边有多少钱,看一下这个准确与否是吧,然后呢,我们把这两个值呢,就分别放进去,这是一个,然后这个呢,再来一个。然后呢,我们这里边儿还需要一个,那就是我们这个叫来获取这个值的这个情况是吧,那我们就直接写了啊叫some data啊data。好,那执行完以后的话呢,我们这个数据啊,其实就保存在我们这样的一个变量当中了,咱们直接呢去查询一下这个变量的值就OK了,那你呢,可以这块呢,先把它选中,执行完以后再执行它,或者呢,你就直接选中一样啊,那就是也是从上往下依次顺序呢去执行走起。
15:14
啊,这块呢,出来了是负的五十二天。诶负的格五十二天就这个日期跟这个日期,你发现呢,就是前面呢跟后边的去减的话呢,咱们就减出个负数来了。那你也可以呢,把这俩是不是交换一下啊,哎,我们这么着一下。这个呢,咱们改成一啊,这个改成二。嗯,诶可以了是吧,好,那这是我们再选中去执行啊五十二天。哎,五十二天。九二年的9月8号哦。对着呢,我我我自己懵了哈,我想着这个10月8号了,哎,对着是五十二天是吧,哎,这个晕了晕了啊好接着我们看一下这个第四道题,说创建这个存储过程是它传入一个日期格式化,哦,这个呢,实际上是一个格式化的操作了,我们传进来的是个日期返回是个字串。
16:00
啊,这块我们看一下。Dili,好,然后我们在呢,就Di limit,哎,这个分号结束。这样是吧,然后呢,我们把这个呢,诶把它呢,CTRLC。对,放在这儿。说呢,传入一个日期,那就是一个in了,嗯,传入个日期,比如我写成叫my date吧,那这是肯定是一个date类型了,嗯,只有日期了,没有十分表了,格式化成它并返回,诶这块提到一个返回是吧,返回呢,咱们就给给他整out,他要没有返回的话,咱们直接在里边就给他输出了,他返回咱们返返回一下,返回的呢是一个,呃,实际上呢,是一个字符串类型的。我差。这个呢,你看它不会特别长,或者就用个25吧。来接收好begin。然后end,结束。嗯,这块呢,我们大家回忆一下,还记不记得咱们前面讲的,把一个日期格式化成一个字串了。
17:03
就是由日期呢到字符串呢,我们称为呢叫格式化,反过来呢,你要是把一个字符串呢,转换成这个日期呢,我们叫解析,对吧?叫解析还记得怎么做吗。啊,有同学可能忘了,哎,忘了的话呢,往哪去翻知道不?哎,咱们讲这个课件的时候呢,是不是这个单元函数啊,哎,这个咱们找一下吧,单元函数的话呢,咱们讲了好多类型的,其中关于日期时间类型当中,哎,里边的有一个细节类型呢,就是关于格式化和解析的,其中呢,是不是就有我们这个,诶格式化的一个操作叫做date format,你把这个日期呢放到这这呢写对应的这个格式,然后我们就转化成是个字串了。那就这个场景好,这个我们就知道怎么弄了啊select呢,刚才看到叫date,是不是叫format呀,哎,这个函数。呃,然后呢,咱们把这个叫my date放在这个位置,然后下个位置呢,是不是就放在你对应的这个格式里呀。把这个格式,这个格式还记得吗。你看这个让我们这样去写的是吧,嗯,咱们先这么着,我先粘过来,那关键的就是这里边呢,我们要填这个具体的参数了。
18:06
啊年月日,那这个参数怎么填呢,还是回到这年的话呢,你看你想怎么表示的,这个呢是四位的情况,这个呢是不是两位的情况,然后这是月。然然后日day的话呢,在这儿。啊,这个呢,是用的它行,我们就用就用这仨吧。用这仨。那回过来,那这呢,就是百分号,一个小写的Y。百分号,一个小写的M。啊,然后百分号啊,不是百分这个这个。百分号啊,也是百分号是吧,还有一个小写的D啊,行,那这样的话呢,我们就OK了,哎,然后呢,你需要把这个查询出来,结果呢,是不是写入到我们这个字符串里边啊。没问题吧,哎,这就可以了,行,那这时候我们选中啊做一个执行。可以了,呃,那么选中执行完以后呢,我们下边呢,就开始来调用。嗯,调用一下我们用这个call。OK号的话呢,我们就直接呢写它了。
19:03
这样子是吧,嗯,然后我们需要呢,传入一个具体的一个年月日啊,这个咱们传一下,呃,传一个函数吧,咱们是不是讲过这个credit date是吧,好把它放在这儿,然后呢,我们返回的是一个字符串,看我们这块呢,用一个比如叫HR吧。啊,我我就这样写了啊,这个名呢,你自己想怎么定义就怎么定义,跟它呢其实没有关系,然后接下来我们再做一个select,哎,查询一下我们这个HTR。来我们选中啊,执行一下,哎,这就出来了。哎,这呢,就我们这块获取到的这个年月日是吧,哎,我们就相当于按咱们指定这个格式呢,做了一个输出。哎,没有问题,行,这呢是咱们说的这个第四道题,然后呢,我们接着看一下第五道题。创建一个存储过程,叫做beauty limit。呃,根据传入的起始的索引和条目数呢,查询女神表中的这个记录。啊,就这个意思。
20:00
好,这个呢,开头结尾呢,我们先是也给他提供好啊,然后在这呢,我们去create。啊,这个procedure啊。好,然后呢,我们把这个呢,CTRLC啊粘过来放到这儿。传入呢,起始的索引和条模术,OK啊,In一下,这个我们叫嗯,Start index吧,哎,这个我们写成这样的,习惯上我们在数据库中是这样来表示,这是个int类型的,对吧?哎,再是一个in呢,叫条目数,这个我们写成是一个size吧。哎,这个呢,也是一个英特类型OK。嗯,然后begin啊。N这个我们都提前写好在这。嗯,传进来,然后呢查询,那我们就直接呢去select了,查询一下星吧,哎,From一下我们叫beauty。这样一个表,嗯,Beauty,然后limit。这个呢,我们前面讲过分页对吧,然后就从这个叫起始页,然后逗号一下查询几条记录呢,我们查询size条,Size条这个记录。
21:02
哎,这就OK了。哎,这呢,就是咱们这个存储过程来选中了执行。嗯,成功了,下边呢调用。哎,调用啊,直接呢,我们去靠。嗯,把这个呢拿过来。嗯,这个呢,我们是针对于上面这个叫女神表,那女神表比如我们就从孙燕姿这块查,我们想查询这三条记录,那这个呢,是不是写索引的话,应该写成一,然后呢查三条记录,所以这块呢,我怎么写啊。哎,是不是这个从一开始我就查三条记录就可以了呀,哎这就OK了,好,那我们这时候呢,选中做一个执行,哎就出来了,哎孙燕姿田馥甄和邓紫棋OK。好,这呢就是我们说的这个第五道问题啊,接着我们来看下一个,嗯,这块呢,是这个in out的一个练习,说传入A和B2个值,然后呢,最终呢,让A和B呢都翻倍呢并返回啊就是它们都相当于成了一个二是这意思吧。看一下啊,雷米特。
22:04
哎,这块我们方号结束啊,在这呢,还是我们去create。嗯,这块呢,我们是相当于计算这个和了是吧,哎,我们是让他们翻倍的啊,翻倍的就相当是个double啊,我就这样的去写了行,这块呢,我们传进来的话,一个是in,咱们就叫A吧,是1INT类型的,然后再in一个B,诶注意这块我们说了还把这个值呢,直接就返回给他了,所以就用in out了是吧,然后这是一个int类型的,然后再in out一下,B是一个int类型的,诶没问题啊,然后begin。啊,最后呢,摁在我们收尾结束啊回来,嗯,这块呢,我们要让这两个变量的值呢翻倍,翻倍这个咋去做呀,这块呢,实际上咱们有点超纲了啊,这两有点超纲了,因为下一章呢,咱们专门去讲这个变量,嗯,针对变量呢,做这些操作,咱们这一章的话呢,其实也用了,但是呢,用的还相对来说薄一点啊像这块呢,咱们就属于这个用的这个变量了,是吧,这块又涉及到这个变量了去,这个翻倍怎么办呢?这就其实涉及到这个变量赋值的一个问题了,咱们用的叫set,先提前预知一下这个知识点。
23:10
再一下我们针对这个A的话呢,实际上你是想让这个A呢,是不是乘以个二这样一个操作呀,哎,我就这样写了啊B呢,是让这个B呢去乘以个二这样操作。哎,就这样就OK了。哎,这样就行好,那我们这时候呢,选中呢,做一个执行。嗯,这块呢,提示报错了啊,报错啊,这个位置写错了吧,应该用这个是吧,来我们选中了做一个执行。可以啦,然后接着呢调用。调用啊。哎,调用这个写上它了这个啊。调用的话呢,还是用这个扣,然后呢,去调我们这样的一个存储过程。里边呢,我们就直接写到这儿,我写个三写一个五。没问题,来,我们把它选中,哎。嗯,啊,还不行还不行是吧,我们这时候呢,因为你这是out,我们得得这么找一下啊。
24:01
呃,一下啊,这呢是一个A啊,是一个三。啊,再直接呢,我们这么着写B呢,是一个五是吧,然后这块我们因为还有一个out的一个一个行为,所以你不能直接把那个三个五呢写到这啊写个A啊写个B。啊,完了以后呢,我们再去做一个select,查询一下你这个out出来这个数据啊,这个A。七是这意思吧,好,那就是我们选中了做个直行,哎出来了,这个A呢是三变成六了啊,B是五变成十了,哎没问题。好这就可以了啊,然后下边这块呢,七跟八呢,就是关于我们提到的这个查看呀,修改呀,删除啊这样的操作了啊七呢是一个删除,删除这个题目,五当中的这个存储过程,哎,五当中这个存储过程呢,我们叫这个名。叫这个beauty limit是吧,删除的话呢,咱们说了就是drop删除什么呀,删除一个。删除它是吧,顶多了你再加上一个叫if exists啊,你要存在的话,那我们就删掉了,哎,这不就是一个删除操作吗?来我们选中了执行。
25:02
啊,这就相当于是执行成功了,你可以在这块呢,我们去看一下F5刷新,这个叫beauty limit啊,这块已经没有了,你也可以从这块儿呢,你试图的去调用一下,你看一看会不会报错。这呢说你这个呃,Procedure啊,它呢是不存在的啊,因为我们已经给它删掉了是吧?啊就它啊好再看下边这个说,查看这个题目六中的存储过程的信息。题目六中的存储过程啊,就它它的这个信息啊,这块就相当于一个查看的一个操作,这个还记不记得咱们讲的几种啊。三种吧。啊,咱们讲过这三种的查看啊,三种查看这块呢,我们呃一种呢,是类似于我们查表一样啊,咱们也是这个受受一下你create。啊,这个procedure。然后呢,把你这个存储过程的名字呢,就写到这儿啊,这个呢是一种查看是吧,就这样子,当然了,我们说在这查看呢,效果不是特别好,建议大家呢,是不是在我们这个命令行窗口这块呢,查看会更好一点。
26:01
哎,稍微的演示一下吧,这个MYSQL-U,其实咱们都说过了,还杠P。ABC123对吧,然后我们去use一下咱们当前这个数据库,叫这个TEST15下划线啊,然后方。行,然后呢,你把这个语句呢,我们就把它粘过来啊,CTRLC一下。啊回过来啊整过来,然后用这个杠G,这个时候呢,这种查看的方式呢,这个体验呢,会更好一些。啊,这是你里边的一个,这个叫什么,我们说的叫存储过程体是吧。好,嗯,这呢是一种查看,还可以呢,我们是不是还提过呢,叫show啊procedure。诶诶。哎,Show procedure叫status是吧,然后like这块呢,你要是清楚你这个存储过程的完整名字呢,你就完整的写啊,你要是记不太清的话呢,你也可以用这种,呃带这种百分号的方式呢,我们说一个模糊查询是吧,好,那这是我们选中了做一个执行啊,因为咱这里边也就他自己呃就呈现出来这一个了。
27:01
哎,同样的道理的话呢,我们也可以呢,是不是CTRLC一下,咱们在这个命令行这块呢,去做一个查看。啊,这个呢,不行了啊。赶紧回车页吧。哎,重新呢,我们再回来,哎,在这儿啊,CTRLC。这样是吧,然后呢,杠G在这呢,也可以去查看。哎,还是说的是他是吧,好,那这呢,就是我们说的这个查看的一个情况,哎,还有一种方式呢,我就不演示了,嗯,咱们在讲这个存储过程的时候呢,呃,相当于我们嗯查看在这,嗯还提到一个就是我们information scheme这里边呢,呃,这个表里边这个情况是吧?诶我就不看了啊嗯,那关于我们这个存储过程这个练习呢,咱们就说到这儿。下边呢,我们来看一下这个存储函数的课后练习。嗯,OK。来这块呢,我们找到咱们这个函数这块。哎,直接点这吧。那从这啊一直到这儿啊,CTRLC一下啊回过来我们这块呢,CTRLV是吧,诶把它粘过来。
28:03
好,那这块呢,我们来看一下这个存储函数的一个练习,哎,首先呢,也是,呃,这个使用数据库不对了啊,咱们现在使用数据库是不是这个,哎,好,那这块我们再回到上边。使用的是这个啊,CTRLC一下。嗯,用的是这个啊,那咱们把这个,哎,这个这块我也改一下。这么着是吧,哎,没问题了。好,这里边呢,我们使用的是这个数据库,然后呢,下边的话呢,诶,因为我们在下边用到这个函数的时候呢,咱们会用到这个表的数据,这个表数据的话呢,咱们现在又是对艾特硅谷DB这个下边的两张表呢,做了一个复制,好,那首先呢,我们把这两个呢执行一下。啊,这个没问题,然后把这个呢,我们也执行一下。哎,都可以了,行,那这块你F5做一个刷新,我们这呢是不是就有,哎这就有表了啊,这是咱们讲存储过程的时候两个表,这是咱们刚创建的两个表,好然后呢,我们来看这个第一道题目。
29:02
第一道题目,呃,这是针对叫无参有返回值的,说创建一个函数呢,叫它返回公司的员工的个数。哎,这是这个题目,哎,员工是吧,这块我们就用到上面咱们提供的这个表了,那首先呢,跟这个存储库呢是一样的。大家呢,记得把这个加上啊,倒数符也一样啊。And the limit。行,然后呢,再还原回去,嗯,这块呢,我们首先一上来是不是该叫create吧。Function是吧?嗯,这个名呢,已经给我们起好了啊,就它。哎,CTRLC一下啊这么着,嗯,返回公司的员工个数也没有输入什么信息啊,所以这块呢,就属于误差的了,然后下面呢,叫returns,返回原中的个数呢,我们是不是一个int类型啊啊,我就这样来写了,然后再往下的话呢,我们可以写的就是这个叫哎,我们说的这个特征或者叫这个约束。是吧,哎,就写到这儿了,然后再往后的话呢,我们再写是不是就这个比例了,哎,然后最后这N的结束啊,这用的倒导数,哎,就这个意思是吧?好,那这呢,我们比如说要没有这个约束的话呢,你就在这里边直接写我们这个函数体就可以了,返回公司的员工个数,那我们就是selected叫count星。
30:11
哎,From一下,我们这叫employees没问题吧,然后把它呢,整个呢,是不是做一个return啊。哎,就这么着,哎,这个呢,我们把它包起来,哎,放这就可以了,好,那这时候呢,我们选中啊做一个执行。哎,就可以了,哎就可以了啊,哎,如果说呢,大家,呃,你前面呢,没有过这个首次创建函数的这个事儿。啊,那这时候呢,我们要执行的话呢,咱们讲这个知识点的时候呢,说会报这个错误信息还记得吧?啊,那如果你要报这个错误信息的话呢,咱们也提到了,是不是有两种方法呢,大家去解决的。嗯,我在在哪写了,第一种方式的话呢,就是前面你加入这样的一些,哎,我们说的这个叫特征是吧?哎,加入这些特征,第二种方式的话呢,就是我们去设置一个是不是它呀,哎,下了一个global啊,这个你改成一啊就可以了。哎,两种方式啊,这个再回忆一下好,那这块呢,我们这个函数呢,相当于就创建成功了,F5刷新,然后呢,在函数这块看是不是有这个了,那下边我们就可以来进行一个调用。
31:09
啊,调用调用函数的话呢,用的是叫select,哎,注意一下我们就get一个count。哎,这就搞定了啊,直接呢,我们就选中啊,执行咱们这个员工表里边呢,有107条记录没有问题啊,就搞定了,好,下面我们来看这个第二道题。哎,线这块呢,我们把这个呢先拿过来。行,然后这块呢,我们直接呢去cor,诶function好,这块呢,已经写好函数名了,粘过来说呢,根据员工的姓名呢,返回他的工资,那杨IG呢,我们需不是需要传入他的姓名了呀,这个注意in呢就不用写了啊,在我们这个函数里边呢,相当于全是in啊,就不要写了,嗯,那员工的姓名咱们叫emp name吧,应该是一个whatar类型的,那我比如就写成15了。
32:01
好,然后returns呢,返回一下他们的工资,那就返回这个W型吧,就这么着,嗯,那下边呢,我们就直接呢,就begin。哎,然后呢,摁的结束啊,到了火收尾好这样。嗯,根据员工的姓名返回他的工资啊,我们就return,然后呢,Select,哎,他的这个工资from employees,然后where。这个姓名lastname,等于是我们这叫e name没问题吧?哎,就这样来写,所以这个核心的话呢,其实还是我们写的这个产语句,产语句呢,属于我们的叫啊核心竞争力是吧,哎,掌握核心科技啊这呢还是核心科技是他。啊,前面这个呢,都是一些语法层面的OK啊。那来吧,选中执行。嗯,OK啦,然后下面呢调用。调用的话呢,我们直接呢,就select了,查询一下我们这个函数,诶往这一放,我们要放进去呢,是这个员工的姓名是吧。
33:03
呃,员工姓名返回他的这个工资啊,这个姓名咱们你要好像说呢,咱记住的也有限,阿贝尔呢,是一个是吧,那我们就这么着查询一下吧,来走起啊,一万一啊11000,那你也可以查别人的啊,这块你直接就调他就行。那我就不多说了啊,好了,这个就是我们说的这个操作。这个完了以后呢,接下来我们看第三题。啊,这个做这个存储过程也好,存储函数也好,上来呢,就先呃,先不着急看题目了,先把这个头跟尾呢,是不是先给他搞定啊。OK,哎,Create哎,Function好,下一步的话呢,看你要干什么啊,就是换句话说呢,就是我CTRL一下每一个是不是都得这么着一下,OK,然后这块呢,是函数名啊,搞定CTRLC啊CTRLV粘过来,根据部门名返回该部门的平均工资,注意我们现在传入的是一个部门名称,返回的是部门的评估工资啊,这一看的话呢,是涉及到两张表。两张表行,我们现在传进来是de BT name。
34:03
然后呢,是一个类型。稍等。哎呀,卡死了是吧,我的电脑很少出现这样的情况呀,重新呢,我们再进来一下。来,重新再进来。他应该保存过吧。啊,就正好到这是吧,还行啊,CTRLS保存一下这块呢,我们先去传进来,叫DEP name,它是一个work char类型的。哎哟,稍等。好像不乐观。哎,咋回事呢?欢迎回话啊,这个咱们把其他这个先关一下吧。保存一下。过来。哎,在这是吧,哎,这这我把这个删了,自自己写是吧,有点紧张啊好ICR,然后呢,在这里边我们需要传进来的叫第一批的name,然后呢是一个哎。
35:06
诶。为什么呢?软件有问题啊。咱们这块呢,把这个服务咱们做一个重启也行啊,其实这块跟服务按说关系不太大啊,咱们以防万一吧,CMD一下。啊,这块呢,我们点右键啊,管理员身份去运行啊是的。咱们这是在这个呃,MYSq吧里边呢,去运行的是吧,我们叫net先stop一下。啊,这个MY是不是八零啊OK。好,然后呢,Net一下start my circle这个八零。嗯,好,这这已经重启这个服务了,收起来好,那回过来呢,我们接着这个,我们这样吧,把它删掉吧。
36:00
省得这个找麻烦是吧,好,这块我们开始来写,说create一个function是一个他,然后这里边儿呢,我们要传进来的是部门的名称啊,那这块呢,我们写一个呃,Name。啊,我差,哎这样,然后呢是长度为十五八。光传进来一个它就行了,我们返回的是平均的工资,那这个呢,叫returns工资的话呢,还是一个W型的没问题,然后呢,我们来一个begin是吧。Begin呢进来,然后呢,我们这块呢,稍微注意了,咱们要返回的是这个部门给定的名称,它对应的这个平均工资多表的一个查询,咱们先把这个查询呢先写出来。Select,我们要查的是它的一个平均的一个salary没问题是吧?诶from from什么呀,我们得从一下employees这个表,我们叫E,然后呢,Join一下。嗯,照一下我们depart。哎,这个叫D,然后呢,On一下员工的department ID等于咱们部门表的。
37:03
底盘的门台地啊,相较于咱们讲的子查询来讲,这个多表查询这块其实还行,不算太复杂是吧?哎,当然在实际场景当中呢,就怕你这个子查询和我们这个多表的查询呢,合在一起,那就比较复杂了。然后呢,我们有一个where条件什么呀,就是咱们这个部门表里边的叫department name等于谁啊。是我们叫dept的name,哎,就这样个情况,那这个呢,就相当于是我们查询咱们这个员工表的这个情况了,啊查询员工表里边呢,指定这个department name,它对应的这个先找到这个。呃,先根据他呢,找到我们对应的这个department的ID,然后呢,诶看一下这个ID里边对应的员工的这个工资是多少,这意思吧,好,然后呢,这个呢,作为咱们的是不是返回值啊,哎,就是return一下就它。那就这么着。哎,这块我们把它包起来,哎,这就可以了。呃,咱们呢,因为还没有正式的去讲变量,那如果讲了变量以后呢,我们这个结构呢,实际上可以大家重新改造一下,要不呢,大家你会发现我们现在讲的这个函数呢,是不是都是return里边包的一个特别大的一个查询语句啊,其实看着呢挺丑的,这个咱们下一章讲了变量以后呢,大家可以把这里边儿的几个题目当中的一个函数题呢,可以重构一下啊OK。
38:18
来完事了,来选中呢,做一个执行。好这块呢,说我们这个有错是吧,我们是不是还没有写NT了。哎,所以建议大家呢,你上来呢,先把这个框呢,先都提供好啊,先把框提供好来,我们选中以后呢,执行。哎,这块还报错了。啊,这块呢,是提示我们有这样的一个,呃,它哎这块因为啥呢,我刚才是不是重启了一下这个服务是吧?来重启一下这个服务,那我们此时呢,需要把刚才咱们说的那个指令呢,再去执行一遍啊这个我刚才把那个呃课件给关了,那咱们直接看一下这个咱们的这块啊。嗯,我写到哪了,在咱们讲这个函数的时候啊,一开始在这个调用的时候啊出现的这呃,创建的时候我们出现的这个问题是吧?呃,创建问题出现问题以后呢,我们在后边的有个注意啊,就这样来处理好这块呢,大家只需要呢,是不是把它呢选中,哎,我们CTRLC一下。
39:09
哎,回过来啊,这个呢,我写到这儿呢,可能怪怪的啊,大家有可能一开始在做这个练习的时候呢,就出现问题了,所以呢,我要写的话,我我就写到这个位置了啊。来我们这时候呢,把它选中了,做一个执行。可以啦,然后呢,我们再回到咱们刚才说的这个函数这块。啊,这个位置对吧?啊,你也可以这块呢,我们打开咱们的F5刷新这个函数啊,你看一下我们刚才这个呢,是不是显然没有创建成功,哎,我们这时候再把它选中,哎,执行一把。哎,可以了啊行,然后呢,我们下面来去调用。调用。嗯,调用呢,直接select。嗯,Select,我们直接呢叫DEPC这里边呢,传入一下我们这个部门的名称啊,咱们也不太清楚说这个都有哪些部门了啊,咱们提前呢这块呢去做一个查询。Select星吧,From叫departments啊。
40:05
哎,这样。来我们此时呢,选中做一个执行,这个呢就列举出来,我们这个部门表里边呢,有这样的一些部门,那比如我们就针对这个吧,叫marketing啊CTRC一下我们粘过来,嗯,我们现在需要传的一个就是它啊单引号引起来,把这个放进去,然后呢,把这个呢选中做一个执行,相当于呢,我们计算出来的就是这个名的那个部门,它的一个平均工资是吧,哎,就是9500。啊,这就可以了。好,这呢是咱们这个第三题啊,接着来看这个第四题。啊,首先呢,也是先我们先把我们这个头呢,给大家都头尾提供好。嗯。好,然后呢,Create。哎,方式OKADD啊,Lo啊,怎么着?嗯,实现呢,传入两个float,返回二者之和啊,那这个位置呢,我们就需要传一个float,嗯,先写一个值呗,那我们叫value吧,VALUE1是一个float类型的逗号啊,VALUE2啊,然后是一个float类型的,没问题吧,然后returns返回它二者之和,那这时候我们相当于是返回的还是一个float类型的,能这样理解吧,然后呢,我们接着去begin。
41:13
然后摁收尾,哎,是这个意思是吧。好,那把这个结果呢,再做一个返回,那直接就return一下了啊,在这里边我们就去select它俩的一个和value。一啊,加上一个Y62,哎,这样是吧,它就可以了,来我们这时候呢,选中那做一个执行。嗯,可以了,然后下面的话呢,我们再去做一个这个调调用。调用。Select。哎,就把这个CTRLC一下啊,我们拿过来这么着是吧,嗯,这个位置的话呢,你也可以呢,去定义变量的方式啊,比如我们这个呢,叫V1吧,哎,我们赋个值是这个啊一二点二十二点二,然后再去塞一个叫啊叫V2啊,这个用等号用冒号等号都可以。
42:04
2.3这样吧。然后呢,咱们把这两个放进去。V1。V2,那放进之后的话呢,我们就把它给返回了啊,直接呢,就相当于做一个select,直接就出结果了,应该是14.5是吧,来走起。哎,14.5就出来了,哎可以了,行,那么至此的话呢,咱们就把这个课后的这一共是八个存储过程,哎,四个存储函数的这个题目呢,我们就做完了,哎,大家呢也自己呢来写一写啊,自己来写一写。好,这个呢,就是咱们说的这个课后练习题。
我来说两句