《(数据库应用技术)---开放大学-形考实验答案.docx》由会员分享,可在线阅读,更多相关《(数据库应用技术)---开放大学-形考实验答案.docx(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、参考答案1.单表查询。写出实现如下直询的SQL语句。(1)查询学生选课表中的全部数据。SELECT * FROM SC(2)查询计算机系的学生的姓名、年龄。SELECT SnamezSex FROM Student WHERE Sdept=计算机系(3)查询成绩在7080分的学生的学号、课程号和成绩。SELECT Sno,Cno,Grade FROM SC where Grade BETWEEN 70 AND 80;(4)查询计算机系年龄在18 20岁男生的姓名、年龄。SELECT SnamezSage from Student where Sex二男AND Sage18 AND Sage20
2、0;(11)查询选课门数超过2门的学生的学号、平均成绩和选课门数。SELECT top 2 Sno,count(cno) 1 选课门数吁rom SC GROUP BY Sno ORDER BY 2 DESC;.多表连接查询。写出实现如下查询的SQL语句。(12)查询选了 C002课程的学生的姓名和所在系。SELECT SnamezSdept from SQStudent where SC.Sno=Student.Sno ANDCno=C002(13)查询成绩80分以上的学生的姓名、课程号和成绩,并按成绩降序排列结果。SELECT Sname,Cno,Grade FROM SQStudent W
3、HERE Grade80 AND Student.Sno =SC.Sno ORDER BY Grade DESC(14)查询计算机系男生选修了 数据库基础的学生的姓名和成绩。select sname,ssexzgrade from student s join sc on s.sno = sc.snojoin course c on o = owhere sdept =,计算机系,and ssex =男and cname =数据库基础(15)查询学生的选课情况,要求列出每位学生的选课情况(包括未选课的学生),并列出 学生的学号、姓名、课程号和考试成绩。SELECT Student.Sno,Sn
4、amezCno from SC,Student WHERE Student.Sno= SC.Sno(16)查询哪些课程没有人选修,要求列出课程号和课程名。SELECT Course.Cno,Cname from SQCourse WHERE SC.Cno= Course.Cno AND SnoIS NULL;(17)查询计算机系没有选课的学生,列出学生的姓名。SELECT Sname FROM StudentzSC WHERE Student.Sno=SC.Sno AND Cno is NULLAND Sdept二讨算机系2 .使用TOP和CASE的查询。写出实现如下查询的SQL语句。(18)
5、列出数据库基础”课程考试成绩前三名的学生的学号、姓名、所在系和考试成绩。SELECT top 3 Student.Sno,Sname,Sdept,Grade from SC,Course,Student WHEREStudent.Sno = SC.Sno AND SC.Cno=Course.Cno and Cname=数据库基础ORDER BY Grade DESC;(19)查询Java考试成绩最低的学生的姓名、所在系和Java成绩。SELECT Sname,Sdept,Grade from SCzCourse,Student WHERE Student.Sno =SC.Sno AND SC.
6、Cno=Course.Cno and Cname=java order by Grade asc limit 1 (20)查询选修了 Java的学生学号、姓名、所在系和成绩,并对所在系进行如下处理: 当所在系为“计算机系时,显示CS;当所在系为信息管理系时,显示;当所在系为通信工程系时,显示CO;对其他系,均显示OTHER。select s.sno 学号,sname 姓名,case sdeptwhen 讨算机系,then CSwhen 信息管理系then ISwhen通信工程系then CO else OTHER,end as所在系,grade成绩from student s join sc
7、on s.sno = sc.snojoin course c on o = owhere cname = Java3 .子蛰询。写出实现如下查询的SQL语句。(21)查询选修了 C001课程的学生姓名和所在系。select snamezsdept from student where sno in(select sno from sc where eno = C001)(22)查询计算机文化学考试成绩在80分以上的学生的学号和姓名。select sno,sname from student where sno in(select sno from sc where grade 80and en
8、o in (select eno from coursewhere cname =计算机文化学)(23)查询计算机文化学考试成绩最高的学生姓名和所在系。select sname,sdept from student s join sc on s.sno = sc.snoJoin course c on o = owhere grade =(select max(grade) from sc join course c on o = owhere cname =,计算机文化学,)and cname =计算机文化学(24)查询年龄最大的男生的姓名和年龄。select sname,sage from
9、 studentWhere sage = (select max(sage) from student and ssex =男) and ssex =男(25)查询C001课程的考试成绩高于C001课程的平均成绩的学生的学号及其C001课程 考试成绩。select sno,grade from sc where eno = C001And grade (select avg(grade) from sc where eno = C001)4 .数据更改。写出实现如下操作的SQL语句。(26)将C001课程的考试成绩加10分。update sc set grade = grade + 10 wh
10、ere eno = C001(27)将计算机系所有选修了 计算机文化学”课程的学生考试成绩加10分,分别用子查 询和多表连接形式实现。1)子查询update sc set grade = grade + 10where sno in(select sno from student where sdept =计算机系)and eno in(select eno from course where cname 二计算机文化学)2)多表连接update sc set grade = grade + 10from sc join student s on sc.sno = s.snojoin cour
11、se c on o = owhere sdept =计算机系and canem =计算机文化学6.数据删除。写出实现如下操作的SQL语句。(28)删除考试成绩低于50分的学生的选课记录。delete from sc where grade 50(29)删除信息管理系考试成绩低于50分的学生的该门课程的选课记录,分别用子杳询和 多表连接形式实现。1)用连接查询实现delete from sc from sc join student s on s.sno=sc.snowhere sdept =信息管理系and grade 502)用子查询实现delete from sc where sno in (select sno from student where sdept =信息管理系)(30)删除Java考试成绩最低的学生的Java选课记录。delete from scwhere grade =(select min(grade) from scjoin course c on o = owhere cname = Java)and eno in(select eno from course where cname =Java)
限制150内