MySQL函数
Posted 风萧萧路漫漫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL函数相关的知识,希望对你有一定的参考价值。
FUNCTION函数
DECLARE声明
好处:
1.提高代码重用性
2.简化操作
3.减少了编译次数:编译过一次 就不用编译了
4.减少了和服务器连接次数,提高了效率
区别:
存储过程:可以有0个返回,也可以有多个返回。(适合批量的增删改)
函数:有且仅有1个返回。(适合做数据处理后,返回一个结果)
一、创建语法
CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型 BEGIN 函数体 return 值; END
注意:
1.参数列表包含两部分:参数名,参数类型
没有in out模式
2.函数体:必须有return语句
3.return语句不写在最后也不会报错,但不建议
4.函数体中只有一句话可以省略begin end
5.需要使用 delimiter语句设置结束标记
二、调用语法
SELECT 函数名(参数列表) 执行完里面的语句并且显示返回值
#1.无参有返回 CREATE FUNCTION myf1() RETURNS INT BEGIN DECLARE c int DEFAULT 0;#定义变量 SELECT count(*) INTO c#为变量赋值 FROM employees; RETURN c; END $ SELECT myf1()$ #2.有参有返回 #根据员工名,返回它的工资 CREATE FUNCTION myf2(empName VARCHAR(20)) RETURNS INT BEGIN SET @sal=0; #定义用户变量:当前连接有效 SELECT salary INTO @sal #赋值 FROM employees WHERE last_name=empName; RETURN @sal; END $ SELECT myf2(‘Hunold‘)$ #案例2:根据部门名,返回该部门的平均工资 CREATE FUNCTION myf3(deptName VARCHAR(20)) RETURNS INT BEGIN DECLARE sal DOUBLE;#加不加默认值都行 SELECT avg(salary) INTO sal FROM employees e JOIN departments d ON e.department_id=d.department_id WHERE d.department_name=deptName; RETURN sal; END $ SELECT myf2(‘IT‘)$
三、查看函数
SHOW CREATE FUNCTION myf3;
在mysql库中proc表能看见存储过程和函数的基本信息
四、删除函数
DROP FUNCTION myf3;
五、修改
很少修改
也只能修改创建时的特点
CREATE FUNCTION myf2(empName VARCHAR(20)) RETURNS INT
begin end 中的语句不能修改
如果要修该只能删除
不能修改存储过程的逻辑语句
#创建函数,实现传入两个float,返回二者之和 CREATE FUNCTION test_fun1(num1 FLOAT,num2 FLOAT) RETURNS FLOAT BEGIN DECLARE sum FLOAT DEFAULT 0; SET sum=num1+num2; RETURN sum; END$ SELECT test_fun1(1,2)$
以上是关于MySQL函数的主要内容,如果未能解决你的问题,请参考以下文章
连接MySQL出现错误:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)(代码片段