资源描述:
《mysql中函数的应用.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、函数1mysql中函数的应用什么是函数2函数是事先经过编译并存储在数据库中的一段sql语句的集合调用函数可以简化应用开发人员的很多工作减少数据在数据库和应用服务器之间的传输对于提高数据处理的效率是有好处的函数必须有返回值函数基本结构3说明:mysql函数的语法比较严格,说明如下:1,定义分割符防止遇到”;”语句结束2,创建函数名注意myfun()不要忘记()3,函数返回类型只能返回mysql列所具有的数据类型,注意:是returns不是return4,函数主体开始注意:以上4句后面都没有分号5,所执行的业务注意这句后面有分号6,此函数的返回值要和3定义的类型匹配后面有分号结束7,函
2、数主题结束后面有分割符8,函数结束注意后面有分号没有参数的函数调用自定义函数:和调用普通的函数一样,如:selectmyfun();会返回一个字符串函数基本结构4说明:1:所接受的参数有参数的函数DELIMITER$$CREATEFUNCTIONmyfun(strVARCHAR(20))RETURNSVARCHAR(20)BEGINRETURNstr;END$$DELIMITER;--1变量的定义5说明:通过DECLARE可以定义一个局部变量,该变量的作用范围只能在GEGIN…END块中,可以用在嵌套的块中.变量的定义必须写在复合语句的开头,并且在任何其他语句的前面,如果需要可以使
3、用DEFAULT赋默认值例如:DECLAREmunumINTDEFAULT10;定义变量BEGINDECLAREtempVARCHAR(20);END变量的赋值6说明:通过DECLARE可以定义一个局部变量,该变量的作用范围只能在GEGIN…END块中,可以用在嵌套的块中.变量的定义必须写在复合语句的开头,并且在任何其他语句的前面,如果需要可以使用DEFAULT赋默认值例如:DECLAREmunumINTDEFAULT10;变量赋值BEGINDECLAREtempVARCHAR(20);SETtemp=‘helloworld’;END使用SET赋值案例分析1-17问题:自定义函数完
4、成类似REPLACE()函数的功能案例分析1-28分析:函数需要3个参数:1,原始字符串2,源字符串3,目标字符串案例分析1-39DELIMITER$$CREATEFUNCTIONmyreplace(strVARCHAR(50),ystrVARCHAR(50),mstrVARCHAR(50))RETURNSVARCHAR(50)BEGINRETURNREPLACE(str,ystr,mstr);END$$DELIMITER;案例分析2-110大家知道mysql中字符串转int会发生自动类型转换例如:select‘123’+0返回int那么如何将int转为字符串呢?自定义函数完成.案
5、例分析2-211可以利用concat()函数将数值和空字符串连接出来DELIMITER$$CREATEFUNCTIONinttostring(tempINT)RETURNSVARCHAR(50)BEGINRETURNCONCAT(temp,'');END$$DELIMITER;测试:SELECTinttostring(123)存储过程12mysql中存储过程的应用什么是存储过程13定义:将常用的或很复杂的工作,预先用SQL语句写好并用一个指定的名称存储起来,那么以后要叫数据库提供与已定义好的存储过程的功能相同的服务时,只需调用存储过程,即可自动完成命令14存储过程---------
6、---------------单个SELECT语句SELECT语句块SELECT语句与逻辑控制语句可以包含什么是存储过程存储过程可以包含数据操纵语句、变量、逻辑控制语句等什么是存储过程15存储过程的优点:1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。3.存储过程可以重复使用,可减少数据库开发人员的工作量存储过程的基本
7、结构16DELIMITER$$CREATEPROCEDUREmyprotest()BEGINSELECT*FROMstuinfo;END$$DELIMITER;和函数的语法很像如何调用存储过程?使用CALL关键字CALLmyprotest();sql编程-局部变量示例17问题:编写SQL查找李文才的左右同桌?学员信息表分析:第一步,找出“李文才“的座位号;第二步,李文才的座位号加1或减1局部变量示例参考语句18DELIMITER$$DROPPROCEDUREIFEXI