文档详情

数据库技术项目式教程(MySQL)课件 项目8 函数和存储过程.pptx

发布:2025-04-29约4.08千字共62页下载文档
文本预览下载声明

使用函数;任务提出;任务分析;(1)数学函数;(2)字符串函数;(2)字符串函数;(3)日期和时间函数;(3)日期和时间函数;(4)控制流程函数;【例1】在School数据库中查询出所有学生学号、学生姓名、课程编号、课程名称、期末成绩,要求期末成绩显示为五级制。

SELECTStudent.Sno,Sname,Course.Cno,Cname,

(CASEWHENEndscore=90THEN优秀

WHENEndscore=80THEN良好

WHENEndscore=70THEN中等

WHENEndscore=60THEN及格

WHENEndscore60THEN‘不及格

END)AS成绩

FROMStudentJOINScoreONStudent.Sno=Score.Sno

JOINCourseONCourse.Cno=Score.Cno;;【例2】CASE的独到用处——行转列功能。

统计每个班级男生人数和女生人数。

;【例2】统计每个班级男生人数和女生人数。

SELECTClassNo,SUM(CASEsexWHEN男THEN1ELSE0END)AS男生人数,SUM(CASEsexWHEN女THEN1ELSE0END)AS女生人数

FROMStudent

GROUPBYClassNo;

;(5)其他常用函数;2.用户自定义函数;(1)创建函数;DELIMITER语句;【例3】在School数据库中创建函数calculate_age,根据输入的出生日期计算年龄。

DELIMITER//

CREATEFUNCTIONcalculate_age(birthdate)RETURNSINT

BEGIN

RETURNTIMESTAMPDIFF(YEAR,birth,CURDATE());

END;

//

DELIMITER;

#使用该函数查询出所有学生的学号、姓名和年龄。

SELECTSno,Sname,calculate_age(birth)asage

FROMStudent;;(2)管理函数;【练习1】创建函数rand_num,根据输入的整数n,返回一个1至n之间的随机整数。;任务总结;使用变量和流程控制语句;任务提出;任务分析;1.局部变量;局部变量;【例1】创建函数adds,返回两个数的和,使用局部变量。

DELIMITER//

CREATEFUNCTIONadds(aINT,bINT)RETURNSINT

BEGIN

DECLAREcINTDEFAULT0;#定义c为局部变量

setc=a+b;

RETURNc;

END;

//

DELIMITER;

#使用函数

SELECTAdds(2,3);

;2.选择语句;【例2】创建函数is_even,判断某个数是否为偶数,如果是返回1,否则返回0。

DELIMITER//

createFUNCTIONis_even(numint)RETURNSINT

begin

IFnum%2=0THEN

RETURN1;

ELSE

RETURN0;

ENDIF;

end;

//

DELIMITER;?;选择语句;【例3】在School数据库创建函数convert_grade,返回输入百分制成绩对应的五级制字符。

CREATEFUNCTIONconvert_grade(gradeDECIMAL(4,1))RETURNSVARCHAR(50)

BEGIN

DECLAREresultVARCHAR(50);

CASE

WHENgrade=90THENSETresult=优秀;

WHENgrade=80THENSETresult=良好;

WHENgrade=70THENSETresult=中等;

WHENgrade=60THENSETresult=及格;

WHENgrade60THENSETresult=不及格;

ELSESETresult=NULL;

ENDCASE;

RETURNresult;

END;

显示全部
相似文档