实验05 视图的创建和使用题目和答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验五视图的创建和使用
【实验目的】
1.利用企业管理器建立视图;
2.利用视图进行查询和修改记录;
【实验内容】
①利用查询分析器和样本(实验一)中的三个表:STUDENTS、SC及C表
建立视图V_grobal,视图V_grobal包含的字段为:
s.sno、、o、ame 、grade
创建:
CREATE VIEW V_grobal
AS
SELECT STUDENT.SNO,STUDENT.SNAME,O,AME,GRADE
FROM STUDENT,SC,C
WHERE STUDENT.SNO=SC.SNO AND O=O
②创建一个名为V_student的视图。该视图仅查看student表中”0908032”班
的学生信息。并强制通过视图修改和添加的数据满足where条件。(with check option)
CREATE VIEW V_student
AS
SELECT*
FROM STUDENT
WHERE SNO LIKE'0908032%'
WITH CHECK OPTION
1)通过视图修改该班的某一学生的姓名。能否成功?
UPDATE V_student
SET AGE='100'
WHERE SNO='090803201'
能成功
2)通过视图修改该班的某一学生的学号改为”090803155”,成功与否?
得到什么结论?
UPDATE v_student
SET SNO='090803155'
WHERE SNO='090803201'
显示不成功:
结论:通过使用WITH CHECK OPTION 子句,用户可以强制要求针对视图中数据所发生的所有修改,都必须符合视图SELECT语句中WHERE 子句所定义的查询条件,题2学号修改为‘090803155’,不满足WHERE 条件‘sno like '0908032%'’,所以修改不成功。
③创建一个名为V_Sgrade的视图,该视图能显示各学生的学号,姓名,平
均成绩
CREATE VIEW V_Sgrade
AS
SELECT SC.SNO,SNAME,A VG(GRADE) A VGG
FROM STUDENT,SC
WHERE STUDENT.SNO=SC.SNO
GROUP BY SC.SNO,SNAME
问:能不能将某一个学生的平均成绩改成90,为什么?
UPDATE V_Sgrade
SET A VGG='90'
WHERE SNO='090803101'
结果,不能修改
因为:
字段来自聚合函数avg,此视图不允许更新
④建立1班学生的视图,在1班学生的视图中找出年龄小于22岁的学生。CREATE VIEW STUDENT_1
AS
SELECT*
FROM STUDENT
WHERE cls='1'
查询:
SELECT*
FROM STUDENT_1
WHERE AGE<22
⑤建立一反映各学生总成绩的视图S_ZCJ,视图包括学号、姓名、总成绩
三列。
CREATE VIEW S_ZCJ
AS
SELECT SC.SNO,SNAME,SUM(GRADE) SUMG
FROM STUDENT,SC
WHERE STUDENT.SNO=SC.SNO
GROUP BY SC.SNO,SNAME
【实验步骤】(要求自己填写详细的实验步骤)【实验体会及存在问题】(要求自己填写)