首页 > 试题广场 >

数据库 有一个学生课程数据库,包括学生表 S、课程表

[问答题]
数据库
有一个学生课程数据库,包括学生表 S、课程表 C 和学生成绩表 SC,它们结构如下:

学生表S

学号

Sno

姓名

Sname

性别

Ssex

年龄

Sage

所在系

Sdept

课程表C

课程编号

Cno

课程名

Cname

学分

Ccredit

学生成绩表SC

学号

Sno

课程编号

Cno

成绩

Grade

写出完成下列要求的SQL语句:

1) 查询所有学过 “数据库”的学生姓名,并且按姓名由大到小排序。

注:由于补考、重修,一个学生可能有多个考试成绩,查询结果只需要输出一个。

2) 查询所修学分超过80分的学生,输出学生学号和所修学分。(注:要成绩60分以上的)

3) 给SC表增加代课教师字段Teacher,数据类型为字符串,长度20,非空

4) 创建每个学生学习总分的视图,字段有学号、总分,视图名SCSum

5) 删除SC表中,学号在学生表中不存在的记录

DELETE FROM SC WHERE NOT EXISTS (SELECT Sno FROM Student WHERE Student.Sno=SC.Sno);
发表于 2019-09-15 15:58:48 回复(0)

1  SELECT distinct Sname

        FROM S,C,SC

        WHERE S.Sno=SC.Sno AND C.Cno=SC.Cno

        AND C.Cname=’数据库’

        ORDER BY Sname DESC;

        SELECT Sname

        FROM S,C,SC

        WHERE S.Sno=SC.Sno AND C.Cno=SC.Cno

        AND C.Cname=’数据库’

        GROUP BY Sname

        ORDER BY Sname DESC;

2  SELECT Sno,SUM(Ccredit)

FROM Sc,C

WHERE Sc.Cno=C.Cno

AND Grade>=60

GROUP BY Sno

HAVING SUM(Ccredit)>80

3  ALTER TABLE CS ADD(Teacher,char(20) not null)

4  CREATE VIEW SCSum

AS SELECT Sno,SUM(Grade) Grade

FROM SC

GROUP BY Sno

5 DELETE FROM  SC WHERE  NOT EXITSTS (SELECT 1 FROM S WHERE S.Sno=SC.Sno)

发表于 2019-09-21 22:15:22 回复(0)
注:having句中般用聚合函数
发表于 2021-03-20 08:57:50 回复(0)
1.select Sname from S,C,SC where S.Sno=SC.Sno and C.Cno=SC.Cno and Cname='数据库' order by Sname desc;
2.select Sno,sum(Ccredit) from S,C ,SC where Grade>60 and S.Sno=SC.Sno and C.cno=SC.cno having sum(Ccredit)>80;
3.alter table SC add Teacher String(20) not null;
4.create view SCSum as select Sno ,Sum(Grade) from SC;
5.delete from SC not exists (select 1 from S where S.Sno=SC.Sno);
发表于 2020-10-06 12:31:09 回复(0)
Select distinct sname from s,sc,c where s.sno=sc.sno and sc.cno = c.cno and c.cname=’数据库’order by sname desc Select sno,sum(distinct ccredit) from sc,c where grade>60 and c.cno=sc.cno group by sno having sum(distinct ccredit)>80
Alter table sc add teacher varcher(20) not null;
Create view scsum as select sno 学号,sum(distinct grade) 总分 from sc group by sno
Delete from sc where not exist(select 1 from s where s.sno=sc.sno); 


发表于 2020-03-19 15:00:53 回复(0)