zoukankan      html  css  js  c++  java
  • 【DataBase】MySQL 27 函数

    一、概述

    函数 Function,存储过程的用途一致,减少程序逻辑,和数据库服务的连接次数,提高效率

    简化操作,提高SQL重用性

    函数 和 存储过程的区别?

     存储过程允许多个返回的数据,函数只允许一个返回数据

    适用场景:

    存储过程适合、批量插入、更新

    函数适合处理数据后返回一个结果

    二、语法 Syntax

    创建函数

    CREATE FUNCTION 函数名称(参数列表)RETURNS 返回类型
    BEGIN
        函数体
    END

    参数写法:

    参数名 参数类型

    语法注意

    1、函数体必须要写上return语句

    2、如果只有一条函数语句可以省略BEGIN & END

    3、使用 DELIMITER 语句作为设置结束标记语句

    调用语法

    SELECT 函数名称(参数列表)

    三、样例演示

    1、无参数有返回

    查询全部员工人数

    DELIMITER $
    
    CREATE FUNCTION employeeCount() RETURNS INT
    BEGIN
    	DECLARE c INT DEFAULT 0;
    	SELECT 
    		COUNT(*)
    	INTO 
    		c
    	FROM
    		employees;
    	RETURN c;
    END$

    调用:

    # SELECT employeeCount();
    SELECT employeeCount() AS '员工人数';
    

    2、有参数有返回

    根据员工名返回工资:

    DELIMITER $
    CREATE FUNCTION querySalaryByEmployeeName
    (
    employeeName VARCHAR(20)
    )
     RETURNS DOUBLE
    
    BEGIN
    	# DECLARE salary DOUBLE DEFAULT 0;
    	SET @salary = 0;
    	
    	SELECT 
    		salary
    	INTO 
    		@salary
    	FROM
    		employees
    	WHERE
    		employees.`last_name` = employeeName;
    	
    	RETURN @salary;
    END $

    调用

    SELECT querySalaryByEmployeeName('Kochhar') AS '工资';

    根据部门名返回该部门平均工资:

    DELIMITER $
    
    CREATE FUNCTION queryAvgSalaryByDepartmentName
    (
    departmentName VARCHAR(20)
    ) 
    RETURNS DOUBLE
    
    BEGIN
    	DECLARE avgSalary DOUBLE DEFAULT 0;
    	
    	SELECT 
    		AVG(e.salary)
    	INTO 
    		avgSalary
    	FROM
    		employees e JOIN departments d ON e.department_id
    	WHERE
    		d.department_name = departmentName;
    		
    	RETURN avgSalary;
    END $

     调用函数:

    SELECT queryAvgSalaryByDepartmentName('IT') AS '平均工资';
    

    四、函数的查看与删除

    查看函数的语法:

    SHOW CREATE FUNCTION 函数名称;
    

    或者是直接找到系统进行查看:

    mysql库 -> proc表
    

    删除函数的语法:

    DROP FUNCTION 函数名

    修改和存储过程一样没有实际意义,不赘述了

  • 相关阅读:
    Java Web学习总结(16)——JSP的九个内置对象
    Java Web学习总结(15)——JSP指令
    【我的物联网成长记11】8招带你玩转规则引擎
    云图说|高效管理华为云SAP的“秘密武器”
    Python 中更优雅的日志记录方案
    有了它,Python编码再也不为字符集问题而发愁了!
    【鲲鹏来了】手把手教你创造一个属于自己的鲲鹏开发者环境
    解密昇腾AI处理器--DaVinci架构(计算单元)
    使用Keil5构建GD32450i-EVAL工程
    云图说|SAP技术画册“一点通”
  • 原文地址:https://www.cnblogs.com/mindzone/p/12807810.html
Copyright © 2011-2022 走看看