综合题 现有“学生-选课-课程”关系数据库如下: 学生表S(Sno,Sname,Sage,Ssex,Sdept),各属性含义依次为学号,姓名,年龄,性别,所在系; 选课表SC(Sno,Cno,Grade),各属性含义依次为学号,课程号,成绩; 课程表C(Cno,Cname,Cteacher),各属性含义依次为课程号,课程名,授课教师 ; 试用SQL语言完成以下操作:(本小题3×5=15分)
问答题 检索年龄在18到22之间(含18和22)的男生的学号、姓名及年龄;
【正确答案】 方法1: SELECT Sno,Sname,Sage   (1分) FROM S   (1分) WHERE Sage BETWEEN 18 AND 22   (0.5分) AND Ssex=‘男’   (0.5分)  方法2: SELECT Sno,Sname,Sage (1分) FROM S (1分) WHERE Sage>= 18 AND Sage <=22  (0.5分) AND Ssex=‘男’  (0.5分)
【答案解析】
问答题 检索选修了“王杰”老师所授课程的学生的学号和姓名;
【正确答案】方法1: SELECT Sno,Sname  (1分) FROM S,SC,C  (0.5分) WHERE S.Sno=SC.Sno  (0.5分) AND SC.Cno=C.Cno (0.5分) AND C.Cteacher=‘王杰’   (0.5分) 方法2: SELECT Sno,Sname  (1分) FROM S WHERE Sno IN  (0.5分) (SELECT Sno FROM SC (0.5分) WHERE Cno IN   (SELECT Cno FROM C (0.5分) WHERE Cteacher =‘王杰’))  (0.5分)
【答案解析】
问答题 用CREATE 语句创建选课表(假设学生表和课程表已存在,需定义主码和外码,学号为字符型,长度为10,课程号为字符型,长度为7,成绩为短整型);
【正确答案】CREATE TABLE SC                   (1分) (Sno CHAR(10) ,Cno CHAR(7),Grade SMALLINT,     (1分) PRIMARY  KEY(Sno,Cno),              (0.5分) FOREIGN  KEY(Sno) REFERENCES S(Sno),      (0.5分) FOREIGN  KEY(Cno) REFERENCES C(Cno));
【答案解析】
问答题 查询每个学生的学号、姓名、平均成绩和总成绩;
【正确答案】SELECT Sno,Sname , AVG (Grade) ,SUM (Grade)   (1分) FROM   S,SC   (1分) WHERE S. Sno=SC .Sno         (0.5分) GROUP BY S.Sno       (0.5分)  评分标准:AVG (Grade),SUM (Grade)有错误,第1句仅给0.5分,WHERE 和GROUP BY语句顺序有错误,最后两句仅给0.5分。
【答案解析】
问答题 从学生表中删除选修成绩出现过0分的所有学生信息。
【正确答案】DELETE FROM S (1分) WHERE Sno IN (1分) (SELECT Sno   FROM SC WHERE Grade=0) (1分)
【答案解析】