SQL作业:机试成绩加分策略与数据库操作解析

需积分: 11 2 下载量 3 浏览量 更新于2024-08-23 收藏 3.09MB PPT 举报
"这篇资料是关于高级数据库SQL的课后作业,主要涉及T-SQL语句的编写,尤其是针对成绩加分规则的实现。作业要求通过T-SQL对不同分数段的学生进行不同程度的加分,直至平均分超过85分。同时,资料中还提及了数据库系统中的sysdatabases和sysobjects系统视图,以及数据库设计中的约束,如主键、唯一约束、默认值和范围限制。此外,还介绍了T-SQL中变量的声明、赋值以及使用SELECT语句赋值的注意事项,包括SET和SELECT的区别。另外,资料提到了如何查找特定学生(如李文才)的同桌,这需要通过查询和座位号的计算来实现。最后,讲解了PRINT函数的使用,以及全局变量@@ERROR和convert函数的作用。" 在解决如何根据成绩规则加分的问题时,可以创建一个循环,首先获取所有学生的原始分数,然后根据分数段进行相应的加分操作。对于每个学生,检查其分数是否在90分以上、80-89分、70-79分、60-69分或60分以下,分别对应不加分、加1分、加2分、加3分和加5分。在每次加分后,更新平均分,如果平均分未达到85分则继续循环,直到满足条件为止。 sysdatabases和sysobjects是SQL Server中的系统视图,sysdatabases提供了关于数据库的信息,而sysobjects则包含数据库中所有对象的详细列表,包括表、视图、存储过程等,这对于理解和管理数据库的结构非常有用。 在数据库设计中,PK_stuNo可能代表学生表中的主键约束,确保每个学生的学号是唯一的。UNIQUE(stuID)则表示stuID列具有唯一性约束,防止重复的学号。DEFAULT('地址不详') FOR stuAddress是在stuAddress列上设置默认值,当没有提供具体地址时,系统将自动填入“地址不详”。stuAge BETWEEN 15 AND 40是定义了stuAge列的有效年龄范围,确保学生年龄在15至40岁之间。 在T-SQL中,变量的声明使用DECLARE关键字,可以是局部变量(@前缀)或全局变量(@@前缀)。赋值可以通过SET或SELECT语句完成,SET通常用于简单的赋值操作,而SELECT则用于从查询结果中赋值,但需注意,当使用SELECT赋值时,查询结果应只返回一条记录。 寻找李文才的同桌,可以通过查询其座位号,然后对座位号加1或减1找到相邻的同学。例如,首先找到李文才的座位号(stuSeat),然后查询stuSeat+1或stuSeat-1的记录。 讲解中提到的全局变量@@ERROR,它记录了最近一次T-SQL语句执行的错误代码,是进行错误处理的重要工具。convert函数用于数据类型的转换,能够将一种数据类型转换成另一种数据类型。 在T-SQL的控制流结构中,IF-ELSE语句允许根据条件执行不同的代码块,BEGIN-END用于定义代码块的范围。在实际编程中,需要注意的是,向变量赋值的SELECT语句不能与其他数据检索操作结合使用,以避免出现不确定的结果。