mysql database 函数_【DataBase】MySQL 27 函数

一、概述

函数 Function,存储过程的用途一致,减少程序逻辑,和数据库服务的连接次数,提高效率

简化操作,提高SQL重用性

函数 和 存储过程的区别?

存储过程允许多个返回的数据,函数只允许一个返回数据

适用场景:

存储过程适合、批量插入、更新

函数适合处理数据后返回一个结果

二、语法 Syntax

创建函数

CREATE FUNCTION 函数名称(参数列表)RETURNS 返回类型

BEGIN

函数体

END

参数写法:

参数名 参数类型

语法注意

1、函数体必须要写上return语句

2、如果只有一条函数语句可以省略BEGIN & END

3、使用 DELIMITER 语句作为设置结束标记语句

调用语法

SELECT 函数名称(参数列表)

三、样例演示

1、无参数有返回

查询全部员工人数

DELIMITER $

CREATE FUNCTION employeeCount() RETURNS INT

BEGIN

DECLARE c INT DEFAULT 0;

SELECT

COUNT(*)

INTO

c

FROM

employees;

RETURN c;

END$

调用:

# SELECT employeeCount();

SELECT employeeCount() AS '员工人数';

2、有参数有返回

根据员工名返回工资:

DELIMITER $

CREATE FUNCTION querySalaryByEmployeeName

(

employeeName VARCHAR(20)

)

RETURNS DOUBLE

BEGIN

# DECLARE salary DOUBLE DEFAULT 0;

SET @salary = 0;

SELECT

salary

INTO

@salary

FROM

employees

WHERE

employees.`last_name` = employeeName;

RETURN @salary;

END $

调用

SELECT querySalaryByEmployeeName('Kochhar') AS '工资';

根据部门名返回该部门平均工资:

DELIMITER $

CREATE FUNCTION queryAvgSalaryByDepartmentName

(

departmentName VARCHAR(20)

)

RETURNS DOUBLE

BEGIN

DECLARE avgSalary DOUBLE DEFAULT 0;

SELECT

AVG(e.salary)

INTO

avgSalary

FROM

employees e JOIN departments d ON e.department_id

WHERE

d.department_name = departmentName;

RETURN avgSalary;

END $

调用函数:

SELECT queryAvgSalaryByDepartmentName('IT') AS '平均工资';

四、函数的查看与删除

查看函数的语法:

SHOW CREATE FUNCTION 函数名称;

或者是直接找到系统进行查看:

mysql库 -> proc表

9a8052b7f13b5ac0d37570b9df6f6f79.png

删除函数的语法:

DROP FUNCTION 函数名

修改和存储过程一样没有实际意义,不赘述了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值