本文内容:

  • 什么是函数
  • 函数的创建
  • 函数的调用
  • 函数的查看
  • 函数的修改
  • 函数的删除

首发日期:2018-04-18


什么是函数:

  • 函数存储着一系列sql语句,调用函数就是一次性执行这些语句。所以函数可以降低语句重复。【但注意的是函数注重返回值,不注重执行过程,所以一些语句无法执行。所以函数并不是单纯的sql语句集合。】
  • mysql函数有自己的自定义函数(已经定义好了的函数),想了解更多的可以参考我的另一篇博文:mysql之常用函数
  • 这里主要介绍如何自定义函数。

补充:

  • 函数与存储过程的区别:函数只会返回一个值,不允许返回一个结果集。函数强调返回值,所以函数不允许返回多个值的情况,即使是查询语句。

    -- 不行的代码:Not allowed to return a result set from a function
    create function myf()returns int
    begin
    select * from student;
    return 100;
    end;

函数的创建:

  • 语法:

    create function 函数名([参数列表]) returns 数据类型
    beginsql语句;return 值;
    end;
    • 参数列表的格式是:  变量名 数据类型
  • 示例:

    -- 最简单的仅有一条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");

补充:

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

    • comment:一个关于函数的描述
    • 还有一些比如sql security等选项,有兴趣可以自行百度。这里不讲解,仅一提有此知识点。

函数的调用:

  • 直接使用函数名()就可以调用【虽然这么说,但返回的是一个结果,sql中不使用select的话任何结果都无法显示出来(所以单纯调用会报错),】
  • 如果想要传入参数可以使用函数名(参数)
  • 调用方式【下面调用的函数都是上面中创建的。】:
    -- 无参调用
    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 函数名;

mysql之自定义函数相关推荐

  1. mysql增加自定义函数功能

    mysql默认是不能自定义函数的 当create function时 This function has none of DETERMINISTIC, NO SQL, or READS SQL DAT ...

  2. mysql求分位数_给Mysql加自定义函数计算百分位数(percentile)。

    百分位数(percentile)的详细定义见百度百科. 在这里我用一个通俗的例子来补充解释, 例如今年有900万人参加了高考,自然有900万个成绩,某个学校计划择优招生分数最高的前900个,那么分数线 ...

  3. MySQL如何自定义函数

    在使用 MySQL 的过程中,MySQL 自带的函数可能完成不了我们的业务需求,这时候就需要自定义函数. 自定义函数是一种与存储过程十分相似的过程式数据库对象.它与存储过程一样,都是由 SQL 语句和 ...

  4. mysql支持自定义函数_MySQL 自定义函数

    自定义函数概念 用户自定义函数(user-defined function, UDF)是一种对MySQL扩展的途径, 其用法与内置函数相同. 自定义函数的两个必要条件: 参数 返回值 (只能有一个) ...

  5. MySql创建自定义函数(Function)

    1.创建自定义函数 DELIMITER $$ DROP FUNCTION IF EXISTS genPerson$$ CREATE FUNCTION genPerson(name varchar(20 ...

  6. MySQL创建自定义函数教程

    目录 1.语法 2.示例 2.1 举例 2.2 报错 3.练习 3.1 练习数据库及表创建 MySQL版本:8.0.20 3.2 创建自定义函数1 创建一个通过学号sid获取学生信息的函数 3.3 自 ...

  7. Mysql中自定义函数的创建和执行

    假设students表中包含id和name两个字段,创建一个函数,函数的作用是根据id查找name 1.创建表,插入数据 create table students(id int,name varch ...

  8. mysql自定义函数的优缺点_浅谈MySQL创建自定义函数漏洞的利用和防止

    前一阵子网上风靡的MySQL的udf.dll提权我有所了解-近日由于不再在IDC行业工作了-所以也有所淡忘- 只是最近实在手痒,就决定对我的站点所在的服务器下手--.正好用上这招了- 站点的服务器是W ...

  9. mysql java自定义函数_Mysql自定义函数总结

    存储函数 创建存储函数,需要使用CREATE FUNCTION语句,基本语法如下: CREATE FUNCTION func_name([func_parameter])RETURNSTYPE[cha ...

最新文章

  1. 递归/归并:count of smaller numbers求逆序数
  2. 【原创翻译】文件与文件夹
  3. 用Docker打造多版本PHP运行环境
  4. Java中list如何利用遍历进行删除操作
  5. java判断字符串是什么编码_java可供判断某字符串是什么编码的一行代码
  6. 如何在html里加入验证码_如何把crc校验加入到对应的程序里?看高手怎么做
  7. python库_python使用ctypes库调用DLL动态链接库_python
  8. Recoll:Unix和Linux桌面的文本搜索工具
  9. 后缀表达式----栈
  10. 求栈中元素个数算法_嵌入式必知基础算法(一)
  11. 常用Linux命令--CPU和GPU查看
  12. 在Linux下配置打印机
  13. MT8377 MT8389 MT6589 MT6577解析
  14. Open Wifi SSID Broadcast vulnerability
  15. 简述FPGA的一些优势
  16. [HDU 5956] The Elder (斜率DP + 可持久化单调队列)
  17. vue v-for遍历动态展示元素数量
  18. 图片缩放库 Photoview 和 Gif 控件 GifView 的使用
  19. 我应该拿什么来拯救你,我的游戏?
  20. win7 使用自带无线网卡分享无线网络

热门文章

  1. 《电路学习第三天》 之 线性稳压电源的设计
  2. systemd介绍六:Journalctl查看并操作sytemd日志
  3. Http 调用netty 服务,服务调用客户端,伪同步响应.ProtoBuf 解决粘包,半包问题.
  4. 3.8 JS 制作无间断图片循环滚动效果
  5. C语言字符串 string强转为int
  6. Dubbo原理简单分析
  7. 人脸检测和识别的开源库总结
  8. Mastering the game of Go with deep neural networks and tree search翻译
  9. HDU 4069 Squiggly Sudoku Dancing-Links(DLX)+Floodfill
  10. idea modules中Sources介绍