视图的操作
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二、删除视图
语句的格式:
DROP VIEW <视图名> [CASCADE];
该语句从数据字典中删除指定的视图定义 如果该视图上还导出了其他视图,使用 CASCADE级联删除语句,把该视图和由它导出 的所有视图一起删除 删除基表时,由该基表导出的所有视图定义都 必须显式地使用DROP VIEW语句删除
一、建立视图
语句格式
CREATE VIEW <视图名> [(<列名> [,<列名>]…)]
AS <子查询视> 图的构成可以基于 [WITH CHE一CK 个OP表TIO,N];取其行和列 组成视图的的属子性列集名;:也全部可省以略由或全多部指定
个表连接而成。
子查询不允许含有ORDER BY子句和DISTINCT短语 RDBMS执行CREATE VIEW语句时只是把视图定义存入数据 字典,并不执行其中的SELECT语句。 在对视图查询时,按视图的定义从基本表中将数据查出。
带WITH CHECK OPTION选项时对IS_Student视图 的更新操作:
修改操作:自动加上Sdept= 'IS'的条件 删除操作:自动加上Sdept= 'IS'的条件 插入操作:自动检查Sdept属性值是否为'IS'
如果不是,则拒绝该插入操作 如果没有提供Sdept属性值,则自动定义 Sdept为'IS'
信息系出的,学并且生只。是去掉了基本表的
CREA这某T类些E 视V行IE图和W称列I之,S_为但S行t保ud列留en子了t 集主视码图,。 AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= 'IS' WITH CHECK OPTION;
建立视图(续)
建立视图(续)
基于视图的视图
[例4] 建立信息系选修了1号课程且成绩在90分以 上的学生的视图。
CREATE VIEW IS_S2 AS SELECT Sno,Sname,Grade FROM IS_S1 WHERE Grade>=90;
建立视图(续)
带表达式的视图
[例5] 定由义于一视图个中反的映数据学并生不出实际生存年储份,的视图。
查询视图(续)
[例10] 查询选修了1号课程的信息系学生
SELECT IS_Student.Sno,Sname FROM IS_Student,SC WHERE IS_Student.Sno =SC.Sno AND SC.Cno= '1’;
Select student.Sno, Sname From student, sc Where student.sno = sc. Sno and sc.cno = ‘1’ and
3.6 视 图
视图的特点
• 虚表,是从一个或几个基本表(或视图)导出 的表
• DB中只存放视图的定义,不存放视图对应的 数据
• 基表中的数据发生变化,从视图中查询出的数 据也随之改变
3.6 视 图
基于视图的操作
❖ 查询 ❖ 删除 ❖ 受限更新 ❖ 定义基于该视图的新视图
定义视图
建立视图 删除视图
所以定义视图时可以根据应用的需
CRE要A,TE设置V一IE些W派B生T属_S性(S列n。o这,些Sn派ame,Sbirth) AS 生属性由于在基本表中并不实际存 SEL在E,CT也S称n它o,们为Sn虚a拟m列e,,2带0虚13拟-S列age FRO的M 视S图tu也d称en为t;带表达式的视图。
UPDATE IS_Student SET Sname= '刘辰' WHERE Sno= ' 200215122 ';
转换后的语句:
UPDATE Student SET Sname= '刘辰' WHERE Sno= ' 200215122 ' AND Sdept= 'IS';
更新视图(续)
[例13] 向信息系学生视图IS_S中插入一个新的学 生记录:200215129,赵新,20岁
建立视图(续)
[例1] 建立信息系学生的视图。
CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= 'IS';
建立视图(续)
[例2]建立信息系学生的视图,并要求进行 修改和插入操作时仍需保证该视图只有
若一个视图是从单个基本表导
删除视图(续)
[例8]删除视图BT_S: DROP VIEW BT_S; 删除视图IS_S1:DROP VIEW IS_S1; ➢ 拒绝执行 ➢ 级联删除: DROP VIEW IS_S1 CASCADE;
查询视图
用户角度:查询视图与查询基本表相同
视图也可像基本表一样通过SELECT查询数 据, 查询时,首先从数据字典中取出指定视图 的定义,然后检查数据源表是否存在,若不存 在则无法执行,否则将SELECT语句指定的查 询与视图的定义相结合,到基本表中查询 数据,然后将结果显示出来。
查询视图(续)
[例9Hale Waihona Puke Baidu 在信息系学生的视图中找出年龄小于20岁的学生。 SELECT Sno,Sage
FROM IS_Student WHERE Sage<20; IS_Student视图的定义 (参见视图定义例1)
视图消解转换后的查询语句为:
SELECT Sno,Sage FROM Student WHERE Sdept= 'IS' AND Sage<20;
建立视图(续)
❖ 基于多个基表的视图
[例3] 建立信息系选修了1号课程的学生视图。
CREATE VIEW IS_S1(Sno,Sname,Grade) AS SELECT Student.Sno,Sname,Grade FROM Student,SC WHERE Sdept= 'IS' AND
Student.Sno=SC.Sno AND SC.Cno= '1';
student.sdept = ‘IS’;
更新视图
插入(INSERT)
删除(DELETE)
修改(UP由DA于T视E)图是不实际存储数据的
虚表,因此对视图的更新还是要转换 为对基本表的更新,即通过对视图
消解。
更新视图(续)
[例12] 将信息系学生视图IS_Student中学号 200215122的学生姓名改为“刘辰”。