4)统计选修“大学英语”的学生人数
Select count(*);From 选课,课程;
Where 选课.课程号=课程.课程号 and 课程.课程名=”大学英语”5)查询学生的学号、姓名、选修的所有课程名、成绩,并按学号升序排序 Select 学生.学号,学生.姓名,课程.课程号,选课.成绩; From 学生,课程,选课;
Where 学生.学号=选课.学号 and 选课.课程号=课程.课程号; Order by 学生.学号 asc
6)查询每门课程的课程号、课程名和平均成绩,结果按课程号降序排列。 Select 课程.课程号,课程.课程名,avg(选课.成绩); From 课程,选课;
Where 课程.课程号=选课.课程号; Order by 课程.课程号 desc2.现有关系数据库如下: 课程(课程号,名称,学分) 学习(学号,课程号,分数)
请用关系代数表达式实现下列1—4小题,用SQL语言实现下列小题。
1)检索“国际贸易”专业中获得奖学金的学生信息,包括学号、姓名、课程名和分数; 关系代数表达式
Π学号,姓名,课程名,分数(σ奖学金>0∧专业=国际贸易(学生∞学习∞课程))SQL语言
Select 学生.学号,学生.姓名, 课程.名称, 学习.分数;From 学生,课程,学习;
Where 学生.学号=学习.学号 and 课程.课程号=学习.课程号 and 奖学金=.t. and
学生.专业=“国际贸易“
2)检索学生成绩得过满分(100分)的课程的课程号、名称和学分;关系代数表达式
Π课程号,名称,学分(σ分数=100(学习∞课程))SQL语言
Select 课程.课程号,课程.名称,课程.学分;
学生(学号,姓名,性别,专业、奖学金)
From 课程,学习;
Where 课程.课程号=学习.课程号 and 学习.分数=100; Group by 课程.课程号
2)检索没有获得奖学金、同时至少有一门课程成绩在95分以上的学生信息,包括学
号、姓名和专业; 关系代数表达式
Π学号,姓名,专业(σ奖学金<=0∧分数>95(学生∞学习)) SQL语言
SELECT 学生.学号,姓名,专业; FROM 学生,学习;
WHERE 学生.学号=学习.学号 AND 学习.课程号=课程.课程号 AND 奖学金<=0 AND
分数>95
4)检索没有任何一门课程成绩在80分以下的学生的信息,包括学号、姓名和专业;
关系代数表达式
Π学号,姓名,专业(学生)—Π学号,姓名,专业(σ分数<80(学生∞学习))SQL语言
SELECT 学号,姓名,专业; FROM 学生; WHERE 学号 NOT IN;
(SELECT 学号FROM 学习WHERE 分数<80)
5)检索没有获得奖学金、同时至少有一门课程成绩在95分以上的学生信息,包括学号、姓名和专业;同3
6)检索没有任何一门课程成绩在80分以下的所有学生的信息,包括学号、姓名和专业;同4
7)对成绩得过满分(100分)的学生,如果没有获得奖学金的,将其奖学金设为1000元;
UPDATE 学生; SET 奖学金=1000;
WHERE 奖学金<=0 AND 学号 IN;
(SELECT 学号FROM 学习WHERE 分数=100)
8)定义学生成绩得过满分(100分)的课程视图AAA,包括课程号、名称和学分;
CREATE VIEW AAA(课程号,名称,学分 )AS SELECT 课程号,名称,学分; FORM 课程;
WHERE 课程号 IN;
(SELECT 课程号FROM 学习WHERE 分数=100)
六、程序设计
1.编写程序,其功能是统计学生表中入校总分介于450到500分之间(包括450和500)的学生人数。
Use 学生
N=0
Do while .not.eof()
If 入校总分>=450 and入校总分<=500
N=N+1EndifSkipEnddo? nuse
2.编写程序,其功能是:请用户输入待查询学生的学号,若找到则显示该学生的学号、姓名、性别、籍贯等信息,否则显示“没有此人!”。
Use 学生
Accept “请输入学号:” to numLoca for xh=numIf found()
? 学号,姓名,性别,籍贯else
? “没有此人!” Endif Use
3.编写程序,其功能是修改选课表中的成绩:低于60分的成绩均加10分,高于60分(包括60)的成绩均加5分。
Use 选课
Do while .not.eof() If 成绩<60
Repl 成绩 with 成绩+10 Else
Repl 成绩 with 成绩+5 Endif Skip Enddo Use
4. 编一程序,在表xscj.dbf(表结构为:姓名C、数学N、语文N、外语N、总分N、平均分N、等级C)中,划分并填写等级:平均分在90分以上(含90分)为优秀,
80分以
上(含80分)为良好,70分以上(含70分)为中等,60分以上(含60分)为及格,否则为不及格。Use xscj
Do while .not. eof()
repl 总分 with 数学+语文+外语,平均分 with (数学+语文+外语)/3
Do case
Case 平均分>=90 and平均分<=100
Replace 等级 with “优秀“Case 平均分>=80 and平均分<=89
Replace 等级 with “良好“Case 平均分>=70 and平均分<=79
Replace 等级 with “中等“Case 平均分>=60 and平均分<=69
Replace 等级 with “及格“
Otherwise
Replace 等级 with “不及格“
EndcaseSkip
Use
Enddo
[VIP专享]数据库总复习题+答案



