MySQL存储函数,值得一看

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: MySQL存储函数,值得一看

1、创建存储函数

语法格式:


CREATE FUNCTION 函数名(参数名 参数类型,...) 
RETURNS 返回值类型
BEGIN
  函数体   #函数体中肯定有 RETURN 语句
END


说明:


参数列表: FUNCTION中总是默认为IN参数。

RETURNS 后的语句表示函数返回数据的类型;

RETURNS子句只能对FUNCTION做指定,对函数而言这是强制的。它用来指定函数的返回类型,而且函数体必须包含一个RETURN value语句。

函数体也可以用BEGIN…END来表示SQL代码的开始和结束。如果函数体只有一条语句,也可以省略BEGIN…END。

2 、调用存储函数

在MySQL中,存储函数的使用方法与MySQL内部函数的使用方法是一样的。换言之,用户自己定义的存储函数与MySQL内部函数是一个性质的。区别在于,存储函数是用户自己定义的,而内部函数是MySQL的开发者定义的。


SELECT 函数名(实参列表)


3、删除存储函数

语法结构:


DROP FUNCTION [IF EXISTS] 存储函数名


4、查看存储过程

1. 使用SHOW CREATE语句查看存储过程和函数的创建信息


语法结构:


SHOW CREATE FUNCTION 存储函数名


2. 使用SHOW STATUS语句查看存储函数的状态信息


语法结构:


SHOW FUNCTION STATUS [LIKE 'pattern']


这个语句返回子程序的特征,如数据库、名字、类型、创建者及创建和修改日期。


[LIKE 'pattern']匹配存储函数的名称,可以省略。当省略不写时,会列出MySQL数据库中存在的所有存储函数的信息。


举例:


#查询名称以select开头的存储函数
mysql> SHOW FUNCTION STATUS LIKE 'SELECT%';
*************************** 1. row ***************************
                  Db: test_db
                Name: SelectAllData
                Type: FUNCTION 
             Definer: root@localhost
            Modified: 2021-10-16 15:55:07
             Created: 2021-10-16 15:55:07
       Security_type: DEFINER
             Comment: 
character_set_client: utf8mb4
collation_connection: utf8mb4_general_ci
  Database Collation: utf8mb4_general_ci


3. 从information_schema.Routines表中查看存储函数的信息


MySQL中存储函数的信息存储在information_schema数据库下的Routines表中。可以通过查询该表的记录来查询存储函数的信息。


语法结构:


SELECT * FROM information_schema.Routines
WHERE ROUTINE_NAME='存储函数名' [AND ROUTINE_TYPE = 'FUNCTION '];


说明: 如果在MySQL数据库中存在存储过程和函数名称相同的情况,最好指定ROUTINE_TYPE查询条件来指明查询的是存储过程还是函数。


5、修改存储函数

修改存储函数,不影响存储函数功能,只是修改相关特性。使用ALTER语句实现。


ALTER FUNCTION 存储函数名;


6、对比存储函数和存储过程

关键字 调用语法 返回值 应用场景

存储过程 PROCEDURE CALL 存储过程() 理解为有0个或多个 一般用于更新

存储函数 FUNCTION SELECT 函数() 只能是一个 一般用于查询结果为一个值并返回时

此外,存储函数可以放在查询语句中使用,存储过程不行。反之,存储过程的功能更加强大,包括能够执行对表的操作(比如创建表,删除表等)和事务操作,这些功能是存储函数不具备的。


7、练习题加强

#前提准备
CREATE TABLE employees
AS
SELECT * FROM atguigudb.`employees`; 
CREATE TABLE 
departments AS
SELECT * FROM atguigudb.`departments`;


#1. 创建函数get_count(),返回公司的员工个数 #有参有返回 
SET GLOBAL log_bin_trust_function_creators = 1;
DELIMITER $
CREATE FUNCTION get_count()
RETURNS INT
BEGIN
  RETURN (SELECT COUNT(*) FROM employees);
END $
DELIMITER ;


注意:


自己在创建存储函数中报错“you might want to use the less safe log_bin_trust_function_creators variable”,然后查看笔记发现解决此问题的一种方式就是执行SET GLOBAL log_bin_trust_function_creators = 1;SQL语句


#

2. 创建函数ename_salary(),根据员工id,返回它的工资 
#查询表结构来看要返回数据的类型
DESC employees;
DELIMITER $
CREATE FUNCTION ename_salary(id INT)
RETURNS DOUBLE(8,2)
BEGIN
  RETURN (SELECT salary FROM employees WHERE employee_id = id);
END $
DELIMITER ;
#查询结果
SELECT ename_salary(100);


相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
6月前
|
SQL 关系型数据库 MySQL
MySQL 常用函数
我们这次全面梳理 MySQL 中的常用函数,涵盖 聚合函数、字符串函数、日期时间函数、数学函数 和 控制流函数 等五大类。每类函数均配有语法说明与实用示例,帮助读者提升数据处理能力,如统计分析、文本处理、日期计算、条件判断等。文章结尾提供了丰富的实战练习,帮助读者巩固和应用函数技巧,是进阶 SQL 编程与数据分析的实用工具手册。
|
7月前
|
存储 关系型数据库 MySQL
【免费动手教程上线】阿里云RDS MySQL推出大容量高性能存储:高性能本地盘(最高16TB存储空间)、高性能云盘(最高64TB存储空间)
阿里云RDS MySQL提供高性能本地盘与高性能云盘等存储方案,满足用户大容量、低延迟需求。高性能本地盘单盘最大16TB,IO延时微秒级;高性能云盘兼容ESSD特性,支持IO性能突发、BPE及16K原子写等能力。此外,阿里云还提供免费动手体验教程,帮助用户直观感受云数据库 RDS 存储性能表现。
|
9月前
|
SQL 关系型数据库 MySQL
【YashanDB知识库】MySQL field 函数的改写方法
【YashanDB知识库】MySQL field 函数的改写方法
|
10月前
|
存储 关系型数据库 MySQL
MySQL进阶突击系列(09)数据磁盘存储模型 | 一行数据怎么存?
文中详细介绍了MySQL数据库中一行数据在磁盘上的存储机制,包括表空间、段、区、页和行的具体结构,以及如何设计和优化行数据存储以提高性能。
|
9月前
|
SQL 关系型数据库 MySQL
【YashanDB知识库】MySQL field 函数的改写方法
本文来自YashanDB官网,介绍将MySQL的FIELD函数改写到YashanDB的方法。MySQL中,FIELD函数用于自定义排序;而在YashanDB中,可使用DECODE或CASE语句实现类似功能。示例展示对表`t1`按指定顺序排序的过程,提供两种改写方式,结果均符合预期。
|
11月前
|
SQL 关系型数据库 MySQL
Mysql-常用函数及其用法总结
以上列举了MySQL中一些常用的函数及其用法。这些函数在日常的数据库操作中非常实用,能够简化数据查询和处理过程,提高开发效率。掌握这些函数的使用方法,可以更高效地处理和分析数据。
286 19
|
12月前
|
SQL 关系型数据库 MySQL
【MySQL基础篇】盘点MySQL常用四大类函数
本文介绍了MySQL中的四大类常用函数:字符串函数、数值函数、日期函数和流程函数。
【MySQL基础篇】盘点MySQL常用四大类函数
|
12月前
|
数据采集 关系型数据库 MySQL
MySQL常用函数:IF、SUM等用法
本文介绍了MySQL中常用的IF、SUM等函数及其用法,通过具体示例展示了如何利用这些函数进行条件判断、数值计算以及复杂查询。同时,文章还提到了CASE WHEN语句和其他常用函数,如COUNT、AVG、MAX/MIN等,强调了它们在数据统计分析、数据清洗和报表生成中的重要性。
|
12月前
|
SQL 关系型数据库 MySQL
MySQL常见函数第二期,你都用过哪些呢 ?
本期介绍了20个常用的MySQL函数,涵盖日期处理(如CURDATE()、DATE_FORMAT())、数学运算(如ABS()、ROUND())、统计分析(如COUNT()、SUM())等,帮助提高SQL查询效率和数据处理能力。希望对大家的学习有所帮助。
293 7

推荐镜像

更多