文章目录

  • 数据库中的函数
  • 创建自定义函数
  • 修改自定义函数
  • 删除自定义的函数

在MySQL中存储着一系列的SQL语句,调用函数就是一次性执行这些语句。所以函数可以降低语句的重复。
但要注意到函数是注重返回值的,不注重执行的过程,所以一些语句是无法执行的。

所以函数并不是单纯的SQL的语句集合。

MySQL不仅仅有着它自己本身定义好的函数,数据库管理员也是可以按需求去自己定义函数。

数据库中的函数

戳这里 ====》 数据库中一些函数

创建自定义函数

主要体现在查询方面
函数类似于存储过程存储过程的了解

DELIMITER $$
CREATE/*[DEFINER = { user | CURRENT_USER }]*/FUNCTION 函数名([参数列表]) RETURNS 返回的数据类型BEGINDECLARE 变量;sql语句;RETURN 返回值;END$$
DELIMITER ;

注意:

  1. 参数列表是包含两个部分的:参数名 参数类型。
  2. 函数体:肯定会有return语句,如果没有就会报错。
  3. 函数体中仅有一句话的时候,是可以省略begin end 的。
  4. 使用delimter语句设置结束标记。
  5. 默认函数必须有参数值的,但我们可以设置它为无参的函数。
SET GLOBAL log_bin_trust_function_creators=TRUE;

举例:
先创建一个数据表:

  1. 创建一个不带参数的函数:
DELIMITER $$
CREATEFUNCTION `demo1`() RETURNS INTBEGINDECLARE s_count INT DEFAULT 0;SELECT COUNT(*) INTO s_count FROM student;RETURN s_count;END$$
DELIMITER ;

调用这个函数:

SELECT demo1();

  1. 创建一个带参的函数
DELIMITER $$
CREATEFUNCTION `demo2`(s_sex CHAR(1)) RETURNS VARCHAR(10)BEGINDECLARE r_sex VARCHAR(10) DEFAULT '';IF s_sex = '男' THENSET r_sex = '这个人为男生';ELSE SET r_sex = '这个人为女孩子';END IF;RETURN r_sex;END$$
DELIMITER ;

调用这个函数

SELECT demo2(sex) FROM student;

修改自定义函数

虽然在这可以使用ALTER FUNCTION的语句来修改自定义的函数的某些特征。但若要修改自定义函数的内容,是必须删除该自定义的函数,然后再重新创建。

但我建议,为了方便一些,也因为创建函数都比较短,所以我都会删除,再 重新写一遍。

删除自定义的函数

自定义函数被创建后,是会一直保存在数据库服务器上的,直至它被删除。

删除自定义的函数方法与删除存储过程的方法基本是一样的。可以使用DROP FUNCTION来实现的。

DROP FUNCTION [IF EXISTS] <自定义函数名>
  1. 自定义函数名:指定要删除的自定义函数的名称。
  2. IF EXISTS:指定关键字,用于防止因误删除不存在的自定义函数而引发错误。(就是如果有的意思,可以不写)

举例:

DROP FUNCTION demo2;

就表示已经删除成功了。

MySQL中如何定义一个自己写的函数相关推荐

  1. MySQL中如何定义外键[转]

    MySQL中如何定义外键 假如某个电脑生产商,它的数据库中保存着整机和配件的产品信息.用来保存整机产品信息的表叫做pc:用来保存配件供货信息的表叫做parts. 在pc表中有一个字段,用来描述这款电脑 ...

  2. mysql 中修改对象_在MySQL中,创建一个数据库后,还可以对象其进行修改,不过这里的修改是指可以修改被创建数据库的相关参数,也可以修改数据库名。...

    [多选题]注射时,在(  )情况下,采用较高的注射速率. [单选题]通常,所设置的模具温度是指和制品接触的模腔内表面在(   ). [单选题]反映某一事件发生强度的指标应选用 [判断题]当试样制备之后 ...

  3. MDK keil中在定义一个结构体的时候加点后面不出现结构体当中变量的提示

    MDK keil中在定义一个结构体的时候加点后面不出现结构体当中变量的提示 解决办法: 1.确保已经将顶层头文件stm32f10x.h添加至当前你所写的文件内: 2.检查你自己写的文件是否已经加载到工 ...

  4. Python中如何定义一个函数

    任何编程语言知识它的基础知识都是有些枯燥的,我们一定要多练习, 多实践.下面小编来将一下Python中如何定义一个函数. 最后,如果你的时间不是很紧张,并且又想快速的提高,最重要的是不怕吃苦,建议你可 ...

  5. python的input添加变量_在python中如何定义一个全局变量raw_input() 与 input()的区别...

    raw_input和input两个均是 python 的内建函数,通过读取控制台的输入与用户实现交互.但他们的功能不尽相同.下面举两个例子,来说明两者使用上的不同. 例子1Python 2.7.5 ( ...

  6. mysql 获取递增id_如何在MySQL中获取下一个自动递增ID?

    MySQL具有AUTO_INCREMENT关键字来执行自动增量.AUTO_INCREMENT的起始值为1,这是默认值.每条新记录将增加1. 要获得MySQL中的下一个自动增量ID,我们可以使用MySQ ...

  7. Java中如何定义一个数组呢?

    转自: Java中如何定义一个数组呢? 数组(Array)是有序的元素序列.若将有限个类型相同的变量的集合命名,那么这个名称为数组名.组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标 ...

  8. java中如何定义一个_java中如何定义一个方法

    java中如何定义一个方法 发布时间:2020-06-20 16:39:15 来源:亿速云 阅读:88 作者:Leah java中如何定义一个方法?相信很多新手小白还没学会这个技能,通过这篇文章的总结 ...

  9. mysql 删除最后100条_sql-如何回滚我在MySQL中的最后一个删除命令?

    sql-如何回滚我在MySQL中的最后一个删除命令? 我不小心从表中删除了很多行... 如何退回? 我使用PuTTY执行查询. 如果您能安全地指导我,我将不胜感激. 10个解决方案 96 votes ...

最新文章

  1. 九九乘法表Python+Java,你知道多少?
  2. FIXML and FpML - Background, Comparison, Integration Interoperability Opportunities
  3. java中demo接人_return的用法_如何理解java中return的用法?
  4. Effective Objective-C 2.0 初读小结
  5. MYSQL的函数有哪些?(4.3时间与日期函数)
  6. 前端学习(2947):node.js使用
  7. 学会这十九招就会成为股市高手
  8. 通过生日查询各年龄段数量通过饼状图显示
  9. lg函数c语言表达式,lgammal - [ C语言中文开发手册 ] - 在线原生手册 - php中文网
  10. axure购物车加减实现
  11. 将2^n (n=1000000) 转化为10进制输出
  12. Letters[Codeforces-43B]
  13. To Kill a Mockingbird(杀死一只反舌鸟)简记
  14. 从财报看纳德拉上任两年:云服务是最大的突破
  15. office卸载重新安装,并安装mathtype7数学编辑公式
  16. Windows打印机驱动开发
  17. java计算机毕业设计二手车商城源码+mysql数据库+系统+lw文档+部署
  18. html整体垂直居中,实现HTML元素垂直居中的六种方法
  19. 大数据开发认知--spark
  20. 我大121321321321321

热门文章

  1. 计算机及统计学,统计学中及计算机视觉中的各种 距离 汇总。。。
  2. NLP_task4文本表示_CBOW和Skip-gram模型
  3. Linux CentOS集群搭建(三台)(一)
  4. 51单片机:数码管动态显示
  5. 微信小程序picker多列选择器:mode = multiSelector
  6. 中望3D 2021 自动标注
  7. PA-1190201215-冯开来(计算机系统大作业)
  8. 基本触发器和钟控触发器
  9. Ubuntu18.04忘记密码解决(八十七)
  10. go语言下载gin失败解决方案