第六章上机练习
2017-02-24 16:47
330 查看
BEGIN TRANSACTION DECLARE @errorSum INT SET @errorSum=0 /*--插入数据--*/ INSERT INTO Result(StudentNo,SubjectNo,ExamDate,StudentResult) VALUES(1,1,GETDATE(),90) SET @errorSum=@errorSum+@@error INSERT INTO Result(StudentNo,SubjectNo,ExamDate,StudentResult) VALUES(1,1,GETDATE(),70) SET @errorSum=@errorSum+@@error INSERT INTO Result(StudentNo,SubjectNo,ExamDate,StudentResult) VALUES(2,1,GETDATE(),67) SET @errorSum=@errorSum+@@error INSERT INTO Result(StudentNo,SubjectNo,ExamDate,StudentResult) VALUES(2,1,GETDATE(),55) SET @errorSum=@errorSum+@@error INSERT INTO Result(StudentNo,SubjectNo,ExamDate,StudentResult) VALUES(3,1,GETDATE(),102)--分数违反约束 SET @errorSum=@errorSum+@@error INSERT INTO Result(StudentNo,SubjectNo,ExamDate,StudentResult) VALUES(3,4,GETDATE(),90) SET @errorSum=@errorSum+@@error INSERT INTO Result(StudentNo,SubjectNo,ExamDate,StudentResult) VALUES(4,4,GETDATE(),56) SET @errorSum=@errorSum+@@error INSERT INTO Result(StudentNo,SubjectNo,ExamDate,StudentResult) VALUES(4,4,GETDATE(),88) SET @errorSum=@errorSum+@@error INSERT INTO Result(StudentNo,SubjectNo,ExamDate,StudentResult) VALUES(5,4,GETDATE(),40) SET @errorSum=@errorSum+@@error INSERT INTO Result(StudentNo,SubjectNo,ExamDate,StudentResult) VALUES(5,4,GETDATE(),65) SET @errorSum=@errorSum+@@error /*--根据是否有错误,确定事务是提交还是撤销--*/ IF(@errorSum<>0) --如果有错误 BEGIN PRINT '插入失败,回滚事务' ROLLBACK TRANSACTION END ELSE BEGIN PRINT '插入成功,提交事务' COMMIT TRANSACTION END GO [sql] view plain copy 在CODE上查看代码片派生到我的代码片 BEGIN TRANSACTION DECLARE @errorSum INT SET @errorSum=0 /*--查询Result表中所有Y2学员的考试成绩,保存到新表HistoreResult*/ SELECT Result.* INTO HistoreResult FROM Result INNER JOIN Student ON Result.StudentNo=Student.StudentNo INNER JOIN Grade ON Grade.GradeId=Student.GradeId WHERE GradeName='Y2' SET @errorSum=@errorSum+@@error /*--删除Result表中所有Y2学员的考试成绩*/ DELETE Result FROM Result JOIN Student ON Result.StudentNo=Student.StudentNo INNER JOIN Grade ON Grade.GradeId=Student.GradeId WHERE GradeName='Y2' SET @errorSum=@errorSum+@@error /*--将Student表中所有Y2的学员记录,保存到新表HistoryStudent*/ SELECT Student.* INTO HistoryStudent FROM Student INNER JOIN Grade ON Grade.GradeId=Student.GradeId WHERE GradeName='Y2' SET @errorSum=@errorSum+@@error /*--删除Studet表中所有Y2学员记录*/ DELETE Student FROM Student INNER JOIN Grade ON Grade.GradeId=Student.GradeId WHERE GradeName='Y2' SET @errorSum=@errorSum+@@error /*--根据是否有错误,确定事务是提交还是撤销--*/ IF (@errorSum<>0) --如果有错误 BEGIN PRINT '插入失败,回滚事务' ROLLBACK TRANSACTION END ELSE BEGIN PRINT '插入成功,提交事务' COMMIT TRANSACTION END GO [sql] view plain copy 在CODE上查看代码片派生到我的代码片 CREATE VIEW vw_student_result_info AS SELECT 姓名=StudentName,学号=Student.StudentNo, 联系电话=Phone,学期=GradeName,成绩=Total FROM Student LEFT OUTER JOIN ( SELECT r.StudentNo,GradeName,SUM(StudentResult) Total FROM Result r INNER JOIN ( SELECT StudentNo,SubjectNo,MAX(ExamDate) ExamDate FROM Result GROUP BY StudentNo,SubjectNo) tmp ON r.ExamDate=tmp.ExamDate AND r.SubjectNo = tmp.SubjectNo AND r.StudentNo = tmp.StudentNo INNER JOIN Subject sub ON sub.SubjectNo = r.SubjectNo INNER JOIN Grade g ON g.GradeId = sub.GradeId GROUP By r.StudentNo,GradeName ) TmpResult2 ON Student.StudentNo = TmpResult2.StudentNo GROUP BY StudentName,Student.StudentNo,Phone,GradeName,Total GO SELECT * FROM vw_student_result_info [sql] view plain copy 在CODE上查看代码片派生到我的代码片 USE MySchool GO IF EXISTS (SELECT name FROM sysindexes WHERE name = 'IX_Result_StudentResult') DROP INDEX Result.IX_Result_StudentResult --删除索引 GO --考试成绩列上创建可重复索引:填充因子为70%-- CREATE INDEX IX_Result_StudentResult ON Result(StudentResult) WITH FILLFACTOR = 70 GO --查询输出学生姓名、课程名称、考试日期和考试成绩 SELECT StudentName '学生姓名',SubjectName '课程名称',ExamDate '考试日期', StudentResult '考试成绩' FROM Subject,Student,Result WITH (INDEX = IX_Result_StudentResult) WHERE StudentResult BETWEEN 80 AND 90 AND Student.StudentNo = Result.StudentNo AND Subject.SubjectId = Result.SubjectId
相关文章推荐
- HTML第六章上机练习3
- 第六章上机练习5 聚美优品彩妆
- 第六章上机练习
- 第六章上机练习3 美容热点产品列表(1)
- HTML第六章上机练习3
- 第六章 使用C#开发数据库应用系统 上机练习1-4
- HTML第六章上机练习5
- HTML第六章上机练习5
- 2015华为上机练习《朋友圈转发消息》
- [1143]面向对象程序设计上机练习四(变量引用)
- 面向对象程序设计上机练习八(对象数组)
- 山东理工大学ACM平台题答案 面向对象程序设计上机练习三(有默认参数的函数)
- ios面试题 看了就知道哪方面需要加强上机练习
- SDUT-1271 面向对象程序设计上机练习九(对象指针)
- sdut 面向对象程序设计上机练习十一(运算符重载)
- 第六章 6.4节练习 & 6.5.1节练习
- 第六章章节练习
- 面向对象程序设计上机练习三(有默认参数的函数)
- 面向对象程序设计上机练习一(函数重载)
- 面向对象程序设计上机练习四(变量引用)