《《MySQL数据原理与应用》实验报告实验9函数.docx》由会员分享,可在线阅读,更多相关《《MySQL数据原理与应用》实验报告实验9函数.docx(7页珍藏版)》请在第壹文秘上搜索。
1、实验9函数实验目的令掌握存储函数的创建、调用、查看、修改与删除;令了解各种系统函数的用法。要求:所有操作结果均以截图的形式保存,截取的图上尽可能的出现自己的个人信息。实验设备PC机一台;Win7/10操作系统;MySQL8.0、NavicatWorkbench0【实验报告提交】在完成本实验文档要求的所有任务后,加上版权(水印),将文件以“学号姓名+实验9函数”命名,并转换成PDF文件,提交至超星平台本课程对应的作业文件夹中。实验任务任务1创建存储函数求某班级的总人数任务2统计学生的姓氏数量任务3使用Workbench工具创建存储函数求某学生的成绩总分任务4使用NaViCat工具计算当前日期是一
2、年的第几周任务5实验过程中常见错误解决方法实验流程任务1创建存储函数求某班级的总人数【任务需求】创建一个存储函数,命名为“class_sum”,该存储函数有一个参数“c_name”,数据类型为VARCHAR(20)o指定返回的数据类型为INTEGER类型。BEGIN和END语句块中是函数的内容,在BEGIN和END语句块之间,使用SELECT语句根据参数c_name查询tb_class表和tb_student表,输出指定班级名称所对应的学生总人数。【任务参考效果图】mysqlSELECTClaSS_sum(20计科2班);+class-sum(,20计科2班)+0I4+1rowinset(0.
3、01sec)mysqlSELECTClaSS_sum(22软件4班);+class-sum(,22软件4班)+6+1rowinset(0.00sec)【任务完成效果图】请按照任务需求将完成的效果图放在下方。任务2统计学生的姓氏数量【任务需求】使用SELECT语句查询“tb_student”表,截取并输出学生的姓氏,使用COUNT函数统计学生的姓氏,在上述SQL语句末使用GROUPBY关键字对学生的姓氏进行分组。【任务参考效果图】ysqlSELECTLEFT(student_name,1),COUNT(LEFT(student_name,1)ASsurname_sum-FROMtb_studen
4、t-GRoUPBYLEFT(student_name,1);LEFT(student_name, 1)surname_sum曹何潘谭陆朱【任务完成效果图】请按照任务需求将完成的效果图放在下方。任务3使用WOrkbenCh工具创建存储函数求某学生的成绩总分【任务需求】使用数据库图形化管理工具Workbench创建和使用存储函数,实现调用函数并输入学生的姓名,结果输出学生的成绩总分。【任务参考效果图】0夕,Pk囹UmttolOOOrows1 selectdbstudy.workbenchfuc(三三交Result Gnd J O pr Rov* *: stdy.workbefhfuncCtExpo
5、rt: 电 I Wrap C Content: JaMmsa9 Changes applied 1 rew(s) returned1 row(s) returned任务4使用NaViCat工具计算当前日期是一年的第几周【任务需求】使用数据库图形化管理工具NaViCat创建和使用存储过程,求当前日期是一年中的第几周。【任务参考效果图】又寸象navicatfuncdb_study(Iocalhost3.喻保存0停止Q查找-J自动换行定义信息海巢彳SQL预览navicatfuncO10【任务完成效果图】请按照任务需求将完成的效果图放在下方。任务5实验过程中常见错误解决【任务需求】在实验过程中出现如下
6、图所示的错误,请调试,并写出解决办法。【实验思考】1.创建存储过程提示“ERROR1418(42000)”在Windows系统的命令提示符工具中使用SQL命令行创建存储函数,错误图如下图所示。Dysqlusedb_study:DatabasechangednysqlDELIMITER/nvsqlCREATEFUNCTIONCIaSS_sub(JnaBeVARCHAR(20)- RETURNSINTEGER- BEGIN- DECLAREc_sumINTEGER:- SELECTCOUNT(class_name)INTOc_sum- FROMtb_classJOINtb_studentONtb-
7、class.class_id=tb_student.class_id- WHEREclass_name=c_name;- RETURNc_sun;一END/ERROR1418(HYOOO):ThisfunctionhasnoneofDETERMINISTIC,NOSQL,orREADSSQLDATAinitsdeclarationandbinaryloggingisenabled(you*might*wanttousethelesssafe1og_bin_trust_function-creatorsvariable)mvsql问题原因:解决方案:2 .调用系统函数提示“ERROR1140(4
8、2000)w在Windows系统的命令提示符工具中调用SUM函数对学生成绩进行累加时提示错误,错误图如下图所示。mysqlusedb-study:DatabasechangednysqlSELECTstudent-id,SUM(grade-score)ASsum-scoreFROMtb-grade:EjkMORHW:inaggregatedquerywithoutGkuUHBY,expression1otbELEClistcontainsnonaggregateccolumndb_study.tb_grade.student-id;thisisincoatiblewithsql_mode=on
9、ly_full_group_byDysql?问题原因:解决方案:3 .调用数学函数得到的结果与实际结果不同在现实中,ACOS(COS(I)的结果应该为1;CoT(Pl()/4)的结果应该为1,但为什么在MySQL中调用这两个函数后结果与实际不符合呢?错误图如下图所Zj0tnysqlSELECTACOS(COS(I),C0T(PI()/4);+HHACOS(COS(I)COT(PI()/4)o799999999999999LOoOOoooooOooOo0211rowinset(0.00sec)mysql问题原因:解决方案:OutputJActionOutputTmAcoonQ120:33:55plychangestoWOfkbenchJuncQ220:36:40selectdb_atudy.wokbenchjuncr|t云黑)UMlT0.1000O320:4643Setectdb_study.wokbenchJuncfM云煦)LIMIT0.1000【任务完成效果图】