MySql 函数以及储存过程

1.MySql 字符函数

mysql 为用户提供了一些函数来处理数据操作

在这里插入图片描述在这里插入图片描述

2.MySql 比较运算符函数

在这里插入图片描述 CEIL():小数点后多了非零的内容,就会进一取整
DIV():等同于 除号 / ,但是结果为整数
FLOOR(): 取整,非四舍五入

在这里插入图片描述

3.MySql 日期时间函数(了解即可,一般使用程序语言来处理时间格式)

在这里插入图片描述

DATE_ADD:用法如下
在这里插入图片描述DATEDIFF():接受两个参数,时间字符串。例如:DATEDIFF(‘1998-10-10’,‘1999-11-12’)

4.MySql 信息函数

在这里插入图片描述LAST_INSERT_ID: 用法如下
在这里插入图片描述

5.MySql 聚合函数

在这里插入图片描述聚合函数必须配合表来一起操作

MAX 与 MIN :需要配合分组使用,否则报错。使用方法如下
在这里插入图片描述

5.MySql 密码函数

在这里插入图片描述一般只会用到 MD5()

6.MySql 自定义函数

6.1. 自定义简单结构函数

必要条件:参数 、返回值
函数可以返回任意类型的参数 以及 所 接收的返回值
定义方法:(函数名具有唯一性)
CREATE FUNCTION 函数名(参数名 , 参数类型)(要给每一个参数指定类型,可以有多个参数)
RETURNS
{ 字段类型 }
函数体

删除方法:DROP FUNCTION [IF EXIST] 函数名
函数体由合法 MySQL 语句组成。可以是简单的 INSERT 或 SELECT 语句。
如果为复合结构,则使用 BEGIN…END 语句
符合结构可以包含声明、循环、控制结构等

下面创建一个格式化当前时间的函数
在这里插入图片描述
使用
在这里插入图片描述
注意:创建过程中若是报此错误(当前操作不被信任)
在这里插入图片描述
在 my.ini 配置文件中,输入log-bin-strust-function-creators = 1即可

6.2. 自定义复杂结构函数

与普通函数一样,复杂结构体只需要在定义时,给结构体 加上 BEGIN....END即可

定义方法:(函数名具有唯一性)
CREATE FUNCTION 函数名(参数名 , 参数类型)(要给每一个参数指定类型,可以有多个参数)
RETURNS
{ 字段类型 }
BEGIN
函数体
END
下面来定义一下
在这里插入图片描述
注意 :语句最后使用的 // 需要使用 DELIMITER 来定义执行符号。不定义会出错,定义完后再改回来即可,如下
在这里插入图片描述
在这里插入图片描述

7.MySql 存储过程

先来看看 mysql 执行机制
在这里插入图片描述相比上图的执行机制,使用 mysql 存储过程更加有效率。

简单来说,存储过程就是使多项步骤融合成一项,提高运行效率

创建命令
CREATE PROCEDURE 函数名称(参数 参数类型)
函数体

参数含义
IN :表示该参数的值必须再调用存储过程时指定
OUT :表示该参数的值可以被存储过程改变并返回
INOUT:上面二者的并集

注意:

  • 存储过程函数的调用需要使用 CALL 关键字
  • 参数也不能与字段同名,会出现问题

在这里插入图片描述
下面创建一个带有参数的函数。实现根据 ID 删除表中数据,并返回当前表中的剩余项目数
在这里插入图片描述
上面的 INTO 表示将查询出的结果复制都给 c_nums 参数
在这里插入图片描述
使用完成,删除并得到返回值。
注意:上面参数中使用的 @num 定义为变量,可以在 mysql 中使用 @名称 自定义变量,可用SELECT 语句查找

在这里插入图片描述

8.MySql 存储过程与函数的区别

  • 存储过程实现功能可以相对复杂;函数的针对性更强,一个函数就负责一个功能。
  • 储存过程可以返回多个值;函数只有一个返回值
  • 储存过程独立执行;函数可以作为其他 mysql 语句的组成部分出现,例如SELECT COUNT(id) FROM user

猜你喜欢

转载自blog.csdn.net/pspxuan/article/details/105374294