范文网 作文大全 学生成绩管理数据库的建立:数据库查询学生平均成绩(全文)

学生成绩管理数据库的建立:数据库查询学生平均成绩(全文)

学生成绩管理数据库的建立:数据库查询学生平均成绩学生成绩管理数据库的建立2、构建一个教学管理关系数据库如下: 学生(学号,姓名,性别,年龄,籍贯,班级代号) 课程(课程号,课程名称,学分数,教师代号) 成绩(学号,课程号,成绩,考试时间)。

学生成绩管理数据库的建立:数据库查询学生平均成绩

学生成绩管理数据库的建立

2、构建一个教学管理关系数据库如下: 学生(学号,姓名,性别,年龄,籍贯,班级代号) 课程(课程号,课程名称,学分数,教师代号) 成绩(学号,课程号,成绩,考试时间) 教师(教师代号,姓名,性别,年龄,职称)

为方便起见,上述关系用英文字母表示如下:

S (,NAME ,SEX ,AGE ,JG ,CLASSNO )

C (CNO ,CNAME ,XF ,TNO )

G (,GRADE ,DA TE )

T (NAME ,SEX ,AGE ,ZC )

上述关系模式中,带下划线的属性为各自关系的关键字,其中学生表输入20条记录;课程表输入10条记录;成绩表输入100条记录;教师表入5条记录。基于这些关系表,做如下查询:

(1)

(2)

(3)

(4)

(5)

(6)

(7)

(8)

(9) 找出男性学生的姓名 找出不是“2031”班的学生 查询“李峰”老师所教课程的课程名称和学分 检索出选修了课程代号为“c11”和“c23”课程的学生 查询至少选修了一门“李峰”老师的课程的学生姓名 求选修了课程名为“数据库原理”的所有学生的学号和姓名 找出学生代号为“S101”和“S102”两个学生都选修了的课程 检索出没有被任何学生选修的课程 求出每个学生的成绩的平均分和总分

(10) 求至少三门以上课程成绩在90分以上的学生学号

(11) 求获得学分数在200以上的学生

(12) 求出少于10个学生选修的课程

(13) 求出有四门课程考试不及格的学生的姓名

(14) 求出每个老师所教课程的学分总数

(15) 求出教了三门课以上的老师

(16) 求出只教一门课程的老师

(17) 求出每一个班级中每一门课程获得最高分的学生的学号

对应的SOL 语句:

1)SELECT S.NAME

FROM S

WHERE ((s.sex="男"));

2)SELECT S.*

FROM S

WHERE (((S.CLASSNO) Not Like "2031"));

3)SELECT C.CNAME, C.XF, C.TNO

FROM C

WHERE (((C.TNO) Like "1"));

4)SELECT S.*

FROM S INNER JOIN G ON S.SNO=G.SNO

WHERE G.CNO Like "c11" And EXISTS(SELECT *

FROM G AS G2

WHERE G.SNO=G2.SNO AND G2.CNO Like "c23" );

5)SELECT S.NAME, S.SNO, G.CNO

FROM (S INNER JOIN G ON S.SNO = G.SNO) INNER JOIN C ON G.CNO = C.CNO WHERE (((G.CNO)="c11" Or (G.CNO)="c12" Or (G.CNO)="c21"));

6)SELECT S.NAME, S.SNO

FROM S INNER JOIN G ON S.SNO = G.SNO

WHERE (((G.CNO)="c13"));

7)SELECT S.SNO, G.CNO, C.CNAME

FROM (S INNER JOIN G ON S.SNO=G.SNO) INNER JOIN C ON G.CNO=C.CNO

WHERE (((S.SNO) Like "s101") AND ((Exists (SELECT * FROM G AS G2 WHERE G .CNO=G2.CNO AND G2.SNO LIKE "s102"))False));

8)SELECT C.*

FROM C

WHERE (((C.CNO) Not In (SELECT G.CNO FROM G)));

9)SELECT S.SNO, Avg(G.GRADE) AS GREAT 之平均值, Sum(G.GRADE) AS GREAT 之总计 FROM S INNER JOIN G ON S.SNO=G.SNO

GROUP BY S.SNO;

10)SELECT S.NAME, S.SNO, Count(G.GRADE) AS GRADE之计数

FROM S INNER JOIN G ON S.SNO=G.SNO

WHERE (((G.GRADE)>"90"))

GROUP BY S.NAME, S.SNO

HA VING (((Count(G.GRADE))>2));

11)SELECT S.SNO, S.NAME, Sum(G.GRADE) AS GREAT 之总计

FROM S INNER JOIN G ON S.SNO=G.SNO

GROUP BY S.SNO, S.NAME

HA VING Sum(G.GRADE)>200;

12)SELECT C.CNAME, C.CNO, Count(G.GRADE) AS GRADE之计数

FROM (S INNER JOIN G ON S.SNO=G.SNO) INNER JOIN C ON G.CNO=C.CNO GROUP BY C.CNAME, C.CNO

HA VING (((Count(G.GRADE))>9));

13)SELECT S.NAME, Count(G.GRADE) AS GRADE之计数

FROM S INNER JOIN G ON S.SNO=G.SNO

WHERE (((G.GRADE)

GROUP BY S.NAME

HA VING (((Count(G.GRADE))=4));

14)SELECT C.TNO, T.NAME, Sum(C.XF) AS XF之总计

FROM C INNER JOIN T ON C.TNO=T.TNO

GROUP BY C.TNO, T.NAME;

15)SELECT T.NAME, T.TNO, Count(C.CNO) AS CNO之计数

FROM T INNER JOIN C ON T.TNO=C.TNO

GROUP BY T.NAME, T.TNO

HA VING (((Count(C.CNO))>2));

16)SELECT T.NAME, T.TNO, Count(C.CNO) AS CNO之计数

FROM T INNER JOIN C ON T.TNO=C.TNO

GROUP BY T.NAME, T.TNO

HA VING (((Count(C.CNO))=1));

17)SELECT S.CLASSNO, G.CNO, Max(G.GRADE) AS GRADE之最大值 FROM S INNER JOIN G ON S.SNO = G.SNO

GROUP BY S.CLASSNO, G.CNO;

上一篇
下一篇
返回顶部