第六章:事务,视图和索引

来源:互联网 发布:淘宝卖家钱多久到账 编辑:程序博客网 时间:2024/06/05 11:01
  1. --上机1  
  2. use MySchool  
  3. go  
  4. begin transaction  
  5. declare @errornum int  
  6. set @errornum=0  
  7. insert into Result values('23219',1,90,'2013-09-12')  
  8. set @errornum+=@@ERROR  
  9. insert into Result values('23219',1,90,'2013-09-13')  
  10. set @errornum+=@@ERROR  
  11. insert into Result values('23219',1,90,'2014-09-12')  
  12. set @errornum+=@@ERROR  
  13. insert into Result values('23219',1,90,'2013-09-11')  
  14. set @errornum+=@@ERROR  
  15. insert into Result values('23219',1,90,'2003-09-12')  
  16. set @errornum+=@@ERROR  
  17. if @errornum<>0  
  18. begin   
  19. print '操作失败,回滚事务'  
  20. rollback transaction  
  21. end  
  22. else  
  23. begin   
  24. print '操作成功,保存事务'  
  25. commit transaction  
  26. end  
  27.   
  28. --上机2  
  29. go  
  30. begin transaction  
  31. declare @errornum int  
  32. set @errornum=0  
  33. select * into historyresult from Result   
  34. where StudentNo in(select StudentNo from Student   
  35. where GradeId=(select GradeId from Grade where GradeName='Y2'))  
  36. set @errornum+=@@ERROR  
  37. delete from Result  
  38. where StudentNo in(select StudentNo from Student   
  39. where GradeId=(select GradeId from Grade where GradeName='Y2'))  
  40. set @errornum+=@@ERROR  
  41. select * into historystudent from Student    
  42. where GradeId=(select GradeId from Grade where GradeName='Y2')  
  43. set @errornum+=@@ERROR  
  44. delete from Student    
  45. where GradeId=(select GradeId from Grade where GradeName='Y2')  
  46. set @errornum+=@@ERROR  
  47. if @errornum<>0  
  48. begin   
  49. print '操作失败,回滚事务'  
  50. rollback transaction  
  51. end  
  52. else  
  53. begin   
  54. print '操作成功,保存事务'  
  55. commit transaction  
  56. end  
  57.   
  58. --上机3  
  59. go  
  60. CREATE VIEW vw_student_result_info  
  61. AS  
  62.   SELECT 姓名=StudentName,学号=Student.StudentNo,  
  63.                  联系电话=Phone,学期=GradeName,成绩=Total  
  64.   FROM Student  
  65.   LEFT OUTER JOIN (  
  66.       SELECT r.StudentNo,GradeName,SUM(StudentResult) Total   
  67.       FROM Result r   
  68.       INNER JOIN (  
  69.          SELECT StudentNo,SubjectId,MAX(ExamDate)  ExamDate   
  70.          FROM Result   
  71.          GROUP BY StudentNo,Subjectid) tmp   
  72.       ON r.ExamDate=tmp.ExamDate  
  73.       AND r.Subjectid = tmp.Subjectid AND r.StudentNo = tmp.StudentNo  
  74.       INNER JOIN Subject sub ON sub.Subjectid = r.Subjectid  
  75.       INNER JOIN Grade g ON g.GradeId = sub.GradeId  
  76.       GROUP By r.StudentNo,GradeName ) TmpResult2   
  77.  ON Student.StudentNo = TmpResult2.StudentNo  
  78.  GROUP BY StudentName,Student.StudentNo,Phone,GradeName,Total  
  79. GO  
  80. SELECT * FROM vw_student_result_info  
  81.   
  82. --上机4  
  83. go  
  84. create nonclustered index index_result  
  85. on result(studentresult)  
  86. select studentname,Subjectname,ExamDate,StudentResult from Result  
  87. with(index=index_result)  
  88. inner join Student on Student.StudentNo=Result.StudentNo  
  89. inner join Subject on Subject.SubjectId=Result.SubjectId  
  90. where StudentResult between 80 and 90  
0 0
原创粉丝点击