一、概述

函数 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. 将手机声音通过蓝牙输入到WIN10电脑-安卓手机投屏直播无声音

    安卓手机投屏无声音,斗鱼,虎牙,直播无声音.可以用本方案,前提是电脑要有蓝牙功能,没有蓝牙,可以购买一个USB蓝牙适配器(不建义买CSR芯片的,CSR驱动会导致office 和远程桌面有问题). 操作 ...

  2. 项目管理--PMBOK 读书笔记(11)【项目风险管理】

    1.风险分解结构(RBS): RBS 有两个含义,一个是资源分解结构(Resource),一个是风险分解结构(Risk). 1)技术风险 2)管理风险 3)商业风险 4)外部风险   2.核对单 核对 ...

  3. MySQL BETWEEN AND包含边界值

    select count(1) from table_a where my_date between '20230715' and '20230717'; 上面的SQL我们发现只统计了20230715 ...

  4. 安装nodejs易遇到的坑

    @ 目录 背景描述 流程步骤 小结 背景描述 我的服务器是centos7.9,打算先直接通过yum安装,但是yum不能指定node版本,我直接指定显示404找不到,然后我设置了下node下载的源,还是 ...

  5. linux查看redis安装路径

    ## linux查看redis安装路径 redis-cli -h 127.0.0.1 -p 6379redis-cli monitor > redis2.log /usr/local/redis ...

  6. spring mvc统一处理接口返回值,aop切面实现,将请求的入参和出参存储在数据库中,切面内重新抛出异常

    spring mvc统一处理接口返回值,aop切面实现,将请求的入参和出参存储在数据库中 aop类实现Aspect的多个方法注解中,只有Around注解的方法是有返回值的,可以对方法的入参和返回值均进 ...

  7. 实验五:FTP远程密码pojie(有敏感词)

    [实验目的] 了解远程FTP密码pojie原理,了解如何有效防范类似攻击的方法和措施,掌握pojieftp帐号口令pojie技术的基本原理.常用方法及相关工具. [知识点] FTP口令pojie [实 ...

  8. 12-Python数据库访问

    在CentOS7上安装Mariadb https://blog.csdn.net/NetRookieX/article/details/104734181 常用的增删改查 show databases ...

  9. 高通android QMI机制

    高通android QMI机制 原文(有删改):https://blog.csdn.net/u012439416/category_7004974 概论 Qualcomm MSM Interface, ...

  10. ffmpeg 学习:主要结构体之间关系

    背景 学习例程源码的时候,搞不清楚各结构体之间是什么含义. 解析 FFmpeg 有多个重要的结构体,解协议,解分装,解码,解封装. 解协议: http,rstp,rtmp,mms. AVIOConte ...