• MySQL之函数


    什么是函数

    介绍:

      经过预先编译并存储在数据库中的一段SQL语句的集合,理解成批处理语句。

    好处:

    1. 提高了sql语句的重用性,减少了开发人员的压力。

    2. 减少数据在数据库和应用服务器之间的传输。

    3. 提高了数据处理的效率。

    函数和存储过程的区别:

      函数:

        关键字:FUNCTION

        调用语法:SELECT 函数()

        返回值:只能是一个。

        应用场景:一般用于查询结果为一个值并返回时,当有返回值而且仅仅一个。

      存储过程: 

        关键字:PROCEDURE

        调用语法:CALL 存储过程()

        返回值:可以有0个或多个

        应用场景:一般用于做批量插入、批量更新。

    创建函数

    语法:

      CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型

      BEGIN

        函数体

      END

    参数列表:

      参数名 参数类型

    设置新的结束标记:  

      delimiter 新的结束标记(例如:delimiter $

    代码示例:

    delimiter $
    
    CREATE FUNCTION 函数名(参数名  参数类型,...) RETURNS 返回类型
    BEGIN
    
        函数体
        return 值;
    
    END $

    提示:

    函数体肯定会有return语句,如果没有会报错,如果return语句没有放在函数体的最后也不报错,但不建议。

    函数体中仅有一句话,则可以省略begin end

    调用函数

    语法:

      SELECT 函数名(参数列表);

    代码示例:

    /*
     * 1.无参有返回
     */
    #案例:返回公司的员工个数
    DELIMITER $
    CREATE FUNCTION myf1() RETURNS INT
    BEGIN
    
        DECLARE c INT DEFAULT 0;#定义局部变量
        SELECT COUNT(*) INTO c#赋值
        FROM employees;
        RETURN c;
        
    END $
    #调用
    SELECT myf1()$
    
    
    /*
     * 2.有参有返回
     */
    #案例1:根据员工名,返回它的工资
    DELIMITER $
    CREATE FUNCTION myf2(empName VARCHAR(20)) RETURNS DOUBLE
    BEGIN
    
        SET @sal=0;#定义用户变量 
        SELECT salary INTO @sal   #赋值
        FROM employees
        WHERE last_name = empName;
        
        RETURN @sal;
    END $
    #调用
    SELECT myf2('k_ing') $
    
    #案例2:根据部门名,返回该部门的平均工资
    DELIMITER $
    CREATE FUNCTION myf3(deptName VARCHAR(20)) RETURNS DOUBLE
    BEGIN
    
        DECLARE sal DOUBLE ;
        SELECT AVG(salary) INTO sal
        FROM employees e
        JOIN departments d ON e.department_id = d.department_id
        WHERE d.department_name=deptName;
        RETURN sal;
    
    END $
    #调用
    SELECT myf3('IT')$
    
    #案例3:实现传入两个float,返回二者之和
    DELIMITER $
    CREATE FUNCTION myf4(num1 FLOAT,num2 FLOAT) RETURNS FLOAT
    BEGIN
    
        DECLARE SUM FLOAT DEFAULT 0;
        SET SUM = num1 + num2;
        RETURN SUM;
    
    END $
    #调用
    SELECT myf4(1,2)$

    查看函数

    语法:

      SHOW CREATE FUNCTION 函数名;

    代码示例:

    SHOW CREATE FUNCTION myf3;

    删除函数

    语法:

      DROP FUNCTION 函数名;

    代码示例:

    DROP FUNCTION myf3;
  • 相关阅读:
    空矩形星星排列图源程序
    点名源程序
    计数器
    按键
    游戏石头剪刀布
    PCB自动生成总图和子图
    对于电脑中文件的一些处理
    一般电脑软件整体缩进和缩退快捷键
    java从小到大循环打印
    STM(WIFI模块)
  • 原文地址:https://www.cnblogs.com/hfl1996/p/13223338.html
Copyright © 2020-2023  润新知