SQL Server学生成绩管理系统设计与实现

4星 · 超过85%的资源 需积分: 49 19 下载量 170 浏览量 更新于2024-09-14 收藏 157KB DOC 举报
"这篇文档是关于SQL Server数据库管理和查询的学习资料,主要涵盖了如何创建数据库、定义数据表结构、以及插入数据。课程设计的主题是学生成绩管理,涉及到的学生信息、课程信息和成绩信息三个关键表格的创建和示例数据的录入。" 在SQL Server中,查询和管理数据是通过SQL(Structured Query Language)语句来实现的。在这个学生成绩管理系统中,我们首先需要创建数据库,然后定义相关的数据表,最后录入具体的数据。以下是对这些步骤的详细解释: 1. **创建数据库** 数据库是存储数据的逻辑容器。在例子中,数据库被命名为`STUDENT`。创建数据库的SQL语句通常是`CREATE DATABASE`,但具体的语法没有在描述中给出。 2. **创建数据表** - **学生信息表**:表名为`s`,包含字段`sno`(学号),`sname`(姓名),`sex`(性别),`birthday`(出生日期),`nation`(民族)。性别的值被限制为'男'或'女',通过`ALTER TABLE`语句添加`CHECK`约束来实现。 - **课程信息表**:表名为`c`,包含字段`cno`(课程代码),`cname`(课程名称),`credit`(学分)。所有字段都被定义为非空。 - **成绩信息表**:表名为`sc`,记录学生的课程成绩。主键由`sno`和`cno`共同构成,表示每条记录的唯一性。此外,`sno`和`cno`分别作为外键,引用学生信息表和课程信息表,确保数据的一致性和完整性。 3. **录入数据** 数据录入使用`INSERT INTO`语句。例如,录入学生信息表的数据: ```sql INSERT INTO s (sno, sname, sex, birthday, nation) VALUES ('08010101', '张三', '男', '1992-05-02', '汉'); ``` 对于课程信息和成绩信息的录入,遵循同样的模式。 4. **查询数据** SQL Server提供了多种查询数据的方法,如`SELECT`语句用于获取数据,`UPDATE`语句用于修改数据,`DELETE`语句用于删除数据。例如,查询所有学生的姓名和性别: ```sql SELECT sname, sex FROM s; ``` 5. **操作数据表** 可以使用`ALTER TABLE`语句修改表结构,`DROP TABLE`删除表,`TRUNCATE TABLE`清空表数据,`INDEX`创建索引以提高查询效率。 6. **关联查询** 成绩信息表`sc`中的`sno`和`cno`作为外键,可以进行关联查询,如查询某学生的所有成绩: ```sql SELECT cname, score FROM sc JOIN c ON sc.cno = c.cno WHERE sc.sno = '08010101'; ``` 理解并掌握上述SQL语句和数据库概念,对于进行学生成绩管理或其他任何数据操作来说都至关重要。通过实践,可以进一步提升在SQL Server环境下处理数据的能力。
2018-05-13 上传
--3、查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩 --4、查询平均成绩小于60分的同学的学生编号和学生姓名和平均成绩 --4.1、查询在sc表存在成绩的学生信息的SQL语句。 --4.2、查询在sc表中不存在成绩的学生信息的SQL语句。 --5、查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩 --5.1、查询所有有成绩的SQL。 --5.2、查询所有(包括有成绩和无成绩)的SQL。 --6、查询"李"姓老师的数量 --7、查询学过"张三"老师授课的同学的信息 --8、查询没学过"张三"老师授课的同学的信息 --9、查询学过编号为"01"并且也学过编号为"02"的课程的同学的信息 --10、查询学过编号为"01"但是没有学过编号为"02"的课程的同学的信息 --11、查询没有学全所有课程的同学的信息 --12、查询至少有一门课与学号为"01"的同学所学相同的同学的信息 --13、查询和"01"号的同学学习的课程完全相同的其他同学的信息 --14、查询没学过"张三"老师讲授的任一门课程的学生姓名 --15、查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩 --16、检索"01"课程分数小于60,按分数降序排列的学生信息 --17、按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩 --18、查询各科成绩最高分、最低分和平均分: --19、按各科成绩进行排序,并显示排名 --20、查询学生的总成绩并进行排名 --20.1 查询学生的总成绩 --21、查询不同老师所教不同课程平均分从高到低显示 --22、查询所有课程的成绩第2名到第3名的学生信息及该课程成绩 --26、查询每门课程被选修的学生数 --27、查询出只有两门课程的全部学生的学号和姓名 --28、查询男生、女生人数 --29、查询名字中含有"风"字的学生信息 --30、查询同名同性学生名单,并统计同名人数 --31、查询1990年出生的学生名单(注:Student表中Sage列的类型是datetime) --32、查询每门课程的平均成绩,结果按平均成绩降序排列,平均成绩相同时,按课程编号升序排列 --33、查询平均成绩大于等于85的所有学生的学号、姓名和平均成绩 --34、查询课程名称为"数学",且分数低于60的学生姓名和分数 --35、查询所有学生的课程及分数情况; --36、查询任何一门课程成绩在70分以上的姓名、课程名称和分数; --37、查询不及格的课程 --38、查询课程编号为01且课程成绩在80分以上的学生的学号和姓名; --39、求每门课程的学生人数 --40、查询选修"张三"老师所授课程的学生中,成绩最高的学生信息及其成绩 --41、查询不同课程成绩相同的学生的学生编号、课程编号、学生成绩 --42、查询每门功成绩最好的前两名 --43、统计每门课程的学生选修人数(超过5人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列 --44、检索至少选修两门课程的学生学号 --45、查询选修了全部课程的学生信息 --46、查询各学生的年龄 --47、查询本周过生日的学生 --48、查询下周过生日的学生 --49、查询本月过生日的学生 --50、查询下月过生日的学生 --1、查询"01"课程比"02"课程成绩高的学生的信息及课程分数 --1.1、查询同时存在"01"课程和"02"课程的情况 --1.2、查询同时存在"01"课程和"02"课程的情况和存在"01"课程但可能不存在"02"课程的情况(不存在时显示为null)(以下存在相同内容时不再解释)