MySQL:函数

函数

在mysql中,函数分为两类:系统函数(内置函数)和自定义函数

不管是内置函数还是用户自定义函数,都是使用select 函数名(参数列表);

内置函数

字符串函数

Char_length():判断字符串的字符数
Length():判断字符串的字节数(与字符集)

MySQL:函数

Concat():连接字符串
Instr():判断字符在目标字符串中是否存在,存在返回其位置,不存在返回0

MySQL:函数

Lcase():全部小写
Left():从左侧开始截取,直到指定位置(位置如果超过长度,截取所有)

MySQL:函数

Ltrim():消除左边对应的空格
Mid():从中间指定位置开始截取,如果不指定截取长度,直接到最后

MySQL:函数

时间函数

Now():返回当前时间,日期 时间
Curdate():返回当前日期
Curtime():返回当前时间

MySQL:函数

Datediff():判断两个日期之间的天数差距,参数日期必须使用字符串格式(用引号)

MySQL:函数

Date_add(日期,interval 时间数字 type):进行时间的增加
Type:day/hour/minute/second

MySQL:函数

 Unix_timestamp():获取时间戳

MySQL:函数

From_unixtime():将指定时间戳转换成对应的日期时间格式

MySQL:函数

数学函数

Abs():绝对值
Ceiling():向上取整
Floor():向下取整
Pow():求指数,谁的多少次方
Rand():获取一个随机数(0-1之间)
Round():四舍五入函数
DIV():整数除法

MySQL:函数

信息函数

Connection_ID():连接ID
Datebase():当前数据库
Last_Insert_Id():最后插入记录的ID号
User():当前用户
Version():版本信息

其他函数

Md5():对数据进行md5加密(mysql中的md5与其他任何地方的md5加密出来的内容是完全相同的)
UUID():生成一个唯一标识符(自增长):自增长是单表唯一,UUID是整库(数据唯一同时空间唯一)

MySQL:函数

自定义函数

自定义函数:用户自己定义的函数

函数:实现某种功能的语句块(由多条语句组成)

1、 函数内部的每条指令都是一个独立的个体:需要符合语句定义规范:需要语句结束符分号;

2、 函数是一个整体,而且函数是在调用的时候才会被执行,那么当设计函数的时候,意味着整体不能被中断;

3、 Mysql一旦见到语句结束符分号,就会自动开始执行

解决方案:在定义函数之前,尝试修改临时的语句结束符

基本语法:delimiter

修改临时语句结束符:delimiter 新符号[可以使用系统非内置即可$$]

中间为正常SQL指令:使用分号结束(系统不会执行:不认识分号)

使用新符号结束

修改回语句结束符:delimiter ;

创建函数

自定义函数包含几个要素:function关键字,函数名,参数(形参和实参[可选]),确认函数返回值类型,函数体,返回值//MySQL规定参数数量一般不超过1024

函数定义基本语法:

修改语句结束符
Create function 函数名(形参) returns 返回值类型
Begin
    函数体
    Return 返回值数据; --数据必须与结构中定义的返回值类型一致
End
语句结束符
修改语句结束符(改回来)

MySQL:函数

并不是所有的函数都需要begin和end:如果函数体本身只有一条指令(return),那么可以省略begin和end

MySQL:函数

形参:在mysql中需要为函数的形参指定数据类型(形参本身可以有多个)

基本语法:变量名 字段类型

MySQL:函数

查看函数

1、 可以通过查看function状态,查看所有的函数:show function status [like 'pattern'];

MySQL:函数

2、 查看函数的创建语句:show create function 函数名字;

MySQL:函数

调用函数

自定义函数的调用与内置函数的调用是一样的:select 函数名(实参列表);

MySQL:函数

删除函数

删除函数:drop function 函数名;

MySQL:函数

注意事项

1、 自定义函数是属于用户级别的:只有当前客户端对应的数据库中可以使用

2、 可以在不同的数据库下看到对应的函数,但是不可以调用

MySQL:函数

3、 自定义函数:通常是为了将多行代码集合到一起解决一个重复性的问题

4、 函数因为必须规范返回值:那么在函数内部不能使用select指令:select一旦执行就会得到一个结果(result set):select 字段 into @变量;(唯一可用)