资源描述:
《SQLSEVER存储过程和触发器》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Student(S#,Sname,Sage,Ssex,Sdept,sselnum)学生表S5Course(C#,Cname,T#,score)课程表SC(S#,C#,grade)成绩表s1Teacher(T#,Tname)教师表创建存储过程,实现以下操作:1、统计每一个学生的平均成绩,要求显示学生姓名和平均成绩.Ifexists(selectnamefromsysobjectswherename=’p1’andtype=’p’)Dropprop1Createprocedurep1asSelectsname,avg(grade)Fromsc,studentWheresc.s#=stud
2、ent.s#Groupbys#2、统计学生所选课程所得的总学分,要求显示系科名,学号,姓名和总学分.Createprocedurep2asSelectstudent.S#,Sname,Sage,Sdept,sum(score)Fromsc,course,studentWheresc.c#=c.c#andstudent.s#=sc.s#Groupbys#3、建立一存储过程,用户输入学生姓名,学号,如果student表中存在此项,则删除后再插入,若不存在此学生,则直接插入该记录.Createprocedurep3@nochar(8),@namechar(10)asbeginifexist
3、s(select*fromstudentwheres#=@noandsname=@name)begindeletefromstudentwheres#=@noandsname=@nameinsertintostudent(S#,Sname)values(@no,@name)endelseinsertintostudent(S#,Sname)values(@no,@name)end4、根据用户键入的学生姓名,查询学生的年龄Createprocedurep4@namechar(10)asselectsagefromstudentwheresname=@name5、根据用户键入的学生学号和
4、课程号,查询学生的成绩Createprocedurep5@nochar(8),@cnochar(4)asselectgradefromscwheres#=@noandc#=@cno6、建立一存储过程,使用户输入系别,查询该系学生选择各课程的情况.(模糊查询)列出系别,课程号以及对应的人数,并按系别排序.【Sel_Course】Createprocedurep6@dechar(10)asSelectsdept,sc.c#,count(sc.c#)Fromstudent,sc,Wherestudent.s#=sc.s#andsdept=@dGropubysc.c#Orderbysc.c#
5、7、建立一存储过程,使用户输入课程名时,列出该课程名,对应的课程号,选择该课程的学生总人数,平均分【Sel_Stu】Createprocedurep7@cnchar(10)asSelectsc.c#,cname,count(s#),avg(grade)Fromcourse,scWherecourse.c#=sc.c#andcname=@cn创建触发器,实现以下作用:1、创建一个Insert触发器,功能是当在sc上插入一行数据时,自动使得student表对应学号上的sselnum字段的值加1Createtriggert1onscforinsertasupdatestudentsetss
6、elnum=sselnum+1wheres#=(selects#frominserted)2、创建一个Insert触发器,功能是当在sc上插入数据时,自动更新student表对应学号上的sselnum字段,应考虑成批修改数据的情况.3、建立一触发器,当删除student表中某学生记录时,同时删除sc表中所有该学生的选课记录.Createtriggert3onstudentfordeleteAsDeletefromscWheres#=(selects#fromdeleted)4、使用IFUPDATE()保留字,实现当修改Student表中的sno属性时,sc表中相应的sno也要修改De
7、letedinsertedCreatetriggert4onstudentforupdateAsUpdatescSets#=(selects#frominserted)Wheres#=(selects#fromdeleted)