lyt经典版MySQL基础——函数
时间:2021-07-01 10:21:17
帮助过:10人阅读
#函数
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‘)$
lyt经典版MySQL基础——函数
标签:参数类型 结果 _id 集合 cti manager func 函数 count