上海电机学院 201__–201__学年第__学期
(课程代码)《数据库原理及应用》课程期中考试试卷
开课学院: 电子信息学院 考试时间 90 分钟 A卷
计算器□ 草稿纸□ 答题卡□ 考试形式: 开卷□/闭卷□
考生姓名: 学号: 班级:
题序 | 一 | 二 | 三 | 四 | 五 | 六 | 七 | 八 | 总 分 |
得分 | |||||||||
评卷人 | |||||||||
一sql统计每个系的学生人数. 设有三个关系:
S(S#,SNAME,AGE,SEX)
SC(S#,C#,GRADE)
C(C#,CNAME,TEACHER)
试用关系代数表达式表示下列查询语句.
1. 试用关系代数表达式表示上题中各个查询语句。
(1)检索LIU老师所授课程的课程号、课程名。
πC#,CNAME(σTEACHER='LIU'(C))
(2)检索年龄大于23岁的男学生的学号与姓名。
πS#,SNAME(σAGE>'23'∧SEX='男'(S))
(3)检索学号为S3学生所学课程的课程名与任课教师名。
πCNAME,TEACHER(σS#='S3'(SCC))
(4)检索至少选修LIU老师所授课程中一门课程的女学生的姓名。
πSNAME(σSEX='女'∧TEACHER='LIU'(SSCC))
(5)检索WANG同学不学的课程号。
S(S#,SNAME,AGE,SEX)
SC(S#,C#,GRADE)
C(C#,CNAME,TEACHER)
试用关系代数表达式表示下列查询语句.
1. 试用关系代数表达式表示上题中各个查询语句。
(1)检索LIU老师所授课程的课程号、课程名。
πC#,CNAME(σTEACHER='LIU'(C))
(2)检索年龄大于23岁的男学生的学号与姓名。
πS#,SNAME(σAGE>'23'∧SEX='男'(S))
(3)检索学号为S3学生所学课程的课程名与任课教师名。
πCNAME,TEACHER(σS#='S3'(SCC))
(4)检索至少选修LIU老师所授课程中一门课程的女学生的姓名。
πSNAME(σSEX='女'∧TEACHER='LIU'(SSCC))
(5)检索WANG同学不学的课程号。
πC#(C)-πC#(σSNAME='WANG'(SSC))
或者,
πC#(SC)-πC#(σSNAME='WANG'(SSC)) (全部课程号减去WANG同学所学的课程号)
(从C中选择满足条件的元组:SC中的所有元组,如果学号与C中所选元组相同的话,其在S中对应的姓名肯定不是'wang'。)
Notice:"p1=>p2"的含义是:如果p1为真,则p2为真。
(6)检索至少选修两门课程的学生学号。
πS#(σ1=4∧2≠5(SC×SC))
(7)检索全部学生都选修的课程的课程号与课程名。
πC#,CNAME(C(πS#,C#(SC)÷πS#(S))) (涉及到全部值时,应用除法,“除数”是"全部")
(8)检索选修课程包含LIU老师所授课程的学生学号。
πS#(σTEACHER='LIU'(SCC))
如果LIU老师有多门课程,则选修课程包含LIU老师所授全部课程的学生学号为:
πS#,C#(SC)÷πC#(σTEACHER='LIU'(C))
或者,
πC#(SC)-πC#(σSNAME='WANG'(SSC)) (全部课程号减去WANG同学所学的课程号)
(从C中选择满足条件的元组:SC中的所有元组,如果学号与C中所选元组相同的话,其在S中对应的姓名肯定不是'wang'。)
Notice:"p1=>p2"的含义是:如果p1为真,则p2为真。
(6)检索至少选修两门课程的学生学号。
πS#(σ1=4∧2≠5(SC×SC))
(7)检索全部学生都选修的课程的课程号与课程名。
πC#,CNAME(C(πS#,C#(SC)÷πS#(S))) (涉及到全部值时,应用除法,“除数”是"全部")
(8)检索选修课程包含LIU老师所授课程的学生学号。
πS#(σTEACHER='LIU'(SCC))
如果LIU老师有多门课程,则选修课程包含LIU老师所授全部课程的学生学号为:
πS#,C#(SC)÷πC#(σTEACHER='LIU'(C))
二. 设有关系R和S(如下:)
计算:
三. 笛卡尔积、等值联接、自然联接三者之间有什么区别?
笛卡尔积对两个关系R和S进行乘操作,产生的关系中元组个数为两个关系中元组个数之积。
等值联接则是在笛卡尔积的结果上再进行选择操作,从关系R和S的笛卡儿积中选择对应属性值相等的元组;
自然连接则是在等值联接(以所有公共属性值相等为条件)的基础上再行投影操作,并去掉重复的公共属性列。 当两个关系没有公共属性时,自然连接就转化我笛卡尔积。
四. 设有两个基本表R(A,B,C)和S(D,E,F),试用SQL查询语句表达下列关系代数表达式:
(1)πA(R) (2)σB='17'(R) (3)R×S (4))πA,F(σC=D(R×S))
(1)SELECT A FROM R
(2)SELECT * FROM R WHERE B='17'
(3)SELECT A,B,C,D,E,F FROM R,S
(4)SELECT A,F FROM R,S WHERE R.C=S.D
五. 设有两个基本表R(A,B,C)和S(A,B,C)试用SQL查询语句表达下列关系代数表达式:
(1)R∪S (2)R∩S (3)R-S (4)πA,B(R)πB,C(S)
(1)SELECT A,B,C
FROM R
UNION
SELECT A,B,C
FROM S
(2)SELECT A,B,C
FROM R
INTERSECT
SELECT A,B,C
FROM S
(3)SELECT A,B,C
FROM R
WHERE NOT EXISTS
(SELECT A,B,C
FROM S
WHERE R.A=S.A AND R.B=S.B AND R.C=S.C)
(4)SELECT R.A,R.B,S.C
FROM R,S
WHERE R.B=S.B
六. 设有一个学生选课数据库,包括Student,SC,Course三个关系模式:
三. 笛卡尔积、等值联接、自然联接三者之间有什么区别?
笛卡尔积对两个关系R和S进行乘操作,产生的关系中元组个数为两个关系中元组个数之积。
等值联接则是在笛卡尔积的结果上再进行选择操作,从关系R和S的笛卡儿积中选择对应属性值相等的元组;
自然连接则是在等值联接(以所有公共属性值相等为条件)的基础上再行投影操作,并去掉重复的公共属性列。 当两个关系没有公共属性时,自然连接就转化我笛卡尔积。
四. 设有两个基本表R(A,B,C)和S(D,E,F),试用SQL查询语句表达下列关系代数表达式:
(1)πA(R) (2)σB='17'(R) (3)R×S (4))πA,F(σC=D(R×S))
(1)SELECT A FROM R
(2)SELECT * FROM R WHERE B='17'
(3)SELECT A,B,C,D,E,F FROM R,S
(4)SELECT A,F FROM R,S WHERE R.C=S.D
五. 设有两个基本表R(A,B,C)和S(A,B,C)试用SQL查询语句表达下列关系代数表达式:
(1)R∪S (2)R∩S (3)R-S (4)πA,B(R)πB,C(S)
(1)SELECT A,B,C
FROM R
UNION
SELECT A,B,C
FROM S
(2)SELECT A,B,C
FROM R
INTERSECT
SELECT A,B,C
FROM S
(3)SELECT A,B,C
FROM R
WHERE NOT EXISTS
(SELECT A,B,C
FROM S
WHERE R.A=S.A AND R.B=S.B AND R.C=S.C)
(4)SELECT R.A,R.B,S.C
FROM R,S
WHERE R.B=S.B
六. 设有一个学生选课数据库,包括Student,SC,Course三个关系模式:
Student(Sno,Sname,Ssex,Sage,Sdept)
SC(Sno,Cno,Grade)
Course(Cno,Cname,Ccredit,Semester)
试用SQL完成如下查询:
(1) 查询SC表中的全部数据;
(2) 查询计算机系学生的姓名和年龄;
(3) 查询成绩在70-80分的学生的学号、课程号和成绩;
(4) 查询计算机系年龄在18-20岁的男学生的姓名和年龄;
(5) 查询C001课程号的最高分;
(6) 查询计算机系学生的最大年龄和最小年龄;
(7) 统计每个系的学生人数;
(8) 统计每门课程号的选课人数和考试最高分;
(9) 统计每个学生的选课门数和考试总成绩,并按选课门数升序显示结果;
(10) 查询总成绩超过200分的学生,要求列出其学号和总成绩;
(11) 查询选修C002课程的学生姓名和所在系;
(12) 查询成绩80分以上的学生姓名、课程号和成绩,并按成绩降序排列结果;
(13) 查询哪些课程号没有学生选修,要求列出课程号和课程名;
(14) 查询计算机系哪些学生没有选课,列出学生姓名;
(15) 查询选修C001课程号的学生姓名和所在系;
(16) 查询通信工程系成绩在80分以上的学生学号和姓名;
(17) 查询计算机系考试成绩最高的学生姓名。
(18) 查询年龄最大的男学生的姓名和年龄;
(19) 查询C001课程号的考试成绩高于该课程号平均成绩的学生学号和成绩;
(20) 创建内容为学生学号、姓名、所在系、课程号、课程名、课程学分的视图;
(21) 创建内容为学生的学号、姓名、选修课程名和考试成绩的视图;
(22) 创建内容为统计每个学生的选课门数的视图,要求列出学生学号和选课门数;
(23) 创建内容为每个学生的选课总学分的视图,要求列出学生学号和总学分(说明: 考试成绩超过60才能获得此课程的学分)
(24) 删除选课成绩小于50分的学生的选课记录;
(25) 将所有选修C001课程的学生的成绩加10分;
(26) 将计算机所有选修“数据库原理及应用”课程的学生成绩加10分。
答案:
(1) Select * from sc;
(2) Select sname,sage from student where sdept=’计算机系’;
(3) Select sno,course,grade from sc where grade between 70 and 80;
(4) Select sname,sage from student where sdept=’计算机系’ and ssex=’男’ and sage between 18 and 20;
(5) Select max(grade) 最高分 from sc where cno=’C001’;
(6) Select max(sage) 最大年龄,min(sage) 最小年龄 from student where sdetp=’计算机系’;
(7) Select sdept,count(*) 学生人数 from student group by sdept;
(8) Select cno,count(*) 选课人数, max(grade) 最高分 from sc group by cno;
(9) Select sno,count(*) 选课门数, sum(grade) 总成绩 from sc group by sno order by count(*);
(10) Select sno,sum(grade) 总成绩 from sc group by sno having sum(grade)>200;
(11) Select sname,sdept from student,sc where student.sno=sc.sno and cno=’C002’;
(12) Select sname,cno,grade from student,sc where student.sno=sc.sno and grade>80 order by grade desc;
(13) Select
(14) Select
(15) Select
(16) Select sno,sname from student,sc where student.sno=sc.sno and sdept=’通信工程系’ and grade>80;
(17) Select
(18) Select
(19) Select sno,grade from sc where grade>(select avg(grade) from sc where cno=’c001’) and cno=’c001’;
(20) Create view view1 as select sno,sname,sdept,cno,cname,ccredit from student,sc,course where student.sno=sc.sno and sco=courseo;
(21) Create view view2 as select sno,sname,cname,grade from student,sc,course where student.sno=sc.sno and sco=courseo;
(22)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论