数据库实验课堂作业
1.4视图
1.内容:
(1):定义常见的视图形式,包括:
*行列子集视图。
*WITH CHECK OPTON 的视图。
*基于多个基表的视图。
*基于多个视图的视图。
*带表达式的视图。
*分组视图。
(2):通过实验考察 WITH CHECK OPTION 这一语句在视图定义后产生的影响,包括对修改操作,删除操作,插入操作影响。
(3):讨论视图的数据更新情况,对子列视图进行数据更新。
(4):使用DROP语句删除一个视图,由该视图导出的其他视图定义仍然在数据字典中,但已不能使用,必须显示删除。同样的原因,
删除基表时,由该基表导出的所有视图定义都必须显示删除。
二、代码
use school
CREATE VIEW CS
AS SELECT NO,SID,CID,SCORE
FROM CHOICES
WHERE SCORE>=60
--(1)定义一个行列子集视图,给出选课成绩合格的学生的编号,所选课程号和成绩
CREATE VIEW SCT
(SNAME,CNAME,TNAME)
AS SELECT STUDENTS.SNAME,COURSES.CNAME,TEACHERS.TNAME
FROM CHOICES,STUDENTS,COURSES,TEACHERS
WHERE CHOICES.TID=TEACHERS.TID AND CHOICES.CID=COURSES.CID AND CHOICES.SID=STUDENTS.SID
--(2)定义学生姓名和其所选修的课程名及讲授该课程的教师姓名的视图
CREATE VIEW SCC
(SNAME,CNAME,SCORE)
AS SELECT STUDENTS.SNAME,COURSES.CNAME,CHOICES.SCORE+5
FROM CHOICES,STUDENTS,COURSES
WHERE CHOICES.CID=COURSES.CID AND CHOICES.SID=STUDENTS.SID
--(3)定义有学生姓名所选课程名和所有课程成绩都多5分的视图
CREATE VIEW S_G(SID,SAVG)
AS
SELECT SID,AVG(SCORE)
FROM CHOICES
GROUP BY SID
--(4)将学生的学号及其平均成绩定义为一个视图,将选课记录按学生分组
CREATE VIEW S_C_S(SID,CCOUNT,SAVG)
AS
SELECT SID,COUNT(CS.CID),AVG(SCORE)
FROM CS
GROUP BY CS.SID
--(5)定义一个包括学生编号,学生所选课程数目和平均成绩的视图
SELECT SNAME
FROM SCT
WHERE CNAME=’software engineering’
--(6)检查所有选修课程Software Engineering的学生姓名
INSERT
INTO CS
VALUES (’600000000’,’823069829’,’10010’,59)
CREATE VIEW CS
(NO,SID,CID,SCORE)
AS SELECT CHOICES.NO, CHOICES.SID,CHOICES.CID,CHOICES.SCORE
FROM CHOICES
WHERE CHOICES.SCORE>=60
WITH CHECK OPTION
--(7)插入元祖(600000000,823069829,10010,59)到视图CS中
UPDATE CS
SET SCORE=SCORE-5
WHERE CID=’10010’
UPDATE CS
SET SCORE=SCORE+5
WHERE CID=’10010’ AND SCORE<95
--(8)将视图CS中,所有课程编号为10010的课程的成绩都减去5分
DELETE CS
WHERE SID=’804529880’
--(9)在视图CS删除编号804529880学生的记录
DROP VIEW SCT
DROP VIEW CS
--(10)取消视图SCT和视图CS