试题三(15分)
回答下列问题回答问题1至问题4,将解答填入答题纸对应栏内。
【说明】
某教务管理系统的部分数据库关系模式如下:
学生:STUDENT(Sno, Sname, Ssex. Sage, Sdept),各属性分别表示学号、姓名、性别、年龄、所在系名;
课程:COURSE(Cno,Cname, Cpno , Ceredit)各属性分别表示课程号、课程名、先修课的课程号、学分;
选课:SC(Sno,Cno,Grade),各属性分别表示学号、课程号、成绩。
有关关系模式的说明如下:
(1)下划线标出的属性是表的主键。
(2)课程名取值唯—。
根据以上描述,回答下列问题,将SQL语句的空缺部分补充完整。
【问题1】(3分)
请将下面创建课程表COURSE的SQL语句补充完整,要求定义实体完整性约束、参照完整性约束,以及其他完整性约束。
CREATE TABLE COURSE(
Cno CHAR(4) PRIMARYKEY,
Cname CHAR(30)(a),
Cpno CHAR(4)REFERENCES (b),(c)
Ccredit INT);
【问题2】(4分)
有一门课程号为"C036""的新开课,要求所有学生选修。该课的基本信息已经录入课程表COURSE中,现需在选课表sC中插入该课的选课记录。实现此功能的SQL语句如下,请补全。
(d)INTO sc(Sno,_(e))
SELECT Sno,_(f)
FROM(g);
【问题3】(4分)
查询每一门课程的间接先修课(先修课的先修课),要求输出课程号和间接先修课的课程号。即使某门课程没有先修课,也需要输出,不过其间接先修课为空。此功能由下面的SQL语句实现,请补全。
SELECT K1.Cno, (h)
FROM COURSEK1 (i) OUTER JOIN COURSEK2(j)((k));
【问题4】(4分)
查询选修了课程表中已有全部课程的学生,要求输出学号和姓名。此功能由下面的SQL语句实现,请补全。
SELECT Sno, Sname FROM STUDENT
WHERENOT EXISTS
(SELECT* FROM (l)
WHERE(m)
(SELECT*FROM (n)
WHERE (o));