【数据库系统概论】作业6 第八章 习题2、第九章 习题9
试画出用关系代数表示的语法树,并用关系代数表达式优化算法对原始的语法树进行优化处理,画出优化后的标准语法树。1.请完成第8、9章作业,习题8第2题,习题9第3题,提交文档。(1)统计离散数学的成绩分布情况,即按照各分数段统计人数。创建好存储过程后运行,必须先创建,再EXEC。
·
一、要求:
1.请完成第8、9章作业,习题8第2题,习题9第3题,提交文档。
二、题目:
第八章 数据库编程
2.对学生-课程数据库编写存储过程,完成下述功能∶
(1)统计离散数学的成绩分布情况,即按照各分数段统计人数
1.建表Rank
DROP TABLE IF EXISTS Rank;
CREATE TABLE Rank(
Grade CHAR(20), -- 成绩划分等级
num INT -- 该分数段人数
)
INSERT INTO Rank
VALUES('[0,20)',0),('[20,40)',0),('[40,60)',0),('[60,80)',0),('[80,100]',0);
SELECT * FROM Rank
IF(EXISTS(SELECT * FROM sys.objects WHERE name='Proc_Grade'))
DROP PROCEDURE Proc_Grade
GO
CREATE PROCEDURE Proc_Grade
AS
DECLARE
@less20 INT,
@20to40 INT,
@40to60 INT,
@60to80 INT,
@80to100 INT,
@Cno CHAR(4);
SELECT @Cno=Cno FROM Course WHERE Cname='离散数学';--统计各个分数段人数
SELECT @less20=COUNT(*) FROM SC WHERE Grade<20 AND Cno=@Cno; -- 将该分数段的人存储在@less20中
UPDATE Rank SET num=@less20 WHERE Grade='[0,20)';
SELECT @20to40=COUNT(*) FROM SC WHERE Grade<40 AND Grade>=20 AND Cno=@Cno;
UPDATE Rank SET num=@20to40 WHERE Grade='[20,40)';
SELECT @40to60=COUNT(*) FROM SC WHERE Grade<60 AND Grade>=40 AND Cno=@Cno;
UPDATE Rank SET num=@40to60 WHERE Grade='[40,60)';
SELECT @60to80=COUNT(*) FROM SC WHERE Grade<80 AND Grade>=60 AND Cno=@Cno;
UPDATE Rank SET num=@60to80 WHERE Grade='[60,80)';
SELECT @80to100=COUNT(*) FROM SC WHERE Grade<=100 AND Grade>=80 AND Cno=@Cno;
UPDATE Rank SET num=@80to100 WHERE Grade='[80,100]';
创建好存储过程后运行,必须先创建,再EXEC。
EXEC Proc_Grade;
SELECT *FROM SC WHERE Cno=8
SELECT *FROM Rank
第九章 关系查询处理和查询优化
3.对学生-课程数据库,查询信息系学生选修了的所有课程名称。
SELECT Cname
FROM Student, Course, SC
WHERE Student.Sno=SC.Sno AND SC.Cno=Course.Cno AND Student.Sdept='IS';
试画出用关系代数表示的语法树,并用关系代数表达式优化算法对原始的语法树进行优化处理,画出优化后的标准语法树。
最初的语法树:
关系代数语法树:
优化后:
更多推荐
已为社区贡献4条内容
所有评论(0)