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函数的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——声明函数

VSCode自定义代码片段8——声明函数

部分代码片段

从mysql的片段中加载ListView

连接MySQL出现错误:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)(代码片段

使用从循环内的代码片段中提取的函数避免代码冗余/计算开销