• lyt经典版MySQL基础——函数


      1 #函数
      2 /*
      3 函数:类似于java中的方法
      4 好处:
      5 1、提高代码的重用性
      6 2、简化操作
      7 
      8 含义:一组预先编译好的SQL语句的集合,理解成批处理语句
      9 1、提高代码的重用性
     10 2、简化操作
     11 3、减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率
     12 
     13 区别:
     14 存储过程:可以有0个返回,也可以有多个返回,适合做批量插入、批量更新
     15 函数:有且仅有1个返回,适合做处理数据后返回一个结果
     16 */
     17 
     18 #一、创建语法
     19 CREATE FUNCTION 函数名(参数列表) RETURNS 返回类型
     20 BEGIN
     21     函数体
     22 END
     23 /*
     24 注意:
     25 1.参数列表 包含两部分:
     26 参数名 参数类型
     27 
     28 2.函数体:肯定会有return语句,如果没有会报错
     29 如果return语句没有放在函数体的最后也不报错,但不建议
     30 
     31 return 值;
     32 
     33 3.函数体中仅有一句话,则可以省略begin end
     34 4.使用delimiter语句设置结束标记
     35 */
     36 
     37 #二、调用语法
     38 SELECT 函数名(参数列表)
     39 
     40 #---------------------案例演示------------------------
     41 #1.无参有返回
     42 #案例:返回公司的员工个数
     43 DELIMITER $
     44 CREATE FUNCTION myf1() RETURNS INT
     45 BEGIN
     46     DECLARE c INT DEFAULT 0; #定义局部变量
     47     SELECT COUNT(*) INTO c #赋值
     48     FROM employees;
     49     RETURN c;
     50 END $
     51 
     52 SELECT myf1()$
     53 
     54 #2.有参有返回
     55 #案例1:根据员工名,返回他的工资
     56 DELIMITER $
     57 CREATE FUNCTION myf2(empName VARCHAR(20)) RETURNS DOUBLE
     58 BEGIN
     59     SET @sal=0; #定义用户变量
     60     SELECT salary INTO @sal #赋值
     61     FROM employees
     62     WHERE last_name=empName;
     63     RETURN @sal;
     64 END $
     65 
     66 SELECT myf2('kochhar') $
     67 
     68 #案例2:根据部门名,返回该部门的平均工资
     69 DELIMITER $
     70 CREATE FUNCTION myf3(deptName VARCHAR(20)) RETURNS DOUBLE
     71 BEGIN
     72     DECLARE sal DOUBLE;
     73     SELECT AVG(salary) INTO sal
     74     FROM employees e JOIN departments d ON e.department_id=d.department_id
     75     WHERE department_name=deptName;
     76     RETURN sal;
     77 END $
     78 
     79 SELECT myf3('IT')$
     80 
     81 #三、查看函数
     82 SHOW CREATE FUNCTION myf3;
     83 
     84 #四、删除函数
     85 DROP FUNCTION myf3;
     86 
     87 #案例
     88 #1、创建函数,实现传入两个float,返回二者之和
     89 DELIMITER $
     90 CREATE FUNCTION myef1(a FLOAT,b FLOAT) RETURNS FLOAT
     91 BEGIN
     92     DECLARE c FLOAT DEFAULT 0;
     93     SET c=a+b;
     94     RETURN c;
     95 END $
     96 
     97 SELECT myef1(1.1,1.2)$
     98 #2、创建函数,实现传入工种名,返回该工种的员工人数
     99 DELIMITER $
    100 CREATE FUNCTION myef2(jobName VARCHAR(20)) RETURNS INT
    101 BEGIN
    102     DECLARE c INT DEFAULT 0;
    103     SELECT COUNT(*) INTO c
    104     FROM employees e JOIN jobs j ON e.job_id=j.job_id
    105     WHERE job_title=jobName;
    106     RETURN c;
    107 END $
    108 
    109 SELECT myef2('Programmer')$
    110 #3、创建函数,实现传入员工名,返回该员工的领导名
    111 DELIMITER $
    112 CREATE FUNCTION myef3(empName VARCHAR(30)) RETURNS VARCHAR
    113 BEGIN
    114     SET @mname='abc';
    115     SELECT m.last_name INTO @mname
    116     FROM employees m JOIN employees e
    117     ON e.manager_id=m.employee_id
    118     WHERE e.last_name=empName;
    119     RETURN @mname;
    120 END $
    121 
    122 SELECT myef3('K_ing')$
  • 相关阅读:
    Python PEP—Python增强提案
    容器技术介绍:Docker简介及安装
    Python笔记:List相关操作
    Python笔记:字符串操作
    Python笔记:属性值设置和判断变量是否存在
    mitmproxy 代理工具介绍:rewrite和map local实现
    接口测试代理工具charles mock测试
    接口测试框架Requests
    JMeter性能测试:JMeter安装及脚本录制回放
    PHP Parse error: parse error, unexpected T_OBJECT_OPERATOR
  • 原文地址:https://www.cnblogs.com/yanwuliu/p/13406210.html
Copyright © 2020-2023  润新知