内容正文:
MySQL数据库应用开发
任务7.2 MYSQL函数
引导案例
在学生管理系统中,有些数据操作经常发生。例如,经常需要根据姓名查询一个学生的所有选修课的信息;学生表中的学生信息一有增减,就需要自动修改班级表中的班级人数。在高级语言中,需要重复执行的代码可以设计为函数或者过程。同样,在数据库系统中,可以通过用户定义函数、存储过程、触发器等技术来实现上述功能。本任务介绍用户定义函数、存储过程、触发器等技术。
任务7.2 MYSQL函数
函数简介与操作
存储过程与函数的区别
知识点小结
本节实验
任务7.2 MySQL函数
能力目标
1.掌握函数的概念、函数和存储过程的区别(重点);
2.掌握函数的创建与使用(难点)。
思政目标
1.培养学生的爱国思想;
2.培养学生敢于质疑,大胆创新精神。
复习
什么是存储过程?
怎样创建存储过程?
任务7.2 MYSQL函数
在MySQL中,除了系统内置的函数外,用户可以在数据库中自己定义函数。
用户自定义函数是由一个或多个SQL语句组成的子程序,它可以接受参数、执行操作,并将操作结果以值的形式返回。
任务7.2 MYSQL函数
在MySQL中使用用户定义函数有以下优点:
(1)允许模块化程序设计
函数存储在数据库中,只需创建一次,以后便可以在程序中调用任意次。用户定义函数可以独立于程序源代码进行修改。
(2)执行速度更快
SQL 用户定义函数通过缓存计划并在重复执行时重用它来降低 SQL代码的编译开销。因此每次使用用户定义函数时均无须重新解析和重新优化,从而缩短了执行时间。
(3)减少网络流量
某些约束比较复杂,无法用单一标量的表达式表示,此时可以表示为函数,在SELECT语句中调用,以减少发送至客户端的数据量。
存储过程和函数区别
一般来说,存储过程实现的功能要复杂一点,而函数的实现的功能针对性比较强。
对于存储过程来说可以返回参数,如记录集,而函数只能返回值或者表对象。函数只能返回一个变量;而存储过程可以返回多个。存储过程声明时不需要返回类型,而函数声明时需要描述返回类型,且函数体中必须包含一个有效的return语句。
存储过程和函数区别
存储过程一般是作为一个独立的部分来执行( call 语句执行),而函数可以作为查询语句的一个部分来调用(select调用)。
创建存储函数
创建存储函数语法格式:
CREATE FUNCTION 函数名( [参数名 参数类型 [,…n ] ] )
RETURNS 返回值类型
BEGIN
函数体
RETURN 标量值表达式
END
调用存储函数的语法格式:
select 函数名([函数参数[,…]])
创建存储函数
案例1:统计某班男女生同学的比例
分析:
(1)统计数据出自哪个表?
(2)需要哪些参数?
(3)返回值类型?
(4)统计人数用哪个聚合函数?
create function 某班男女生比例(banhao char(8))
returns float
return (select count(*) from student where ssex='男' and ClassNo=banhao)/
(select count(*) from student where ssex='女' and ClassNo=banhao);
select 某班男女生比例(‘CI202101')
创建存储函数
案例2:创建用户定义函数,其功能是可用于查看某学生某课程的成绩单。
create function 某学生成绩单(xuehao varchar(10),kechenghao varchar(8))
returns FLOAT
BEGIN
declare chengji FLOAT;
select grade into chengji from sc where Sno=xuehao and Cno=kechenghao;
if chengji is null THEN
return (select '0');
ELSE
return (select chengji);
end if;
END
流程控制语句——循环结构
MySQL提供了3种循环语句,分别是WHIL