MySQL函数的创建与管理(实验六)

您所在的位置:网站首页 创建一个自定义函数maxscore MySQL函数的创建与管理(实验六)

MySQL函数的创建与管理(实验六)

2024-06-26 15:00:44| 来源: 网络整理| 查看: 265

MySQL函数的创建与管理

准备工作:脚本文件xkgl.sql下载和执行:文件xkgl.sql下载 1、查询所有学生选修课程的情况,包括学号,课程号,成绩以及成绩对应的等级,没有成绩者显示未考试。(90及以上:优秀;80及以上:良好;70及以上:中等;60及以上:及格;60以下:不及格。) 代码:

select StudentID,CourseID,Grade,case when Grade >= 90 then '优秀' when Grade >= 80 then '良好' when Grade >= 70 then '中等' when Grade >= 60 then '及格' when Grade ='null' then '未考试' else '不及格' end as 等级 from grade;

结果截图: 在这里插入图片描述 2、定义一个根据学生姓名查询该生选修课程门数的函数stu_count。 代码:

delimiter $$ create function stu_count(name char(20)) returns int reads sql data begin declare StudentID1 char(20); declare num int; select StudentID into StudentID1 from Student where StudentName=name; select count(*) into num from grade where StudentID=StudentID1; return num; end; $$ delimiter ;

结果截图: 在这里插入图片描述 3、调用函数stu_count,查询“你”个人学号尾数对应学生表中的学生选修的课程门数。注:先将你学号尾数对应的学生找出来。 代码:

select stu_count('李宇凯'); select stu_count('黄树军');

结果截图: 在这里插入图片描述 4、定义一个根据系名和课程名,查询该系学生在该门课程上程的平均分的函数sdept_avggrade 代码:

delimiter $$ create function sdept_avggrade(depname char(20),courname char(20)) returns decimal(5,2) reads sql data begin declare depid char(20); declare avge decimal(5,2); declare courid char(20); select DepartmentID into depid from department where DepartmentName=depname; select CourseID into courid from course where courname=CourseName; select avg(cst.Grade) into avge from (select grade.CourseID,grade.StudentID,grade.Grade,student.ClassID,class.DepartmentID from grade inner join student on grade.StudentID=student.StudentID inner join class on student.ClassID=class.ClassID where CourseID=courid and DepartmentID=depid) cst; return avge; end; $$ delimiter ;

结果截图: 在这里插入图片描述 5、调用函数sdept_avggrade,查询计算机系学生在《数据库原理与应用》这门课程上的平均成绩 代码:

select sdept_avggrade('计算机系','数据库原理与应用');

结果截图: 在这里插入图片描述 6、编写一个函数f1,根据学生的学号和选修的课程号查询该生在该门课程上的成绩,然后返回这个成绩所对应的等级(90及以上:优秀;80及以上:良好;70及以上:中等;60及以上:及格;60以下:不及格。) 代码:

delimiter $$ create function f1(stuid char(20),courid char(20)) returns char(20) reads sql data begin declare gd decimal(5,1); declare dj char(20); select Grade into gd from grade where StudentID=stuid and CourseID=courid; if(gd >= 90) then set dj='优秀'; elseif(gd>= 80) then set dj='良好'; elseif(gd>= 70) then set dj='中等'; elseif(gd>= 60) then set dj='及格'; else set dj='不及格'; end if; return dj; end; $$ delimiter ;

结果截图: 在这里插入图片描述 7、创建名为teacherinfo2的函数。要求:函数teacherinfo2有两个参数:teacher id和type。满足:根据编号(teacher id)来查询teacher表中的记录。如果type的值是1时,则返回教师姓名;如果type的值是2时,则返回教师年龄;如果type为其他值,则返回字符串“Error”。 代码:

delimiter $$ create function teacherinfo2(teacher_id char(20),type int) returns char(20) reads sql data begin declare ans char(20); if(type=1) then select Teachername into ans from teacher where TeacherID=teacher_id; elseif(type=2) then select year(now())-year(Brith) into ans from teacher where TeacherID=teacher_id; else set ans='Error'; end if; return ans; end; $$ delimiter ;

结果截图: 在这里插入图片描述 8、使用SELECT语句调用teacherinfo2函数,返回dep01001号教师的姓名。 代码:

select teacherinfo2('dep01001',1);

结果截图: 在这里插入图片描述 9、使用sql语句来删除teacherinfo2函数。 代码:

drop function teacherinfo2;

结果截图: 在这里插入图片描述 【分析与思考】 (1) 变量有哪些类型,用什么符号标识? 答:1、局部变量:declare语句专门用于定义局部变量,可以使用default来说明默认值。2、用户会话变量:以一个‘@’开头; 3、系统会话变量以两个‘@’开头; (2) Mysql编程支持哪几种循环语句? 答:while语句,repeat语句,loop语句; (3) 查询中的case与程序中的case,有哪些区别? 答:case具有两种格式。简单case函数和case搜索函数。这两种方式,可以实现相同的功能。简单case函数的写法相对比较简洁,但是和case搜索函数相比,功能方面会有些限制,比如写判定式。还有一个需要注重的问题,case函数只返回第一个符合条件的值,剩下的case部分将会被自动忽略。



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭