电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

数据库系统原理实验3VIP免费

数据库系统原理实验3_第1页
1/12
数据库系统原理实验3_第2页
2/12
数据库系统原理实验3_第3页
3/12
数据库系统原理实验报告姓名成长锦班级统计1702学号17271119日期:2020/06/01自我评价教师评语成绩一、实验目的本实验通过对DBMS软件的操作,使学生掌握数据库触发器的设计和使用方法,以及存储过程的创建和执行方法。二、实验环境SQLServer,主要使用SQLServerManagementStudio.采用操作系统(windows)用户登录方式登录SQLServer.三、实验内容及要求请按照实验内容及实验要求,认真完成各项实验,并完成实验报告(包括涉及到的SQL脚本、实验结果(截图)、实验中出现的问题、解决方法说明以及实验体会)。实验内容一、数据库完整性之触发器实验[实验目的]理解不同类型触发器的作用和执行原理,验证触发器的有效性。[实验内容及要求]1)在Student表上定义一个UPDATE触发器,将对Student表的修改记录到表StudentUpdateLog中先创建表:触发器:ALTERTRIGGER[dbo].[Student_U]ON[dbo].[Student]AFTERUPDATEASINSERTINTOStudentUpdateLog(sno,sname,ssex,sage,sdept)select*fromdeleted测试:updateStudentsetsname='李大勇'wheresname='李小勇'updateStudentsetsname='李大小勇'wheresname='李大勇'查看studentupdatelog表:2)在Student表上定义一个DELETE触发器,当删除一个学生记录时,自动删除SC表上这个学生的所有选课记录定义触发器:CREATETRIGGERStudent_DonStudentAFTERdeleteASDECLARE@oldsnochar(10)SELECT@oldsno=snofromdeletedDELETEFROMSCWHEREsno=@oldsno测试:--查看测试删除的学号select*fromStudentwheresname='李勇'--删除deletefromStudentwheresname='李勇'3)在Course表上定义一个UPDATE触发器,当更新一门课程的课程号时,自动修改SC表上这门课程的课程号触发器:createtriggerCourese_UonCourseafterupdateasdeclare@newcnochar(5)declare@oldcnochar(5)select@newcno=cnofrominsertedselect@oldcno=cnofromdeletedupdateSCsetcno=@newcnowherecno=@oldcno测试:将课程cno=1修改为10,并查看SC表4)在SC表上定义一个DELETE触发器,当删除一条选课记录时,若这条记录是这门课程的唯一被选记录,则同时删除Course表中的这门课程触发器:createtriggerSC_DonSCafterdeleteasdeclare@oldcnochardeclare@numcnointselect@oldcno=cnofromdeletedselect@numcno=COUNT(*)fromSCwherecno=@oldcnoif(@numcno=0)deletefromCoursewherecno=@oldcno测试:cno=7在SC表中只有一行,查看Course表发现cno=7的课程已经删除5)以上触发器均为AFTER类型的触发器,请在已有数据库上自己设计并定义一个BEFORE类型的触发器触发器:当插入SC表成绩小于60时,默认成绩为60ALTERtrigger[dbo].[SC_grade]on[dbo].[SC]forinsertasdeclare@oldgradeintdeclare@oldcnochar(5)select@oldgrade=gradefrominsertedselect@oldcno=cnofrominsertedif(@oldgrade<60)updateSCsetgrade=60wheregrade=@oldgradeandcno=@oldcno测试:实验内容二、给定要求的存储过程及DBMS中执行[实验目的]学会在SQLServer中创建存储过程,并通过脚本在SQLServer中调用执行该存储过程。[实验内容及要求]1.对学生-课程数据库编写两个存储过程,完成下述功能:1)统计任意一门课的平均成绩执行存储过程:输出’C3’课程的平均成绩存储过程:createprocedureavggrade@newcnochar(5),@scorefloatoutputASdeclare@search_cnochar(5)set@search_cno=0select@search_cno=cnofromSCif(@search_cno=0)beginset@score=0print'课程不存在'endelsebeginselect@score=AVG(grade)fromSCwherecno=@search_cnoend执行存储过程:declare@scorefloatexecavggrade4,@scoreoutputprint@scoredeclare@scorefloatexecavggrade100,@scoreoutputprint@score2)把某位同学选修课程1的成绩和课程2的成绩互换(假定成绩都不为空)执行存储过程:把同学‘S1’的’C2’课程和‘C4’课程成绩互换把同学’S7’的’C2’课程和‘C4’课程成绩互换执行存储过程前:SC表,红色框分别是刘晨、王敏准备交换的课程对应成绩。存储过程定义:ALTERprocedure[dbo].[change]@cno1char(5),@cno2char(5),@snamechar(20)ASdeclare@search_snochar(10)declare@grade1int,@grade2int,@numintselect@search_sno=snofromStudentwheresname=@snameif(@search_snoisnull)beginprint'该学生不存在'endelsebeginselect@num=COUNT(*)fromSCwheresno=@search_snoand(cno=@cno1orcno=@cno2)if(@num<>2)beginprint'该学生某课程不存在,无法交换'endelsebeginselect@grade1=gradefromSCwheresno=@search_snoandcno=@cno1;select@grade2=gradefromSCwheresno=@search_snoandcno=@cno2;updateSCsetgrade=@grade2wheresno=@search_snoandcno=@cno1;updateSCsetgrade=@grade1wheresno=@search_snoandcno=@cno2;endend测试1:交换刘晨课程2和3成绩交换后SC表:测试2:交换王敏同学的课程5和8成绩交换后SC表:测试3:特殊情况一,学生姓名查找为空测试4:特殊情况二:学生对应课程不存在

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

数据库系统原理实验3

爱的疯狂+ 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部