《北京工商大学数据库实验7》由会员分享,可在线阅读,更多相关《北京工商大学数据库实验7(7页珍藏版)》请在金锄头文库上搜索。
1、班级:北京工商大学学号:姓名: 同组同学学号:无同组同学姓名:无实验日期:2014 年 6 月 11 日交报告日期:2014.6.187实验目的及要求:目的:以 SQL Server 为环境,熟练掌握 TSQL,并可以采用 TSQL 编写触发器,并应用。要求:(1)不能使用管理器以及工具,采用查询分析器(2)将语句保存为脚本文件,可以执行(3) 试验报告要求提交 TSQL 语句以及执行结果实验设备:微机实验内容及步骤: 试验内容:在试验三的基础之上进行查询,表以及元组内容依据实验三。在插入简单数据基础上,做如下任务1、编写两个触发器(1) 每个学生的选课数量不能多于 3 门。(2) 学生表的班
2、长作为外键应用了自身的学号,要求每个班长引用的学号必须和该学生的班级相同,另外如果该班级的存在多个(2 个或以上)不同的班长,则提示出错。例如不能有如下数据:学生班班长11211312421(1) CREATETRIGGER bON scoursesAFTER insert,update AS begin IF(SELECT count(o) FROM scourses,insertedWHERE inserted.sname=scourses.sname)3 BEGIN PRINT 每个学生的选课数量不能多于门! ROLLBACKEND END(2) CREATETRIGGER bans O
3、N students after INSERT,UPDATEAS BEGINIFexists(SELECTSnoFROMstudentsWHEREsclass=(SELECTsclassFROMinserted)and smonitor(SELECT smonitor FROM inserted)BEGINPRINT 这个班级有多个班长 ROLLBACKENDIFexists(SELECTsnoFROMstudentsWHEREsclass(SELECTsclassFROMinserted)and smonitor=(SELECT smonitor FROM inserted)BEGINPRI
4、NT 班长与班级不一致 ROLLBACKENDEnd2、用 TSQL 做如下查询(1) 对选择“数据库”课题的所有同学的分数在原来分数的基础上增加 10 分(2) 查询每个课题分数前三名的同学,要求输出课程名字、学生名字、分数(1)update scourses set sgrade=sgrade+10 where cno=(select cno from courseswhere cname=数据库);(2)select ame,students.sname,scourses.sgrade from students,scourses,courseswhere scourses.sname=students.sname and o=o and scourses.sgrade in (select top 3 sgrade from scourseswhere o=o order by sgrade desc)order by o,scourses.sgrade desc;注:实验内容及步骤项目的内容如果较多,可以加附页。实验结果及心得: 难了教师评语:成绩:教师签字:年月日