mysql自定义函数

1.查看是否打开创建函数功能

show variables like '%func%';
-------------------------------------------
+---------------------------------+-------+
| Variable_name                   | Value |
+---------------------------------+-------+
| log_bin_trust_function_creators | OFF   |
+---------------------------------+-------

若Value=OFF则需要开启,命令如下

SET GLOBAL log_bin_trust_function_creators = 1;

自定义函数的概念

1.概念:自定义函数是对sql功能的拓展其语法与函数相同

2.必备条件:参数不一定要有,返回值必须要有

3.包含 :sql语句、声明、循环、结构控制等

自定义函数的语法

创建函数

create function 函数名([参数列表]) returns 数据类型
beginsql语句;return 值;
end;

​ 还可以有一些特别的选项,特别的选项写在return 之后,begin之前,如:

  • comment:一个关于函数的描述

  • 还有一些比如sql security等选项,有兴趣可以自行百度。这里不讲解,仅一提有此知识点。

举例

复制代码-- 最简单的仅有一条sql的函数
create function myselect2() returns int return 666;
select myselect2(); -- 调用函数--
create function myselect3() returns int
begin declare c int;select id from class where cname="python" into c;return c;
end;
select myselect3();
-- 带传参的函数
create function myselect5(name varchar(15)) returns int
begin declare c int;select id from class where cname=name into c;return c;
end;
select myselect5("python");

函数的调用

  • 直接使用函数名()就可以调用【虽然这么说,但返回的是一个结果,sql中不使用select的话任何结果都无法显示出来(所以单纯调用会报错),】
  • 如果想要传入参数可以使用函数名(参数)
  • 调用方式【下面调用的函数都是上面中创建的。】:
Select function_name(参数列表);
-- 无参调用
select myselect3();
-- 传参调用
select myselect5("python");
select * from class where id=myselect5("python");

函数的查看

查看函数创建语句:
show create function 函数名;
查看所有函数:
show function status [like 'pattern'];

函数的修改

函数的修改只能修改一些如comment的选项,不能修改内部的sql语句和参数列表。
alter function 函数名 选项;

函数的删除

drop function 函数名;
drop function if exists function_name参数列表);  ——推荐,删除时判断是否存在

变量的使用

局部变量的声明:DECLARE 变量1[,变量2,... ] 变量类型  [DEFAULT 默认值]
为变量赋值的两种方式:1)、SET parameter_name = value;2)、SELECT INTO parameter_name;——可以跟sql的select复用。
例如:将a表的值查出来给变量param——SELECT a.value INTO param FROM table a WHERE a.xx  = xx。   用户变量定义(可理解为全局变量,作用域为当前用户的客户端):SET @param_name = value

结构控制语法

1、IF 条件语句

IF cj > 90 THEN SET pf = '优秀'
ELSEIF cj > 60 THEN SET pf = '良好' THEN
ELSE SET pf = '不及格'
END IF

2、CASE 条件语句

CASE
WHEN cj >= 60 THEN SET pf = '及格';
ELSE SET pf = '不及格';
END CASE ;

3、LEAVE 终止语句:LEAVE label ——跳出循环 类似java中的break

​ ITERATE 终止语句:ITERATE label ——结束此次循环,开始下次循环 类似java中的continue

add_num: LOOP
SET @count=@count+1;
IF @count=100 THEN
LEAVE add_num ;
END LOOP add_num ;

4、WHILE 循环语句:

WHILE sum<100 DO
SET sum = sum + 1;
END WHILE

if else

现在我们来使用 定义一个阶乘的 mysql 函数

使用到 if else,以及 while函数

,此处需要注意,set 值的后面得加 结尾号,end if ,以及 end while 后面都要加结尾符号,这里得特别注意,不然各种报错,

我刚才写的时候就一直报错

CREATE FUNCTION jic(a INT) RETURNS INT
BEGINSET @i = 1;SET @result = 1;IF a = 0 THENRETURN 0;ELSEIF a = 1 THENRETURN 1;ELSEWHILE @i <= a DOSET @result = @result * @i;SET @i = @i +1;END WHILE;RETURN @result;END IF;
END

if 里面的多条件 and or

CREATE FUNCTION ifelse(a int) RETURNS VARCHAR(20)
BEGINif a>10 and a < 20 THENreturn "大于10小于20";ELSEIF a<10 or a>20 THENreturn "小于10或者大于20";END IF;
END

四、虚拟表的创建

建立虚拟表的优点:

省空间——客户端退出时,虚拟表(临时表)自动drop

私密性——客户端建立临时表只为特定的事务服务,这个表具有专用和私有性,不需要共享给其他人

高效性——客户端建立的临时表具有单独操作和读写性能,因此速度上和处理效率上更高

DROP TEMPORARY TABLE IF EXISTS temp_virtualTable;
CREATE TEMPORARY TABLE temp_virtualTable (id int
);

06-mysql自定义函数相关推荐

  1. mysql自定义函数应用_mysql functions实例:在自定义函数中应用字符串函数

    分享一段mysql自定义函数的代码,在其中用到了mysql的字符串函数length. 代码: mysql> delimiter $$ mysql> CREATE FUNCTION myFu ...

  2. 数据库系列之mysql 自定义函数function,函数和存储过程的区别

    mysql 自定义函数function,函数和存储过程的区别 https://blog.csdn.net/u010365819/article/details/80470448 https://blo ...

  3. mysql 自定义函数function,函数和存储过程的区别

    From: https://blog.csdn.net/u010365819/article/details/80470448 1.MySQL自定义函数简介 在MySQL中使用自定义函数也需要相应的要 ...

  4. mysql 自定义函数教程_MySQL自定义函数

    MySQL自定义函数 函数与存储过程类似,也是一组预先编译好的SQL语句的集合,但是存储过程可以有0个或多个返回,函数就只能有一个返回 创建函数 #语法 参数列表包含两部分 参数名和参数类型 #函数体 ...

  5. MySQL自定义函数(四十六)

    MySQL自定义函数 一.什么是MYSQL自定义函数? mysql当中的自定义函数,我们简称为UDF,它实际上是一种对MySQL扩展的途径,其用法与内置函数相同. 二.自定义函数应该具备哪些条件? 我 ...

  6. mysql 自定义函数教程_Mysql 自定义函数

    Mysql 自定义函数怎么用 CREATE FUNCTION `strip_tags`($str text) RETURNS text BEGIN DECLARE $start, $end INT D ...

  7. MySQL自定义函数创建与使用总结

    MySQL自定义函数创建与使用总结 MySQL自定义函数和存储过程类似,也需要在数据库中创建并保存.它与存储过程一样,都是由SQL语句和控制语句组成的代码片段,可以被应用程序和其他SQL语句调用. M ...

  8. mysql自定义函数示例代码,以及属性介绍

    以下是一个MySQL自定义函数的示例代码,该函数实现了将指定字符串中的大写字母转换为小写字母的功能: DELIMITER $$ CREATE FUNCTION to_lower(str VARCHAR ...

  9. MySQL自定义函数的使用及MySQL中的流程控制语句

    MySQL自定义函数 文章目录 MySQL自定义函数 创建自定义函数 自定义函数的调用 自定义函数的删除 自定义函数的维护 流程控制语句 条件控制语句 循环语句 创建自定义函数 创建自定义函数时, 开 ...

  10. mysql自定义函数实现

    mysql自定义函数实现 环境准备 查看mysql版本 select version(); 查看mysql存储引擎 show variables like '%storage_engine%'; 创建 ...

最新文章

  1. ColorMatrix 彩色矩阵
  2. java当中的定时器怎么做_java当中的定时器的4种使用方式
  3. Windows7 Search Federation功能解读
  4. mysql数据库特征_如何掌握MySQL数据库中动态表的特征
  5. 对字符串数组中的M个字符串按长度由小到大进行排序
  6. 全局变量求平均分最高分最低分_打分函数trimmean,去掉最高最低分求平均分,用它就对了...
  7. 382 名员工遍布 47 个国家如何炼成代码托管平台 GitLab?
  8. LeetCode刷题——除数博弈
  9. Android水平仪实训报告,测量实训报告【三篇】
  10. 小数分频器vhdl实现_verilog 实现小数分频(小数分频器)代码
  11. 测试用rtmp直播源
  12. 逆向分析-QQ游戏连连看
  13. yxy小蒟蒻的201113总结
  14. WARNING: disk usage in log directory [/home/.../.ros/log] is over 1GB. 问题解决办法
  15. 自然语言处理之hmm(隐马尔可夫模型)
  16. mac u盘只读怎么修改_U盘插到苹果电脑总是只读 请问mac系统怎么设置U盘读写权限?...
  17. springboot 集成 actuator
  18. 鲁大师 性能测试 计算机重启,鲁大师压力测试打不开_鲁大师压力测试未响应_鲁大师压力测试就重启...
  19. 帝国时代php,依然经典,《帝国时代》WEB版现世
  20. 【FPGA入门七】电子锁

热门文章

  1. Openwrt修改开机启动画面
  2. python 爬虫 使用requests模拟请求后台,返回为 空 问题
  3. Word 转 Markdown
  4. 计算机毕业设计 SSM+MySQL毕业设计 疫情期间医院门诊管理系统
  5. 2019世界区块链大会·乌镇首日精彩观点集锦
  6. 拜占庭将军问题之口头协议
  7. 企业日常任务:Open-Falcon监控平台服务迁移
  8. 有哪些事情虽然是事实,但也不能在面试的时候说?
  9. 「BUAA OO Pre」 切换Java版本到OO课程要求版本
  10. iApp 时间戳互转