当前位置:首页 > 文章列表 > 数据库 > MySQL > MySQL内置函数和自定义函数怎么使用

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

来源:亿速云 2023-04-30 08:23:07 0浏览 收藏

从现在开始,努力学习吧!本文《MySQL内置函数和自定义函数怎么使用》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

    前言:

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

    使用函数:

    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 <p><strong>调用函数:</strong></p><pre class="brush:sql;">-- 实参个数必须等于形参个数
    select my_sum(10);

    终于介绍完啦!小伙伴们,这篇关于《MySQL内置函数和自定义函数怎么使用》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布数据库相关知识,快来关注吧!

    版本声明
    本文转载于:亿速云 如有侵犯,请联系study_golang@163.com删除
    如何用php查询mysql数据表如何用php查询mysql数据表
    上一篇
    如何用php查询mysql数据表
    Python操作MySQL如何创建时间、更新时间
    下一篇
    Python操作MySQL如何创建时间、更新时间
    查看更多
    最新文章
    查看更多
    课程推荐
    • 前端进阶之JavaScript设计模式
      前端进阶之JavaScript设计模式
      设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
      542次学习
    • GO语言核心编程课程
      GO语言核心编程课程
      本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
      510次学习
    • 简单聊聊mysql8与网络通信
      简单聊聊mysql8与网络通信
      如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
      498次学习
    • JavaScript正则表达式基础与实战
      JavaScript正则表达式基础与实战
      在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
      487次学习
    • 从零制作响应式网站—Grid布局
      从零制作响应式网站—Grid布局
      本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
      484次学习
    查看更多
    AI推荐
    • AI边界平台:智能对话、写作、画图,一站式解决方案
      边界AI平台
      探索AI边界平台,领先的智能AI对话、写作与画图生成工具。高效便捷,满足多样化需求。立即体验!
      397次使用
    • 讯飞AI大学堂免费AI认证证书:大模型工程师认证,提升您的职场竞争力
      免费AI认证证书
      科大讯飞AI大学堂推出免费大模型工程师认证,助力您掌握AI技能,提升职场竞争力。体系化学习,实战项目,权威认证,助您成为企业级大模型应用人才。
      405次使用
    • 茅茅虫AIGC检测:精准识别AI生成内容,保障学术诚信
      茅茅虫AIGC检测
      茅茅虫AIGC检测,湖南茅茅虫科技有限公司倾力打造,运用NLP技术精准识别AI生成文本,提供论文、专著等学术文本的AIGC检测服务。支持多种格式,生成可视化报告,保障您的学术诚信和内容质量。
      543次使用
    • 赛林匹克平台:科技赛事聚合,赋能AI、算力、量子计算创新
      赛林匹克平台(Challympics)
      探索赛林匹克平台Challympics,一个聚焦人工智能、算力算法、量子计算等前沿技术的赛事聚合平台。连接产学研用,助力科技创新与产业升级。
      641次使用
    • SEO  笔格AIPPT:AI智能PPT制作,免费生成,高效演示
      笔格AIPPT
      SEO 笔格AIPPT是135编辑器推出的AI智能PPT制作平台,依托DeepSeek大模型,实现智能大纲生成、一键PPT生成、AI文字优化、图像生成等功能。免费试用,提升PPT制作效率,适用于商务演示、教育培训等多种场景。
      549次使用
    微信登录更方便
    • 密码登录
    • 注册账号
    登录即同意 用户协议隐私政策
    返回登录
    • 重置密码