zoukankan      html  css  js  c++  java
  • MySQL之运算符与函数、自定义函数

     一自定义函数简介

            (1)自定义函数定义

            用户自定义函数(user-defined function,UDF)是一种对MySQL数据库扩展的途径,其用法与内置函数相同。

            (2)自定义函数的两个必要条件

            1)参数:可以有零个或多个。

            2)返回值:只能有一个返回值。

           使用自定义函数的注意事项

           1)所有函数都有返回值,但不一定都有参数。

           2)函数的参数与返回值之间没有必然的内在联系。

           3)函数可以返回任意类型的值,同样可以接收这些类型的参数。

           (3)创建自定义函数

           创建自定义函数的语法结构:

           CREATE FUNCTION function_name RETURNS {STRING|INTEGER|REAL|DECIMAL} routine_body;

           (4)函数体

           1)函数体由合法的SQL语句构成。

           2)函数体可以是简单的SELECT或INSERT语句。

           3)函数体如果为复合结构则使用BRGIN...END语句。

           4)复合结构可以包含声明,循环,控制结构。

           二创建不带参数的自定义函数

           实例:

           查看当前日期时间和格式化当前时间

           SELECT NOW();

           SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日 %H点:%i分:%s秒');

           对于习惯使用日期时间的来说,我们并不习惯上面的第一个,第二个格式化后的时间我们比较认同。每次都去格

    式化日期时间会比较麻烦,因此我们考虑把这个过程自定义为一个函数。

           将上面的过程封装为一个函数

           CREATE FUNCTION f1() RETURNS VARCHAR(30) RETURN DATE_FORMAT(NOW(),'%Y年%m月%d日 %H

    点:%i分:%s秒');

           调用函数

           SELECT f1();

           三创建带有参数的自定义函数

           自定义一个求两个数的平均数的函数,要求结果保留两位小数。

           CREATE FUNCTION f2(num1 SMALLINT UNSIGNED,num2 SMALLINT UNSIGNED) RETURNS  FLOAT(10,2)

     UNSIGNED RETURN (num1+num2)/2;

           调用函数

           SELECT f2(10,15);

           四创建具有复合结构函数体的自定义函数

           自定义一个返回最后插入数据表的记录并且返回最后一个插入的ID号的函数

           USE t1;

           SELECT * FROM test;

           CREATE FUNCTION adduser(username VARCHAR(20)) RETURNS  INT  UNSIGNED BEGIN INSERT 

    test(username) VALUES(username); RETURN LAST_INSERT_ID(); END;

           上面报错的原因是MySQL语句结束符号报错,我们平常一般的MySQL语句都是以;结束,但是复合结构中包括插

    入语句,查询语句等子SQL语句,而每个语句都会以;结束,因此MySQL数据库的客户端只会识别第一个;号,后面的

    内容不再读取,因此造成语句出错。

           我们做出以下修改:

           修改语句的结束符号

            DELIMITER //

            创建自定义函数

            CREATE FUNCTION adduser(username VARCHAR(20)) RETURNS  INT  UNSIGNED BEGIN INSERT 

    test(username) VALUES(username); RETURN LAST_INSERT_ID(); END//

            DELIMITER ;

            调用函数

            SELECT adduser('Lee');

            SELECT * FROM test;

            五自定义函数的查找

            自定义函数的查找

            SHOW FUNCTION STATUSG;

            六删除函数

            删除函数的语法结构:

            DROP FUNCTION [IF EXISTS] function_name;

  • 相关阅读:
    Android UI组件之自定义控件实现IP地址控件
    封装一个类搞定90%安卓客户端与服务器端交互
    深入理解 RecyclerView 系列之:ItemDecoration
    Android开发技巧——设置系统状态栏颜色
    Activity,Fragment的状态保存
    Activity生命周期函数、onSaveInstanceState()和onRestoreInstanceState()的介绍
    Android Fragment生命周期
    恢复云数据库MySQL的备份文件到自建数据库遇到的报错
    如何在宿主机上查看kvm虚拟机的IP
    批量分发公钥脚本
  • 原文地址:https://www.cnblogs.com/miercler/p/5562634.html
Copyright © 2011-2022 走看看