logo资料库

SQL学生成绩查询.doc

第1页 / 共8页
第2页 / 共8页
第3页 / 共8页
第4页 / 共8页
第5页 / 共8页
第6页 / 共8页
第7页 / 共8页
第8页 / 共8页
资料共8页,全文预览结束
学生成绩管理
二.要求建立本数据的表,表名分别为:
三.录入各表的内容
四.用请用SQL语言完成如下查询
五.用SQL语言完成如下要求:
六.谈谈您在第3、5步操作过程中遇到什么问题?如何解决这些问题的?
七.操作结果记录:
八.心得体会
九.参考资料
课 程 设 计 报 告 书 专 业:软件开发 课程设计名称:数据处理技术基础 题 班 学 姓 目:学生成绩管理 级:**级*班 号:******* 名:*** 指 导 教 师:*** 完 成 时 间:2012 年 11 月 17 日
成绩: 学生成绩管理 一.建立数据库名:数据库名为:STUDENT 学号 数据库名:STUDENT***** 二.要求建立本数据的表,表名分别为: (1) 学生信息表名为:s 学号( 学生信息:学号(sno)、姓名(sname)、性别(sex)、 出生日期(birthday)、民族(nation) ) create table s10060112( sno char(8) not null primary key,/*学号*/ sname char(6) not null,/*姓名*/ sex char(2) not null,/*性别*/ birthday datetime not null,/*出生日期*/ nation char(2) not null/*民族*/ ) alter table s10060112 add check (sex='男' or sex='女') (2) 课程信息表名为:c 学号(课程信息:课程代码(cno)、课程名称(cname)、学 分(credit) ) create table c10060112 (cno char(6) not null primary key, //*课程代码*/ cname varchar(10) not null,/*课程名称*/ credit numeric(8,2) not null,/*学分*/ ) (3) 成绩信息表名为:sc 学号(学生成绩:学号(sno)、课程代码(cno)、成绩 (score)) create table sc10060112(
sno char(8) not null , cno char(6) not null , score int not null,/*成绩*/ primary key(sno,cno),/*主码由 sno、cno 同时决定*/ foreign key (sno) references s10060112 (sno), foreign key (cno) references c10060112(cno) ) 三.录入各表的内容 表 1 学生信息 Sno(主码) sname sex birthday Nation 08010101 张三 08050412 李孟才 08060945 王珊珊 08110207 杨彤 男 男 女 女 1992-05-02 汉 1991-08-09 藏 1993-08-29 汉 1994-05-30 汉 insert into s10060112(sno,sname,sex,birthday,nation) values ('08010101','张三','男','1992-05-02','汉') insert into s10060112(sno,sname,sex,birthday,nation) values ('08050412','李孟才','男','1991-08-09','藏') insert into s10060112(sno,sname,sex,birthday,nation) values ('08060945','王珊珊','女','1993-08-29','汉') insert into s10060112(sno,sname,sex,birthday,nation) values ('08110207','杨彤','女','1994-05-30','汉') 表 2 课程信息 cname credi t C 语言 数据结构 数据库原理 操作系统 3 4 4 4 编译原理 3.5 Cno (主 码) 08060 1 08060 2 08060 3 08060 4 08060 5
insert c10060112 values('080601','C语言','3') insert c10060112 values('080602','数据结构','4') insert c10060112 values('080603','数据库原理','4') insert c10060112 values('080604','操作系统','4') c10060112 values('080605','编译原理','3.5') insert 表 3 成绩信息 Sno(主 Cno(主码) score 码) 0801010 1 0801010 1 0801010 1 0806094 5 0806094 5 0805041 2 0805041 2 0811020 7 0811020 7 080601 080602 080603 080601 080604 080601 080602 080602 080605 80 79 65 98 89 85 86 65 54 insert sc10060112 values('08010101','080601','80') insert sc10060112 values('08010101','080602','79') insert sc10060112 values('08010101','080603','65') insert sc10060112 values('08060945','080601','98') insert sc10060112 values('08060945','080604','89') insert sc10060112 values('08050412','080601','85') insert sc10060112 values('08050412','080602','86') insert sc10060112 values('08110207','080602','65') insert sc10060112 values('08110207','080605','54')
四.用请用 SQL 语言完成如下查询 (1) 查询所有的学生; select sno 学号,sname 姓名,sex 性别,birthday 出生日期,nation 民族 from s10060112 (2) 查询年龄大于 23 岁的男学生; select sno 学号,sname 姓名,sex 性别,birthday 出生日期,nation 民族 from s10060112 where year(birthday)-year(getdate())>23 and sex like' 男' (3) 查询所有姓杨且为藏族的学生; select sno 学号,sname 姓名,sex 性别,birthday 出生日期,nation 民族 from s10060112 where sname like '杨%' and nation like'藏' (4) 查询不及格的学号,课程代码,课程名称,成绩; select sno 学号,b.cno 课程代码,cname 课程名称,score 成绩 from c10060112 b,sc10060112 c where b.cno=c.cno and score<60 (5) 查询学分超过 3.5 学分且成绩及格的学号,课程代码,课程名,学分,成绩; select sno 学号,b.cno 课程代码,credit 学分,c.cno 课程代码,cname 课程 名称,score 成绩 from c10060112 b,sc10060112 c where b.cno=c.cno and credit>3.5 and score>=60 (6) 查询所有学生的所有成绩,包含学号、姓名、性别、课程代码、课程名称、 成绩; select a.sno 学号,sname 姓名,sex 性别,b.cno 课程代码,c.cno 课程代 码,cname 课程名称,score 成绩,c.sno 学号 from s10060112 a,c10060112 b,sc10060112 c where a.sno=c.sno and b.cno=c.cno (7) 统计选课的人次和人数; select count(sno)人次 from sc10060112 select count(distinct sno)人数 from sc10060112 (8) 统计每位同学的总分、平均分、最高分、最低分; select sno 学号,sum(score)总分,avg(score) 平均分,max(score) 最高 分,min(score) 最低分from sc10060112 group by sno (9) 查询没有选课的学生信息; select sno 学号,sname 姓名,sex 性别,birthday 出生日期,nation 民族from s10060112 where sno not in(select sno from sc10060112) (10) 查询选修了全部课程的学生信息; select sno 学号,sname 姓名,sex 性别,birthday 出生日期,nation 民族from
s10060112 where sno in(select sno from sc10060112 group by sno having count(distinct cno)=(select count(*) from c10060112)) (11) 查询成绩最高的学生学号、姓名、课程代码、课程名称、成绩; select a.sno 学号,sname 姓名,b.cno 课程代码,cname 课程名称,score 成绩 from s10060112 a,c10060112 b,sc10060112 c where a.sno=c.sno and b.cno=c.cno and score in( select max(score) from sc10060112) (12) 查询选修操作系统课程的专业代码为’07’的学生信息(其中:学号的第 3、 4 位为专业代码); select sno 学号,sname 姓名,sex 性别,birthday 出生日期,nation 民族from s10060112 where sno='__07%' and sno in(select sno from sc10060112 where cno in (select cno from c10060112 where cname='操作系统')) 五.用 SQL 语言完成如下要求: (1)删除学号为“08110207”的所有课程; delete from sc10060112 where sno='08110207' (2)删除没有选课的学生信息; delete from s10060112 where sno not in(select sno from sc10060112 ) (3)将学号为“08050412”的学生信息更新为您自己的信息; update s10060112 set sno='08050412',sname='范成忠',sex='男 ',birthday='1990-12-14',nation='汉' where sno='08050412' update s10060112 set sno='10060112' where sname='范成忠' (4)删除姓名为“王珊珊”的学生信息; delete from s10060112 where sname='王珊珊' (5)将姓名为“杨彤”的民族修改为“藏”; update s10060112 set nation='藏' where sname='杨彤' 六.谈谈您在第 3、5 步操作过程中遇到什么问题?如何解 决这些问题的? 1.在做数据查询时,表与表之间的连接性。如:(4) 查询不及格的学号, 课程代码,课程名称,成绩。查询语句:select sno 学号,b.cno 课程代码,cname 课程名称,score 成绩 from c10060112 b,sc10060112 c where b.cno=c.cno and score<60,其中 cno(课程代码),在此查询语句中,涉及到课程信息与学生成绩, 所以必须应不同的标示符来代表各表中的 cno(课程代码),即 b.cno 表示课程
信息中的 cno,c.cno 表示学生成绩中的 cno 2.在做数据修改时,在做(3)将学号为“08050412”的学生信息更新为 您自己的信息,在此过程中发现不能完全修改。如:修改语句:update s10060112 set sno='10060112',sname='范成忠',sex=' 男’,birthday='1990-12-14',nation='汉' where sno='08050412'.会出现系统 提示:UPDATE 语句与REFERENCE 约束"FK__sc631106050__Sno__08EA5793"冲突。 该冲突发生于数据库"STUDENT631106050225",表"dbo.sc631106050225", column 'Sno'。语句已终止。我解决方法是先修改其他信息,在修改学号。如下: update s10060112 set sno='08050412',sname='范成忠',sex='男 ',birthday='1990-12-14',nation='汉' where sno='08050412' update s10060112 set sno='10060112' where sname='范成忠' 七.操作结果记录: 在第五步完成之后,将 3 个表的数据分别查询出来,将 3 个表的查询结果用 图片方式放到设计报告之中。 select sno 学号,sname 姓名,sex 性别,birthday 出生日期,nation 民族from s10060112 select cno 课程代码,cname 课程名称,credit 学分 from c10060112 select sno 学号,cno 课程代码,score 成绩from sc10060112
八.心得体会 这次课程设计,虽只是一个简单学生成绩管理,而且也只是简单的操作怎 样查询数据,怎样修改数据,但真正做起来还是有一点难度的,因为虽然看起来 我们会做了,但大多是按部就班,根据书上的示例来操作。这说明了,我们的实 践操作能力还远远不够,必须加强实践操作这一方面的锻炼。 在图书馆找资料看时,其实里面还有许多知识我们都没接触,而我们学 的只是皮毛,而那些更多的知识,还需要我们去学习,去实践,去发现问题从而 思考问题并解决问题,让自己更深程度的吃透那些知识。 这只是一个简单的数据操作,但我们不能满于现状,应该更多的思考, 想象,设计,在此简单的数据操作基础上在增加一些功能,使其更加完善。 最后,我自从此次课程设计,我觉得人如果没有自信,没有目标,没 有信心就不可能把事情做好,我们需要更多实践操作,而且也要勇于面对在其实 践操作中遇到的问题,这就是此次课程设计给我最大的感想。 九.参考资料 《SQL Server 数据库应用基础教程》——北京:高等教育出版社,2008. 《数据库应用技术——SQL Server 2000 数据库简明教程》——北京:中 国水利水电出版社,2007. 《SQL Server 2000 基础教程》——北京:清华大学出版社,2005
分享到:
收藏