Mysql学习笔记(021)-函数

函数

 1 #函数
 2 /*
 3 含义:一组预先编译的sql语句的集合,理解成批处理语句
 4 1.提高代码的重用性
 5 2.简化操作
 6 3.减少了编译次数并且减少了和数据库服务器的连接次数,提高了效率
 7 
 8 区别:
 9 
10 存储过程:可以有0个返回,也可以有多个返回,适合批量插入、批量更新
11 函数:有且只有一个返回,适合做处理数据后返回一个方结果
12 
13 
14 */
15 
16 #一、创建语法
17 CREATE FUNCTION 函数名{参数列表} RETURNS 返回类型
18 BEGIN
19     函数体
20 END
21 /*
22 
23 注意:
24 1、参数列表包含两部分;
25 参数名 参数类型
26 
27 2、函数体:肯定有return语句,如果没有回报错
28 如果return语句没有放在函数体的最后也不报错,但不建议
29 
30 return 值:
31 3、函数体中仅有一句话,则可以省略begin end
32 4、使用delimiter语句设置结束标记
33 
34 */
35 
36 #二、调用语法
37 SELECT 函数名(参数列表)
38 
39 
40 #---------------------案例演示---------------
41 #1、无参有返回的
42 #案例:返回公司的员工个数
43 CREATE FUNCTION myf1() RETURNS INT
44 BEGIN    
45     DECLARE c IN DEFAULT 0;#定义变量
46     SELECT COUNT(*) INTO c#赋值
47     FROM employees;
48     RETURN c;
49 END $
50 
51 SELECT myf1()$
52 
53 #2、有参数有返回
54 #案例1:根据员工名返回他的工资
55 CREATE FUNCTION myf2(empName VARCHAR(20)) RETURNS DOUBLE
56 BEGIN
57     SET @sal=0;#定义了用户变量
58     SELECT salary INTO @sal #赋值
59     FROM employees WHERE last_name=empName;
60     
61     RETURN @sal;
62 END $ 
63 
64 SELECT myf2('kochhar') $
65 
66 #案例2:根据部门名,返回该部门的平均工资
67 CREATE FUNCTION myf3(deptName, VARCHAR(20)) RETURNS DOUBLE
68 BEGIN
69     DECLARE sal DOUBLE;
70     SELECT AVG(salary) INTO sal
71     FROM employees e
72     JOIN departments d ON e.department_id = d.department_id
73     WHERE d.department_name = deptName;
74     
75     RETURN sal;
76 END $
77 
78 SELECT myf3('IT') $
79 
80 #三、查看函数
81 SHOW CREATE FUNCTION myf3;
82 
83 #四、删除函数
84 DROP FUNCTION myf3;
85 
86 
87 #案例
88 #一、创建函数,实现传入两个float,返回二者之和
89 
90 CREATE FUNCTION test_fun1(num1 FLOAT,num2 FLOAT) RETURNS FLOAT
91 BEGIN
92     DECLARE FLOAT SUM DEFAULT 0;
93     SELECT SUM=num1 + num2
94     RETURN SUM;
95 END $
96 SELECT test_fun1(1,2)$

 

案例讲解

小结

posted @ 2020-03-11 17:33  klandehu  阅读(146)  评论(0)    收藏  举报