Skip to main content

练习:视图

全真模拟二第78-82题

四、根据已知的环境与题意,写出相应的操作命令,要求每小题用一条命令完成(本大题共5小题,每小题4分,共20分)

设有如下3个关系模式:

学生关系:Student(Sno, Sname, Ssex, Sbirthdate, Smajor),其中Sno、Sname、Ssex、Sbirthdate、Smajor分别表示学生的学号、姓名、性别、出生日期和所学专业。

课程关系:Course(Cno,Cname,Ccredit,Cpno),其中Cno、Cname、Ccredit、Cpno分别表示课程的课程号、课程名称、学分和选修课程号。

选课关系:SC(Sno,Cno,Grade,Semester,Teachingclass),其中Sno、Cno、Grade、Semester、Teachingclass分别表示选课学生的学号、所选课程号、成绩、选课学期、所在教学班。

78.利用SQL语言创建COURSE关系,其中CNO是长度为5的定长字符串且是主键,CNAME为最大长度为40的可变长字符串且不能为空,CCREDIT是短整型,CPNO的取值参考COURSE关系中的CNO。

79.利用SQL语言查询与“TOM”同一院系学生的基本信息。

80.利用SQL语言将成绩小于60分的选课成绩修改为60。

81.利用SQL语言将学生表的查询权限授予用户U1。

82.利用SQL语言创建一个能够方便查询计算机科学与技术专业学生信息的视图V_CST,要求通过视图进行的修改,必须也能通过该视图看到修改后的结果。

答案

-- 第78题
CREATE TABLE course(
Cno CHAR(5),
Cname VARCHAR(40) NOT NULL,
Ccredit SMALLINT,
Cno CHAR(5),
PRIMARY KEY(Cno),
CONSTRAINT fk_course_course FOREIGN KEY (Cpno) REFERENCES course(Cno)
);

-- 第79题
SELECT * FROM Student WHERE Smajor = (SELECT Smjor FROM Student WHERE Sname = 'Tom');

-- 第80题
UPDATE SC SET GRADE = 60 WHERE GRADE < 60;

-- 第81题

-- 第82题