试题:
现有一教学数据库的关系模式如下
A(a#,sname,age,sex)
Ab(a#,b#,grade)
B(b#,cname,teacher)
其中:
A表示教员表,它的各属性一次为学号、姓名、年龄和性别,此表中记录条数不少于20条;
Ab示成绩表,它的各属性一次为学号、课程号和分数,此表中记录条数不少于20条;
B表示课程表,它的各属性一次为课程号、课程名和任课教师,此表中记录条数不少于10条。
在查询分析器中用T-SQL语句完成下列查询:
① 检索刘老师所教授课程的课程号和课程名
② 检索年龄小于20岁的女学生的学号和姓名
③ 检索学号为1005学生所学课程的课程名与任课教师。
④ 检索课程名称为‘英语泛读’的男学生的姓名、班级和课程号
⑤ 检索至少选两门课程的班级
⑥ 检索全部学生都选修的课程表中的课程号与课程名
⑦ 检索选修课程“运筹学”的学生的学号
(2) 根据前面设计的学生成绩表的属性(学号,课程号,班级,期中成绩,期末成绩,总评成绩),和学生信息表的属性(学号,姓名,年龄,班级,电话),课程(课程号,课程名称,任课教师,学分),完成下列查询语句:
① 根据课程分组,统计期中成绩的平均分,和总分。
② 根据课程和学号分组,统计期末成绩的平均分,和期末成绩总分。
③ 根据课程分组,分组的条件是期末的平均成绩不低于60,统计期末成绩的平均分,和期末成绩总分
④ 在学号901004—1010中,求平均年龄。
⑤ 列出年龄等于18岁的学生成绩的记录。
⑥ 建立一个查询,使得如果在学生成绩表中期中成绩小于60分的行,则将课程表中的数据全部检索出来。
⑦ 查询学生信息表中的学号和姓名,并使用子查询来获得该学生的期中成绩,期末成绩和总评成绩。
建立此数据库,文件名为姓名,时间2小时.
一、
1) select cname,teacher from B where teacher like '刘%'
2) select a#, sname, from A where age<20 and sex='女'
3) select cname,teacher
from B,A,Ab
where (B.b#=AB.b# and A.a#=Ab.a# and A.a#='1005')
4) select A.a#,B.b#
from B,A,Ab
where (B.cname='英语泛读' and A.sex='男')
5) select Ab.a#,count(Ab.b#)
from Ab
group by (Ab.a#)
Having count(Ab.b#)>=2
6) select cname,B.b#
from B,A,Ab
where (B.b#=AB.b# and A.a#=Ab.a#)
7) select cname,B.b#
from B,A,Ab
where (B.b#=AB.b# and A.a#=Ab.a# and cname='运筹学')
二、
1) select avg(期中成绩),sum(期中成绩)
from 学生成绩表
group by 课程号
2) select avg(期末成绩),sum(期末成绩)
from 学生成绩表
group by 课程号,学号
3) select avg(期末成绩),sum(期末成绩)
from 学生成绩表
where 期末成绩>=60
group by 课程号
4) select avg(年龄)
from 学生信息 inner join 学生成绩
on 学生信息.学号=学生成绩.学号
where 学生信息.学号>='901004' and 学生信息.学号<='901000'
5) select 学生成绩.*
from 学生信息 inner join 学生成绩
on 学生信息.学号=学生成绩.学号
where 学生信息.年龄=18
6) select 课程.*
from 课程 inner join 学生成绩
where 学生成绩.期中成绩<60
7) select 学生成绩表.其中成绩
from 学生成绩
where 学生成绩.学号 in (select 学生信息.学号,学生信息.姓名 from 学生信息 where 学生信息.学号=你输入的学号)