MySQL进阶19--函数的创建(举例)/设置mysql的创建函数的权限/查看(show)/删除(drop) / 举4个栗子
Posted zhazhaacmer
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL进阶19--函数的创建(举例)/设置mysql的创建函数的权限/查看(show)/删除(drop) / 举4个栗子相关的知识,希望对你有一定的参考价值。
/*mysql进阶19 函数 存储过程和函数:都类似于java中的方法; 存储过程和函数通用好处: 1.提高代码的重用性 2.简化操作 好处: 减少操作次数,减少了编译次数,减少了和服务器的连接次数,提高了效率 --------------- #区别 存储过程 (可以有0个或者多个返回值),适合做批量插入或者批量更新 函数: 有且仅有一个返回值 ; 适合做处理数据后的返回一个结果 */ /* #一: 创建语法 create function 函数名(参数列表) returns 返回类型 begin 函数体 end 注意: 参数列表 包含两个部分; 参数名 参数类型; 函数体 : 肯定有return 语句,如果没有会报错; 3. 函数体中仅有一句话,则可以省略begin end 4. 使用delimiter 语句设置结束标记 delimiter $; #二: 调用自定义函数 select 函数名(参数列表) */ #-------------------案例演示函数------------------------------ #1 无参有返回 #根据提示,设置mysql函数权限 SHOW VARIABLES LIKE ‘log_bin_trust_function_creators‘; SET @@global.log_bin_trust_function_creators=‘ON‘; #案例 : 返回公司的员工个数 [如下代码可在本地运行,不用在cmd终端打开运行] DELIMITER $ CREATE FUNCTION myf1() RETURNS INT BEGIN DECLARE rt1 INT DEFAULT 0; #定义局部变量/赋值并returns SELECT COUNT(*) INTO rt1 FROM employees; RETURN rt1; END $ SELECT myf1() $; ##结果是 : 107 #2.有参数有返回 #案例1:根据员工名,返回它的工资 DELIMITER $ CREATE FUNCTION myf2(empName VARCHAR(20)) RETURNS DOUBLE BEGIN DECLARE rt DOUBLE DEFAULT 0; SELECT `salary` INTO rt FROM employees e WHERE e.last_name = empName AND e.first_name=‘empName‘; RETURN rt; END $ SET @empName=‘K_ing‘ $ SELECT myf2(@empName) $; ##返回值为 : 24000 #案例2: 根据部门名,返回该部门的平均工资 DELIMITER $ CREATE FUNCTION myf5(depName VARCHAR(20)) RETURNS DOUBLE BEGIN DECLARE rt DOUBLE ; SELECT AVG(salary) INTO rt FROM employees e JOIN departments d ON e.department_id = d.department_id WHERE d.department_name=depName; RETURN rt; END $ SELECT myf5(‘IT‘) $; ##结果是 : 5760 #三: 查看函数的过程/charset/Datebase collation等信息 SHOW CREATE FUNCTION myf5; #四: 删除函数(命令行可操纵!) DROP FUNCTION myf3; #案例" #1.创建函数,实现传入两个float ,返回两者之和 DELIMITER $ CREATE FUNCTION test_fun1(a FLOAT,b FLOAT) RETURNS FLOAT BEGIN DECLARE SUM FLOAT DEFAULT 0; SET SUM=a+b; RETURN SUM; END $ SELECT test_fun1(1,12) $ ##结果为:13