00:00
大家好,我是商务的讲师宋永康,咱们前面啊讲到了这个多表查询啊,是非常重要的一个章节,那么接下来咱们看这个第七章叫做单行函数,那么我们说任何一个编程语言啊,基本上都会涉及到对一定功能的封装,那么这个封装的话呢,在不同的语言当中叫法呢不一样,有的语言当中啊叫函数,那有的语言当中在像JA法当中呢,叫这个方法是吧,那本质上来讲呢,其实是一样的,那在咱们这个circle这样一门语言当中啊,咱们通过这个第七章和第八章来给大家讲解啊,丰富的这个内置的这些函数,那后续的话呢,我们还可以呢去自定义函数。好,那我们首先呢,来看一下这个第七章。那函数的话呢,首先啊,我们就当呢,是零基础开始的啊,就当呢,大家这块呢,没有这个编程语言的一些积累啊,像这个C语言当中啊,我们说这个函数GS当中的函数是吧,大家呢,有可能是接触过,那如果没接触的话,接触过的话呢,那我们呢,就这块儿啊,从头开始去说。
01:05
但是即使我们这块呢,说教从头开始讲,大家呢,其实也不是陌生的,为什么这样讲呢?咱们上中学的时候,是不是就已经啊接触过这个函数了呀。有同学说那个函数跟我们这个函数一样吗?实际本质上来讲是一样的,哎,本质来讲是一样的,你像咱们上中学的时候呢,说到说Y等于FX,这个F呢,我们叫自变量,Y呢叫因变量或者叫响应变量,然后这个F呢叫做对应法则,这个F呢,其实就是这个function是不是它的一个缩写啊?那比如说我们这个Y等于什么呀,我写一个啊3X方啊,加上一个2X加上个一,哎,那这块呢,就是它,诶其实F封装的一个函数,就是我们这样的一个关系式。那我们把它呢,统一的写成这样一种格式,那其实呢,就跟我们现在讲的这个函数也好,Java中的方法也好,其实是一回事的。行,那我们这块呢,从头来讲一下这个函数啊,如果说你这个底子比较薄的话呢,那我们呢,从头从长计议啊,说函数啊,在计算语言当中呢,贯穿始终啊,毫无疑问这句话呢是正确的,那函数的作用是什么呢?哎,我们说呀,它呢可以把我们经常使用的一些代码啊封装起来,那需要的时候呢,大家直接调用就可以了。
02:18
这样呢,就提高了代码的一个效率,说白了就是我们在写代码的时候,不用完全的从头开始一点点去搭建了,有一些现成的功能呢,已经做好了,我们直接调用就可以了,那像Java语言是吧,典型的它提供了丰富的API,那么这API里边呢,就提供了丰富的这样的一些这个类,以及类当中的一些功能,这个功能呢,我们说的其实就是函数是吧。那同时呢,我们说又提高了这个可维护性,那你把它分成了一个一个的函数的方式啊,甚至呢,还可以分具体这个类别,对吧,那我们维护起来呢,也更加的方便。那么在思库当中啊,我们这个可以使用函数对检索出来的数据呢,进行函数的一个操作,使用这些函数呢,可以极大的提高数用户呢,对数据库的一个管理的效率啊这个呢,也是从这个宏观上来讲的是吧,那就是呃,你可以理解成具体体现呢,就是我们提到的这样两个方面。
03:10
哎,这是我们说的一个函数的一个图,这个图呢,大家应该不陌生。啊,这个就看大家这个底子厚还是薄了,那上中学的时候呢,我们这边说的就是这样一个结构,刚才呢,我举了一个例子,说Y等于这个FX啊,我这要写成个小写的X呢,你可以看到呢,它就是只有一个变量,对吧?那如果把这个X呢,我写成个大写的,那通常这X呢,我就可以把它看成是一个向量了,这个向量里边呢,可以有X1 x2,一直到XN,那意味着我就可以有N个自变量。N个自变量其实就类似于这样的一个格式,对吧,那哎,我们这个参数的话呢,相当于就是X1到XN,然后放到这个函数F当中,执行出来个结果就是我们这个Y。哎,就这样个思路啊,那从函数的定义的角度出发呀,这个定义的,那我们就看是谁定义的呀,我们把这个函数分成叫内置函数和自定义函数,哎,刚才呢,其实我也说到这个概念了,就是说咱们在这个第七章和第八章当中啊,咱们接触的这些函数呢,都是,诶这个circle,或者准确来讲呢,应该是my circle是吧,因为咱们现在讲的是MYSQL数据库,这个数据库当中提供现成的一些函数,我们就称为呢叫内置函数,那自定义的话呢,就是我们在这个15章当中,章当中啊,我们可以去讲如何去create一个function啊,创建一个函数。
04:27
哎,到时候呢,我们再说啊,就是从定义的角度来讲,分成这样的两块啊。好的,那么接下来呢,我们去说一下这个不同的数据管理系统这个函数的一个差异,你看我刚才呢,特意的是不是强调了一下,咱们现在给大家讲的是不是说叫my circleq当中的这些函数是什么,对吧?好,那这块我们回过来想说明什么问题啊,就是这个circleq这个语言啊,它其实是定义了一些函数的,但是的话呢,呃,不同的数据库管理系统,它这个函数的差别啊,还是很大的,你看我这里边写了一句话。说不同的数据库管理系统,比如说你是MYSQL跟Oracle这两个数据库,你要做对比的话呢,他们当中这个函数的差别是很大的,远大于同一门语言不同版本之间的一个差异。
05:10
啊,你比如说以circleq为例也好,或者呢,我比如说像这个Java语言也好,这个呃,Java呢,比如说这门语言,它不断的去迭代更新不同的语言,这个版本当中呢,这个函数呢,可能会有一些差异,但是大体上来讲变化都比较小,但是呢,如果我们去看不同的数据库当中,比如说Oracle和my circle当中,或者再加上一个pd circle或者DB two这个SQ server等等,你会发现呢,不同的数据库管理系统当中,它们的函数差别是非常之大的。那IG呢,就是咱们现在呢讲的啊,下边的这些函数,大家你注意我们这块讲的呢,都是针对于my circle的。那其中有一些呢,在别的语言当中是通用的,但是呢,很多时候呢,都是不通用的。你看这块还举了个例子说呢,比如我们用这个双数线,或者这个呃,叫连接号加号是吧,作为这个拼接符在在咱们这个MYSO当中啊,它就不支持这样一种写法。
06:05
啊呃,简单说一句,你比如说我这块呢,是不是这Oracle这个场景,你看啊,我这块呢,可以select一下,我写一个字符串叫hello是吧,我用这个双双数线呢表示呢,其实就是个连接的操作,那我这呢再写一个这叫word,诶from一个down是吧,那么这个操作的话呢,我们选中呢做一个执行。大家你会发现它结果是不是就是hello word对吧,那我们把这个操作CTRLC一下,咱们粘到这样的新的一个啊,这个MY这个so当中,那此时呢,我们选中了去做个执行。你看它这块呢,输出的结果就是零啊,其实说白了他就不认识我们这个符号了。啊,就相当于在不同的语言当中啊,这个差别还是挺大的,如果在咱们这个,呃,MYSQL当中,我们如何表示这个连接操作呀,这块呢,我们得需要用到这个conca,相当于是这个字符串的一个函数。那通过这样的方式呢?把它俩拼接起来啊,这才是一个hello word。
07:00
啊,说白了就是我们想强调的点呢,就是在不同的语言当中,它这个差别呢,还是比较大的,OK。行,那既然差别比较大,我们就管不了那么多了,咱们就看my circle。好,那么首先呢,我们来针对my circle的这个内置函数啊进行一个说明。你看我下面说的这个,上面说的这个内容啊,就是层层深入过来的,对吧,最终的落脚点我们来看my circle的内置函数。那么MY这个函数啊,还是非常多的啊,还是非常多的,这个课件的话呢,相较于这个实际在线下授课来讲,我这个课件呢,就是又做了一个丰富。什么意思啊,就是那希望呢,大家回头需要哪些这个单行函数啊,或者叫这个内置函数的话呢,你可以来直接看我的课件就可以了,那杨IG呢,就是我这个课件当中这个函数的刻画呢,呃,是非常丰富的,就是我放了基本上就放全了。什么叫基本上呢,这个说话还是比较严谨的是吧,哎,就是有一些用的确实比较少的呢,这个经过,呃,这个我经过考量之后呢,就算了,就没有往这再去放了,因为确实要全都放的话呢,确实有点太多了,但是即使这样呢,我这里边儿放的已经是很丰富了。
08:13
大家需要什么类型的函数,直接呢,从我这个课件里边去找就没有问题。啊,这个呢,是做的就比较全了。行,那我们呢,再拉回来。那么这么多函数呢,咱们把它分了分类啊,分成哪些类别呢?从实现功能的角度来讲,哎,分成了这样的一些类别,比如说叫数值相关的函数。啊,说白了就是我们有整形啊,浮电型啊是吧,称为叫数值类型的,还有呢叫字符串类型的,还有呢日期和时间类型的,那以及呢,像流程控制啊,比如说我们像其他的编程语言当中都会涉及到这个条件判断呀,循环呀,啊这呢属于叫流程控制函数,还有呢叫加密与解密的函数。那我们把数据呢,存到咱们的数据库当中,比如说你用户名,用户名用户名还好哈,就一个密码吧,那这个密码的话呢,我们就可以给他做一个加密处理。
09:08
那你想如果这个数据库呢,被这一些这如果你要存在漏洞被破解的话呢,那你不可能把用户的这个密码呢,完全暴露出去啊,所以我们必须呢,要做一个加密处理,对吧?哎,那有一些这个操作的话呢,我们需要加密,还可以解密啊,有一些是双向的,有些是单向的啊,所以涉及到呃,有加密有解密的情况。那以及呢,过去MYSQ的一些信息函数啊,聚合函数等等的啊,这个是从这个功能的角度来划分的。诶功能角度来划分的好,那么我们去讲的话呢,刚才大家也看到了,咱们是不是分两张来给大家讲是吧,那我这块呢,是按什么来分类的呢?诶这块呢,大家注意听一下,我这块呢是按这个,诶什么来分啊,就是我们这个函数啊,如果咱们操作的这个数据呢,是一行。就是我进去一行数据啊,出来一行数据,咱们把它称为叫单行函数。
10:00
单行只针对一行处理的叫单行函数,对吧?那么如果呢,你要送进去多行数据出来一行啊这一个结果的话呢,我就把它称为呢,叫做多行函数。注意你看咱这又是从另外一个角度,是不是来区分一下这个函数啊,做的一个分类啊,哎,那么举个例子啊,说的有点抽象了,咱举个例子,比如说呢,大家比较熟悉的四舍五入,我放进一个123.45,然后呢,按照四舍五入呢,舍掉这个小数,那结果呢,是不是就123了。那我放进一个小写的A,那返回出来的呢,是一个大写的A,相当于这个函数的作用呢,就是把小写转化成大写。那你看我放进去一个就出来一个,这呢就叫做单行函数,那我上边这块呢,具体又分,这就属于数值类型的,这呢是不是就是不是就是字符串类型的呀,啊没有问题,好,这叫单行函数,那什么叫多行函数呢?我们举个例子,比如说呢,咱们把这个员工,每公司中每一个员工的这个工资啊,咱们都放进去,出来一个呢总工资。就是一个月呢,哎,总共需要给员工发放的钱数,这是不是就一个数啊,那这呢,就相当于是一个叫多行函数,相当于是一个求总和的一个操作是吧?那如果说我们放进之后呢,我们出来一个这个最大值,那相当于是一个求最大值的一个操作了,那这块呢,总总归呢,也是进去多行,出来一行,这呢叫多行函数,或者呢,我们也称为呢,叫做聚合函数,或者叫分组函数,指的都是它。
11:25
行,那么我们在这个当前的这个第七章,咱们来讲的是单行函数,第八章呀,咱们来讲这个多行函数,哎,是这样的逻辑进行的一个区分啊,进行区分。好了,那么这块呢,咱们把这个中心呢,就是层层深入,最后呢,咱们引入到了诶说这诶两种这个函数的,那么咱们这一章呢,因为主要讲单行函数,那咱们呢,主要来看这个单行函数啊。这个他呢,接受参数呢,返回一个结果啊,只对一行进行一个变化。啊,所以它是单行的嘛,哎,每行返回一个结果是吧,哎,这样然后可以签套啊,可以签套呢,就是相当于比如我们先这个round一下,举个例子,做一个四舍五入,四舍五入完了以后呢,我们再来一个这个,哎,比如求它这个地板函数啊,那或者叫天花板函数啊,或者来一个这个截段呀,哎,就直接在外边再套一层就行啊这呢就指的是可以嵌套的意思。
12:22
好,那么具体的参数的话呢,你可以是某一个字段。啊,可以是某个字段啊,比如说我们这里边放的是这个,哎,Last name啊这个字段了,也可以是一个值,这个值呢,就可能是一个具体的常量了,就12.3,哎,就这意思啊,这都很好理解。行,那么这样的话呢,咱们对这个函数呢,是不是就进行了一个分类啊,需要大家能够清楚这里边儿的一些常识啊。
我来说两句