00:00
好,那么接下来呢,我们把这个流程控制里边的这道经典案例呢给大家去讲解一下,呃,他说呢,已知有一个表叫string content,里边有两个字段,ID呢叫做字增长啊,Content呢,它代表的是内容啊,那V叉20这样的一个类型,要求向该表插入指定个数的随机字串啊,那什么意思嘞?这里边的话涉及到两个点,第一呢,就是呃,根据我们输入的这个个数啊,那么它插入对应条数的这样的一个记录啊,或者对应的这个行数,比方说我输入十,那它将插入十条啊,输入20,那就插入20条,那么第二个点呢,就是它要求呢,每次插入的值是一个随机字符串,呃,什么叫做随机字符串呢?那你比方说就是呃,我们这个字符的话呢,你可以认为是A到Z,哈,呃,那么我们这个常见的字母,母字母嘛,A到Z,那么至于插入的是A还是ad还是CD,哎,那这个是随机的啊,它这个意思。
01:00
啊,所以说这个难点的话呢,就是在这个随机字符串这个地方哈,那你像这种题的话,我们就是后面的话会用得着这种思路啊,这种思路你比方说我们做这个大量的测试数据的时候,那这个时候我们就可能会用到它,行吧,那我们就按要求来去建一下,首先呢,我们先建上这样一个表,Create table是不是string content哈,哎,那么我们呢,把这里边的两个字段给加上一个叫做I in primary k哈,然后是auto auto in CRA好了,然后呢,在内容content we差啊,那这个是20啊,那行,那这个表的话呢,我们把它给建上啊,那为了这个容错性,你可以先去drop table if,一个this string content,嗯,好吧,然后我们去执行啊,这个是建好了,嗯,那么接下来的话呢,我们再去干啥呢?哎,是不是就是开始去做那个。
02:00
存储过程了呀,Create pro c后面呢,我们加上一个呃名字哈,你比方说我们来去测试一下我们的str啊,Round round,呃,这样吧,Round str啊,Insert对不对?哎,行吧,那么在这呢,我们来去看一下有没有参数,哎,这个参数的话是不是得去传入一个个数呀,所以应该是什么模式,对了,In模式个数我们用insert count来表示哈,哎,Int,哎,行了,然后再去begin and,哎,结尾的话是到了,哎,那当然我们前面加上这个deliter啊,这个Dollar哈,行,然后呢,再往下,呃我们呢,首先呢是根据这个个数来去做一个是不是啊呃,循环插入啊,所以应该有个循环,那这个循环的话怎么去写啊,呃,他是知道这个个数的,我们可以用循。
03:00
换变了I来表示这个个数,那你就得有个a declare a intault1啊可以吧,那这个叫做我们定义一个循环变量哎来表示,哎表示我们的插入,哎,这样写哈,表示我们插入的次数行再往下加上我们的循环well,后面加条件吧,I小于等于insert can't,然后do,最后呢,End well,分号结尾,这样去写吧,然后每一次呢,这个A肯定是要加一的啊这一句的话叫做我们的循环变量是不是更新呀?好,那再往里边,那这个地方我们怎么去写呢?哎,我们要做的事情,循环体要做的事情都有哪些呢?哎,我们需要去是不是产生一个随机的字符串哈,那么我就可以这样在它的。
04:00
上面呢,先去定一个STRV叉类型,哎,那这个长度呢是16,哎,为啥呢,我希望让它先保存我们所有的字字母,比方说ABCDEFGHHI,什么j KL m Mo PQ哈,这个没有人不会念吧,XYC,对不对?好,那么我接下呢,这这一步的话,我要干的一个事情呢,是要这个干这个事情,嗯,比方说我要去产生产生一个随机的整数,那么来表示什么呢?大家去想呀,我这个随机字符串不知道多长,也不知道从哪个地方开始,那所以说我等会打算去借用一个subst string函数,而subst string函数我们可以去想一想哈,那它这个里边的话,呃,是不是需要去加这么些参数呀?呃,你比方说。
05:00
我要是用这种的,这个是SSPR是不是就代表它对吧?哎,就代表它这个的话是不是代表你要截取的起始索引,哎,那起始索引的话,我想把它变成随机的,这样它有可能是从这个地方开始截,也有可能从这个地方开始截啊,那么最多的话是从这个地方开始减,没问题吧,所以这个呢,我想产生一个随机整数,代表其数索引,那它的范围应该是从几到几啊哎,有可能从70作音,这个地方是不是就是一这个地方的话是对了,这一共是16个嘛,那这个地方是16,所以说来注意哈,那么我要做的是产生一个随机整数,那么代表我们的其实,所以那这个范围是一到26。好,那么在这儿呢,我们就写一下set,后面呢,我们再去加谁呢?呃,这个这个这个随机整数,当然我用这个用户变量也行,或者我都放在上面吧,Declare declare,我们起一个名字start index类型默认呢是从一开始的,注意了,这个是用于代表我们的起始索引,好那么在这再去写设置一下我们的start index,那它的这个值呢,就等于,哎,你得是不是设置一个随机整数啊,范围从一到26怎么写嘞。
06:32
哎,那我们要是用run的话,是不是零到一的范围,零到零点多无限接近于一。好,那么我们这如果说乘以26,它代表的是零到25点多,对不对,那么加一呢,就一到26点多,所以呢,我可以再向下取整,没毛采吧,向下取整是不是正好就是一到26了哈,哎,那你看这个就是sat的一个,这个叫做其始索引啊,负上值了,其实索引有了,其实我用直接用哪个呢?Substr,那么直接str逗号start index,哎,因为它也支持,是不是我放两个参数啊,这个其实也行了,因为它会从指定的位置开始截,把后面的是不是就都截出来啊,这样也行,或者我们可以再进阶一步啊,测试一下它的逻辑,我们再声明一个变量叫做l int default也是一,那么我让它用于代表谁呢?
07:41
代表我们的截取的字符的长度,什么意思嘞?因为我subs string,它实际上是不是可以支持我三个参数呀,三个参数,第三个参数是不是代表截取长度呀,我不管是起始索引是随机的,那至于是截取两个,一个还是多个,那么我也想让它随解,听明白意思了吧,那所以说呢,我这个地方,哎,我就继续再来一个set set内等于哎,那注意那它的范围应该是几到几呢?我先加上注释哈,应该是产生一个随机的整数,那么代表我们的截取长度,那么它的范围是从也是从,呃,你要么截一个啊,最少截一个,最多截几个呢?如果我从这开始去截对不对啊,那最多是不是就截这么点啊。
08:37
啊,所以说最多可不是说接26个哈,啊,那应该怎么写呢。啊,那实际上也就是你看我们可以拿一个参照,假如说呢,我的这个我的这个起始索引,我设的是26,那么它应该是呃,截取的话只能截几个一个,也就是截取长度为一到一。如果说我拿的是我的70,缩性是五,那它可以解几个两个。
09:04
啊,也就是一到二是这个意思吧,啊,那如果说是24,那么截取的所以是一到三啊,那么所以说呃,我的这个截取长度应该是怎么去算,应该是哎,我们的总长度啊,要求的水长度减去多少呢?26减去什么?减去我们的start是不是index再去加一呀,你看哈,再来一遍,如果你的起始缩以是26。哎,那么我呢,最多截一个对不对,26减26加一是不是一一呀,那一到一是不是就是一,如果说是start in单是25最多减俩,那这就是26减25是一一加一是不是二,一到二没问题吧?啊,那这不就是一个逻辑吗?一个规律,那所以说我应该是范围是这么来写的。好,范围知道了呢,我们再放到这个地方来floor。
10:03
好,那么这的话就应该是run的小括号乘以哎乘以哎多少嘞,你看哈,刚才一到26,那26是不是放在乘一的后面,现在一到它,那实际上你是不是就要把它,哎放到我们乘一的后面嘛,对吧,然后呢,再去加多少啊加一啊,你看刚才一到26是不是就是乘以结数的值再加一,那我这个接数值就是这一大堆,哎乘到这,然后加一写上好。啊,那当然呢,我这个是算的说它最多是截26个啊,那实际上我这其实还有个要求,我的content,它的这个字符串的话,最大长度是多少20,所以说我这还到不了26,把26换成多少就行了呀,20也就这个值代表的是你要截取的最大长度啊把它换成要求的就行了,行吧,那你看这两个就写完了,写完之后呢,我们就可以把它给截取出来了,截取出来了,其实你可以把这个再定义个变量赋值,或者说我们直接怎么写呢?哎,把这个写全哈,那我直接把它扔到咱们的insert里边去也行,Insert into我们的string content啊,然后呢,再去写啊什么啊,Content第一个自增长就不管了啊,Value括号分号那么值的话,是不是就这么干呀?哎,这不就行了吗?
11:34
好吧,那么我们把这个呢,整个的给你试一下哈,CTRLC我们放到这个里边来,粘过来回一下车啊,我们得选一个库,比方说use一下我们的test啊,然后呢,我们再去粘贴过来运行成功了吧,好,我们去调用一下,呃,这个应该我起的一个非常好听的名字是吧?好,放到这儿来,诶,没粘过来弹RLC,好,然后在这个里边,假如说我放十个,哎,那么我们再去执行是不是成功了,行吧,那我现在来去查看一下,看对不对,Run的str是不是insert啊呃呃,错了,我这个查看的是什么,我是不是应该去查看我们的表呀,From我们的string can paint好,行了,那么我们再去运行有了吧,哎,是,而且我们的这个长度是随机的啊,里边的具体的这个字符是不是也是随机。
12:34
对呀,哎,这就行了,假如说我再去调一遍,看变没变啊,来看一下哈,我再调它不行,我得再去调一下,是不是调用啊,再插入十遍,然后现在我们再去运行好看一下,哎,你看那么后面的这十行和前面的这个十行,那么实际上是不是就不一样了,达到了一个随机哈,行这道题说到这儿。
我来说两句