• 售前

  • 售后

热门帖子
入门百科

MySQL之存储函数详细先容

[复制链接]
我是一个梦蛋 显示全部楼层 发表于 2022-1-9 05:48:44 |阅读模式 打印 上一主题 下一主题
目录


  • 1、创建存储函数
  • 2 、调用存储函数
  • 3、删除存储函数
  • 4、检察存储过程
  • 5、修改存储函数
  • 6、对比存储函数和存储过程
  • 7、训练题加强

1、创建存储函数

语法格式:
  1. CREATE FUNCTION 函数名(参数名 参数类型,...)
  2. RETURNS 返回值类型
  3. BEGIN
  4.         函数体   #函数体中肯定有 RETURN 语句
  5. END
复制代码
说明:
参数列表:
FUNCTION中总是
  1. 默认为IN参数
复制代码
  1. RETURNS
复制代码
后的语句表现函数返回数据的范例;
RETURNS子句只能对FUNCTION做指定,对函数而言这是
  1. 强制
复制代码
的。它用来指定函数的返回范例,而且函数体必须包罗一个
  1. RETURN value
复制代码
语句。
函数体也可以用
  1. BEGIN…END
复制代码
来表现SQL代码的开始和竣事。
如果函数体只有一条语句,也
  1. 可以省略BEGIN…END
复制代码


2 、调用存储函数

在MySQL中,存储函数的使用方法与MySQL内部函数的使用方法是一样的。换言之,用户自己定义的存储函数与MySQL内部函数是一个性质的。区别在于,存储函数是
  1. 用户自己定义
复制代码
的,而内部函数是MySQL的
  1. 开发者定义
复制代码
的。
  1. SELECT 函数名(实参列表)
复制代码
3、删除存储函数

语法结构:
  1. DROP FUNCTION [IF EXISTS] 存储函数名
复制代码
4、检察存储过程

1. 使用SHOW CREATE语句检察存储过程和函数的创建信息
语法结构:
  1. SHOW CREATE FUNCTION 存储函数名
复制代码
2. 使用SHOW STATUS语句检察存储函数的状态信息
语法结构:
  1. SHOW FUNCTION STATUS [LIKE 'pattern']
复制代码
这个语句返回子步伐的特性,如数据库、名字、范例、创建者及创建和修改日期。
  1. [LIKE 'pattern']
复制代码
匹配存储函数的名称,可以省略。当省略不写时,会列出MySQL数据库中存在的所有存储函数的信息。
举例:
  1. #查询名称以select开头的存储函数
  2. mysql> SHOW FUNCTION STATUS LIKE 'SELECT%';
  3. *************************** 1. row ***************************
  4.                   Db: test_db
  5.                 Name: SelectAllData
  6.                 Type: FUNCTION
  7.              Definer: root@localhost
  8.             Modified: 2021-10-16 15:55:07
  9.              Created: 2021-10-16 15:55:07
  10.        Security_type: DEFINER
  11.              Comment:
  12. character_set_client: utf8mb4
  13. collation_connection: utf8mb4_general_ci
  14.   Database Collation: utf8mb4_general_ci
复制代码
3. 从information_schema.Routines表中检察存储函数的信息
MySQL中存储函数的信息存储在information_schema数据库下的Routines表中。可以通过查询该表的记载来查询存储函数的信息。
语法结构:
  1. SELECT * FROM information_schema.Routines
  2. WHERE ROUTINE_NAME='存储函数名' [AND ROUTINE_TYPE = 'FUNCTION '];
复制代码
说明: 如果在MySQL数据库中
  1. 存在存储过程和函数名称相同的情况
复制代码
,最好指定
  1. ROUTINE_TYPE
复制代码
查询条件来指明查询的是存储过程还是函数。

5、修改存储函数

修改存储函数,不影响存储函数功能,只是修改相关特性。使用ALTER语句实现。
  1. ALTER FUNCTION 存储函数名;
复制代码
6、对比存储函数和存储过程

                        关键字            调用语法            返回值            应用场景                                    存储过程            PROCEDURE            CALL 存储过程()            理解为有0个或多个            一样平常用于更新                            存储函数            FUNCTION            SELECT 函数()            只能是一个            一样平常用于查询结果为一个值并返回时        此外,存储函数可以放在查询语句中使用,存储过程不行。反之,存储过程的功能更加强大,包括可以大概执行对表的操纵(比如创建表,删除表等)和事件操纵,这些功能是存储函数不具备的。

7、训练题加强
  1. #前提准备
  2. CREATE TABLE employees
  3. AS
  4. SELECT * FROM atguigudb.`employees`;
  5. CREATE TABLE
  6. departments AS
  7. SELECT * FROM atguigudb.`departments`;
复制代码
  1. #1. 创建函数get_count(),返回公司的员工个数 #有参有返回
  2. SET GLOBAL log_bin_trust_function_creators = 1;
  3. DELIMITER $
  4. CREATE FUNCTION get_count()
  5. RETURNS INT
  6. BEGIN
  7.         RETURN (SELECT COUNT(*) FROM employees);
  8. END $
  9. DELIMITER ;
复制代码
注意:
本身在创建存储函数中报错“
  1. you might want to use the less safe log_bin_trust_function_creators variable
复制代码
”,然后检察笔记发现办理此题目的一种方式就是执行
  1. SET GLOBAL log_bin_trust_function_creators = 1;
复制代码
SQL语句
  1. #2. 创建函数ename_salary(),根据员工id,返回它的工资
  2. #查询表结构来看要返回数据的类型
  3. DESC employees;
  4. DELIMITER $
  5. CREATE FUNCTION ename_salary(id INT)
  6. RETURNS DOUBLE(8,2)
  7. BEGIN
  8.         RETURN (SELECT salary FROM employees WHERE employee_id = id);
  9. END $
  10. DELIMITER ;
  11. #查询结果
  12. SELECT ename_salary(100);
复制代码
  1. 爱在结尾:自己应该学会:1、会使用创建存储函数的基本语法 ; 2、学会调用存储函数; 3、知道存储函数与存储过程的相同和不同点
复制代码
到此这篇关于MySQL之存储函数详细先容的文章就先容到这了,更多相关MySQL存储函数内容请搜刮草根技术分享以前的文章或继续浏览下面的相关文章渴望各人以后多多支持草根技术分享!

帖子地址: 

回复

使用道具 举报

分享
推广
火星云矿 | 预约S19Pro,享500抵1000!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

草根技术分享(草根吧)是全球知名中文IT技术交流平台,创建于2021年,包含原创博客、精品问答、职业培训、技术社区、资源下载等产品服务,提供原创、优质、完整内容的专业IT技术开发社区。
  • 官方手机版

  • 微信公众号

  • 商务合作