我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL数据库之内置函数和自定义函数 function

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL数据库之内置函数和自定义函数 function

前言:

函数分为两类:系统函数和自定义函数

使用函数:

select 函数名(参数列表);

1、内置函数

1.1、字符串函数

函数名说明
char_length判断字符串的字符数
length判断字符串的字节数,与字符集有关
concat连接字符串
insrt检查字符是否在目标字符串中,存在返回其位置,不存在返回 0
lcase全部小写
ltrim消除左边的空格
left(str, length)左侧开始截取字符串,直到指定位置
right(str, length)右侧开始截取字符串,直到指定位置
mid从中间指定位置开始截取,如果不指定截取长度,直接到最后
substring(str, index, [length])从指定位置开始,指定截取长度
substring_index(str, delim, count)按照关键字截取

示例:

select char_length('你好中国'); // 4
select length('你好中国'); // 12
select length('hello'); // 5
select char_length('hello'); // 5
select concat('你好', '中国'); // 你好中国
-- 下标从 1 开始
select instr('你好中国', '中国'); // 3
select instr('你好中国', '我'); // 0
select lcase('aBcd'); // abcd
select left('aBcd', 2); // aB
select right('abcdef', 2); // ef
select substring('abcdef', 2, 3); // bcd
select substring('abcdef', -2, 3); // ef
select ltrim(' abc d '); // abc d
select mid('你好中国', 3); // 中国
select substring_index('www.baidu.com', '.', 2); // www.baidu
select substring_index('www.baidu.com', '.', -2); // baidu.com

1.2、时间函数

函数名说明
now()返回当前时间,日期 时间
curdate()当前日期
curtime()当前时间
datediff()判断两个日期之间的天数之差,日期使用字符串格式(用引号)
date_add(日期, interval 时间数字 type)时间增加(type:
unix_timestamp()获取时间戳
from_unixtime()将指定时间戳转换成对应的日期时间格式

示例:

select now(); // 2022-04-10 22:05:38
select curdate(); // 2022-04-10
select curtime(); // 22:05:51
select datediff('2022-01-09', '2022-01-01'); // 8
select date_add('2000-10-01', interval 10 day); // 2000-10-11
select unix_timestamp(); // 1649599799
select from_unixtime(1649599799); // 2022-04-10 22:09:59

1.3、数学函数

函数名说明
abs绝对值
ceiling向上取整
floor向下取整
pow指数
rand随机数(0-1)
round四舍五入

示例:

select abs(-1); // 1
select ceiling(1.1); // 2
select floor(1.9); // 1
select pow(2, 4); // 16
select rand(); // 0.2616088308967732
select round(1.5); // 2

1.4、其他函数

函数名说明
md5()MD5
version()版本号
database()显示当前所在数据库
uuid()生成一个唯一标识符,全局唯一

示例:

select md5('abc'); // 900150983cd24fb0d6963f7d28e17f72
select version(); // 8.0.16
select database(); // mydatabase
select uuid(); // c44a06a2-b8d8-11ec-a53c-504259f9d746

2、自定义函数

mysql一旦见到分号结束符,就会开始执行

修改语句结束符

基本语法:

delimiter 符号;

2.1、创建函数

基本语法:

-- 修改语句结束符
delimiter $$;
create function 函数名(形参) returns 返回值类型
begin
    // 函数体
    return 返回值数据;
end
语句结束符
-- 将语句结束符修改回来
delimiter ;

示例:

-- 修改语句结束符
delimiter $$
create function my_func1() returns int
begin
    return 10;
end
-- 结束
$$
-- 将语句结束符改回来
delimiter ;

如果只有一条语句,可以省略begin 和 end

-- 最简单的函数
create function foo() returns int
return 10;

为函数的形参指定数据类型

基本语法:

形参 数据类型

示例:

create function my_func2(a int, b int) returns int
return a * b;

2.2、查看函数

基本语法:

show function status [like 'pattern'];

示例:

-- 查看所有函数
show function status\G
-- 查看单个函数
mysql> show function status like 'foo'\G
*************************** 1. row ***************************
                  Db: mydatabase
                Name: foo
                Type: FUNCTION
             Definer: root@localhost
            Modified: 2022-04-10 22:34:06
             Created: 2022-04-10 22:34:06
       Security_type: DEFINER
             Comment:
character_set_client: utf8mb4
collation_connection: utf8mb4_general_ci
  Database Collation: utf8mb4_general_ci
1 row in set (0.00 sec)
-- 查看函数创建语句
mysql> show create function foo\G
*************************** 1. row ***************************
            Function: foo
            sql_mode: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
     Create Function: CREATE DEFINER=`root`@`localhost` FUNCTION `foo`() RETURNS int(11)
return 10
character_set_client: utf8mb4
collation_connection: utf8mb4_general_ci
  Database Collation: utf8mb4_general_ci
1 row in set (0.01 sec)

2.3、调用函数

基本语法

select 函数名(实参列表);

示例:

mysql> select foo();
+-------+
| foo() |
+-------+
|    10 |
+-------+
mysql> select my_func2(2, 3);
+----------------+
| my_func2(2, 3) |
+----------------+
|              6 |
+----------------+

2.4、删除函数

基本语法

drop function 函数名;

示例:

drop function my_func1;

2.5、注意事项

  • 自定义函数属于用户级别,只有当前客户端对应的数据库中可以使用
  • 可以在不同数据库下看到函数,但是不可以调用
  • 自定义函数通常是为了将多行代码集合到一起解决一个重复性的问题

4.函数必须规范返回值,那么在函数内部不能使用select指令,select一旦执行就会的到一个结果集 result set;

可以使用给变量赋值语句

select 字段 into @变量;

3、函数流程结构案例

需求:

从1开始,直到用户传入的对应的值位置,自动求和,凡是5的倍数都不要

设计:

  • 创建函数
  • 需要一个形参,确定要累加到什么位置
  • 需要定义一个变量来保存对应的结果
  • 内容部需要一个循环来实现迭代累加
  • 循环内部需要进行条件判断控制,5的倍数

定义函数:

-- 创建一个自动求和的函数
-- 修改语句结束符
delimiter $$
-- 创建函数
create function my_sum(end_value int) returns int
begin
    -- 声明局部变量
    declare res int default 0;
    declare i int default 0;
    -- 循环处理
    mywhile: while i <= end_value do
        -- mysql中没有++
        set i = i + 1; 
        --  判断当前数据是否合理
        if i % 5 = 0 then
            iterate mywhile;
        end if;
        -- 修改变量,累加
        set res = res + i;
    end while;
    -- 返回值
    return res;
end

-- 结束
$$
-- 修改语句结束符
delimiter ;

调用函数:

-- 实参个数必须等于形参个数
select my_sum(10);

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL数据库之内置函数和自定义函数 function

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL数据库之内置函数和自定义函数 function

目录1、内置函数1.1、字符串函数1.2、时间函数1.3、数学函数1.4、其他函数2、自定义函数2.1、创建函数2.2、查看函数2.3、调用函数2.4、删除函数2.5、注意事项3、函数流程结构案例前言:函数分为两类:系统函数和自定义函数
2022-06-15

MySQL内置函数和自定义函数怎么使用

这篇“MySQL内置函数和自定义函数怎么使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL内置函数和自定义函数怎么
2023-07-02

mysql 自定义函数

-- 如果存在hello这个名称的函数则删除hellodrop FUNCTION if exists hello;-- 创建一个叫hello的函数返回值为int类型,参数为varchar类型 参数名称为usernameCREATE FUNCTION hello
2016-12-27

自定义 PHP 函数和预定义函数之间有什么区别?

自定义 php 函数与预定义函数的区别在于:作用域: 自定义函数仅限于其定义范围,而预定义函数可在整个脚本中访问。定义方式: 自定义函数使用 function 关键字定义,而预定义函数由 php 内核定义。参数传递: 自定义函数接收参数,而
自定义 PHP 函数和预定义函数之间有什么区别?
2024-04-22

使用 PHP 内置函数和自定义函数去重数组的性能对比

array_unique() 是去重数组性能最好的内置函数。哈希表法自定义函数性能最优,哈希值用作键,值为空。循环法实现简单但效率低,建议使用内置或自定义函数进行去重。array_unique() 耗时 0.02 秒、array_rever
使用 PHP 内置函数和自定义函数去重数组的性能对比
2024-04-26

python3学习之自定义函数

静态参数:def  函数名(参数1,参数2=默认值):"""注释文档"""    print("测试")    return "abc"说明:参数可以有多个,并可以指定默认值;一定要写注释文档动态参数:def  函数名(*args):  
2023-01-31

Shell之function函数的定义及调用示例

目录function函数的定义及调用function函数的定义 function函数的调用【位置传参】函数使用return返回值【位置传参】函数的调用【数组传参】function函数的定义及调用 将一些相对独立的代码变成函数,可以提高程序的
2022-08-08

PHP数组反转:内置函数与自定义算法

php反转数组可通过以下方式:内置函数array_reverse():直接对原数组进行反转。自定义算法:通过遍历数组从尾到头,将元素依次添加到新数组中。实际应用场景包括:实现栈或队列、进行数组比较等。PHP数组反转:内置函数与自定义算法在
PHP数组反转:内置函数与自定义算法
2024-04-28

Linux下怎么编写和使用自定义的Shell函数和函数库

本篇内容主要讲解“Linux下怎么编写和使用自定义的Shell函数和函数库”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux下怎么编写和使用自定义的Shell函数和函数库”吧!在 Linu
2023-06-16

编程热搜

目录