一、概述

函数 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表

删除函数的语法:

DROP FUNCTION 函数名

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

【DataBase】MySQL 27 函数的更多相关文章

  1. 学生选课数据库SQL语句45道练习题整理及mysql常用函数(20161019)

    学生选课数据库SQL语句45道练习题: 一.            设有一数据库,包括四个表:学生表(Student).课程表(Course).成绩表(Score)以及教师信息表(Teacher).四 ...

  2. mysql 自定义函数

    原文:http://www.cnblogs.com/zhangminghui/p/4113160.html 引言 MySQL本身提供了内置函数,这些函数的存在给我们日常的开发和数据操作带来了很大的便利 ...

  3. mysql常用函数参考

    mysql常用函数参考   对于针对字符串位置的操作,第一个位置被标记为1. ASCII(str) 返回字符串str的最左面字符的ASCII代码值.如果str是空字符串,返回0.如果str是NULL, ...

  4. 【数据库】MySql常用函数梳理

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/5866388.html MySql常用函数梳理: 1:数学函数 使用格式:一般用于插入.修改语句中,直接 函数( ...

  5. Oracle/Mysql/SqlServer函数区别

    mysql日期和时间格式转换 Linux scp 使用详解 Oracle/Mysql/SqlServer函数区别 2011-07-01 12:34:36|  分类: Mysql技术 |  标签:mys ...

  6. [转载]MySQL UUID() 函数

    目录 目录 一 引子 二 MySQL UUID() 函数 三 复制中的 UUID()四 UUID_SHORT() 函数 3.1 实验环境介绍 3.2 搭建复制环境 3.3 基于 STATEMENT 模 ...

  7. MySQL常用函数介绍

    MySQL常用函数介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.操作符介绍 1>.操作符优先级 mysql; +----------+ | +----------+ ...

  8. MySQL Date函数的正确用法

    以下的文章主要介绍的是MySQL Date函数的实际应用其中包括如何获取当前时间的具体操作,Unix时间的具体应用,时间前后.时间间隔与时间转换的实际内容描述,以下就是文章的主要内容. MySQL D ...

  9. MySQL 时间函数加减计算

    一.MySQL 获得当前日期时间 函数 1.1 获得当前日期 + 时间(date + time) 函数:now() mysql> select now();+———————+| now() |+ ...

  10. MySQL日期函数、时间函数总结(MySQL 5.X)

    一.获得当前日期时间函数 1.1 获得当前日期+时间(date + time)函数:now() select now(); # :: 除了 now() 函数能获得当前的日期时间外,MySQL 中还有下 ...

随机推荐

  1. 算法学习笔记(35): CMD Tree

    对于 CMD Tree 的理解 原文:# 一种轻量级平衡树 这,EXSGT,感觉很像支持分裂 WBLT,但是相对来说思路很简单. 首先,在原文中说了: 能以均摊 \(\Theta(\log n)\) ...

  2. Kubernetes监控手册03-宿主监控实操

    生产环境大都是在 Linux 下的,所以这篇文章我们先来分享如何使用 Categraf 采集 Linux OS 相关的指标.读完本篇内容,你应该可以完成机器层面的监控了. 原理概述 Categraf ...

  3. javascript 类class设置访问器setter时出现Maximum call stack size exceeded错误

    Maximum call stack size exceeded这个错误的意思是调用栈溢出,但是自己写的代码基本不可能出现.所以可能的原因是A调用了B,然后B再调用A,形成了循环调用.或者说是A自己调 ...

  4. JSR303数据校验使用方法记录

    JSR303并不对应着指定的jar包,而是一种规范,目前hibernate-validator是使用最多的是基于JSR303规范的实现 本文不适合新人观看,要求至少要知道使用方法 Springboot ...

  5. 盘点 Spring Boot 解决跨域请求的几种办法

    熟悉 web 系统开发的同学,对下面这样的错误应该不会太陌生. 之所以会出现这个错误,是因为浏览器出于安全的考虑,采用同源策略的控制,防止当前站点恶意攻击 web 服务器盗取数据. 01.什么是跨域请 ...

  6. 向web服务器下载文件

    web服务器向客户端发送文件 Web服务器读取一个文件的二进制数据,把这组二进制数据发送个客户端,服务器发送给客户端的HTML文档的本质也是二进制.客户端使用以下代码读文件 response = ur ...

  7. 我写CSS的常用套路(附demo的效果实现与源码)

    大赞: https://mp.weixin.qq.com/s/dYCWYeM629DwiSqmaaAs1w

  8. ajax - 接口、表单、模板引擎

    1. 今天继续ajax的一个学习,首先明确一个观念,接口,什么是接口,当使用ajax请求数据时,被请求的url就叫做数据接口也就是接口,注意每个接口必须有请求方式,这里有一个接口的测试工具,postm ...

  9. mirai Bot初始化配置

    RT 其实本来我的bot已经因为自己手贱登陆qq nt直接报废了,但是论坛里有佬提供了新的协议库,那这不赶紧复活bot都对不起这个新的协议库. 本文写于2024年7月4日19:20:21,可能随着时间 ...

  10. 全新发布!桌面端效率工具RunFlow

    RunFlow是一款跨平台的生产力工具,可以启动应用程序和搜索文件等,类似于Windows平台的Wox和PowerToys,同样也类似于Mac平台的Alfred和Raycast.但我们并不与这些工具相 ...