




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
视图的概念,视图是从一个或多个表(或视图)导出的虚拟表。视图是数据库的用户使用数据库的观点。 视图与表(有时为与视图区别,也称表为基本表Base Table)不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。,使用视图的优点,提供最新的数据。 具有更好的安全性,有利于提高数据库逻辑独立性。 针对性强。,建立视图的四种类型,表中列的子集 表中行的子集 两个或多个表的连接 聚集信息,使用视图的一些限制,列数不能超过1024列。 不能跨数据库引用列。 只能访问视图定义所涉及到的列。 通过视图操纵数据时不能违背建立表时所建立的约束。 视图最多嵌套32层。 定义视图时不能使用ORDER BY语句。,建立视图,用CREATE VIEW语句创建 用企业管理器创建 使用视图向导创建,CREATE VIEW语句,CREATE VIEW ( ,) AS WITH CHECK OPTION/*透过视图进行增删改操作时,不得破坏视图定义中的谓词条件(即子查询中的条件表达式)*/,说明,DBMS执行CREATE VIEW语句时只是把视图的定义存入数据字典,并不执行其中的SELECT语句。 在对视图查询时,按视图的定义从基本表中将数据查出。,组成视图的属性列名,省略全部列:由子查询中SELECT目标列中的诸字段组成。 明确指定视图的所有列名: 某个目标列是集函数或列表达式 目标列为 * 多表连接时选出了几个同名列作为视图的字段 需要在视图中为某个列启用新的更合适的名字,行列子集视图,例 建立信息系学生的视图。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= IS; 从单个基本表导出,只是去掉了基本表的某些行和某些列,保留了码。,WITH CHECK OPTION的视图,例2 建立信息系学生的视图,并要求透过该视图进行的更新操作只涉及信息系学生。 CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= IS WITH CHECK OPTION;,对IS_Student视图的更新操作,修改操作:DBMS自动加上Sdept= IS的条件 删除操作:DBMS自动加上Sdept= IS的条件 插入操作:DBMS自动检查Sdept属性值是否为IS 如果不是,则拒绝该插入操作 如果没有提供Sdept属性值,则自动定义Sdept为IS,建立视图(续),例7 将学生的学号及他的平均成绩定义为一个视图,假设SC表中“成绩”列Grade为数字型 CREAT VIEW S_G(Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno,建立视图(回顾),行列子集视图 WITH CHECK OPTION的视图 基于多个基表的视图 基于视图的视图 带表达式的视图 分组视图 注: 视图是虚表,是导出的表 以 SELECT * 方式创建的视图可扩充性差,应尽可能避免,视图的修改与删除,ALTER VIEW () AS WITH CHECK OPTION DROP VIEW ,视图的查询,从用户角度:查询视图与查询基本表相同 DBMS实现视图查询的方法: 实体化视图(View Materialization) 有效性检查:检查所查询的视图是否存在 执行视图定义,将视图临时实体化,生成临时表 查询视图转换为查询临时表 查询完毕删除被实体化的视图(临时表),视图的查询,视图消解法(View Resolution) 进行有效性检查,检查查询的表、视图等是否存在。如果存在,则从数据字典中取出视图的定义 把视图定义中的子查询与用户的查询结合起来,转换成等价的对基本表的查询 执行修正后的查询,查询视图(续),例 在信息系学生的视图中找出年龄小于20岁的学生。 SELECT Sno,Sage FROM IS_Student WHERE Sage20; IS_Student视图的定义 (视图定义例1): CREATE VIEW IS_Student AS SELECT Sno,Sname,Sage FROM Student WHERE Sdept= IS;,视图的查询(续),视图实体化法 视图消解法 转换后的查询语句为: SELECT Sno,Sage FROM Student WHERE Sdept= IS AND Sage20;,查询视图(续),视图消解法的局限 有些情况下,视图消解法不能生成正确查询。采用视图消解法的DBMS会限制这类查询。,查询视图(续),例3在S_G视图中查询平均成绩在90分以上的学生学号和平均成绩 SELECT * FROM S_G WHERE Gavg=90; S_G视图定义: CREATE VIEW S_G (Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno;,查询转换,错误: SELECT Sno,AVG(Grade) FROM SC WHERE AVG(Grade)=90 GROUP BY Sno; 正确: SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno HAVING AVG(Grade)=90; 注:目前大多RDBMS不能正确转换,但一般行列子集视图的查询均能正确转换,更新视图,用户角度:更新视图与更新基本表相同 DBMS实现视图更新的方法 视图实体化法(View Materialization) 视图消解法(View Resolution) 指定WITH CHECK OPTION子句后 DBMS在更新视图时会进行检查,防止用户通过视图对不属于视图范围内的基本表数据进行更新,更新视图(续),例1 将信息系学生视图IS_Student中学号95002的学生姓名改为“刘辰”。 UPDATE IS_Student SET Sname= 刘辰 WHERE Sno= 95002; 转换后的语句: UPDATE Student SET Sname= 刘辰 WHERE Sno= 95002 AND Sdept= IS;,更新视图(续),例2 向信息系学生视图IS_S中插入一个新的学生记录:95029,赵新,20岁 INSERT INTO IS_Student VALUES(95029,赵新,20); 转换为对基本表的更新: INSERT INTO Student(Sno,Sname,Sage,Sdept) VALUES(95029,赵新,20,IS );,更新视图(续),例3 删除视图CS_S中学号为95029的记录 DELETE FROM IS_Student WHERE Sno= 95029; 转换为对基本表的更新: DELETE FROM Student WHERE Sno= 95029 AND Sdept= IS;,更新视图的限制,一些视图是不可更新的,因为对这些视图的更新不能唯一地有意义地转换成对相应基本表的更新(对两类方法均如此) 例:视图S_G为不可更新视图。 CREATE VIEW S_G (Sno,Gavg) AS SELECT Sno,AVG(Grade) FROM SC GROUP BY Sno;,更新视图(续),对于如下更新语句: UPDATE S_G SET Gavg=90 WHERE Sno= 95001; 无论实体化法还是消解法都无法将其转换成对基本表SC的更新,可更新视图条件,满足以下条件的视图:创建视图的select语句中没有聚合函数,且没有top,group by,union子句及distinct关键字;创建的select语句中不包含从基本表通过计算所得的列;创建视图的select语句的from子句中至少要包含一个基本表。 可更新的分区视图。 通过instead of触发器创建的可更新视图。,建立与删除索引,建立索引是加快查询速度的有效手段 建立索引 DBA或表的属主(即建立表的人)根据需要建立 有些DBMS自动建立以下列上的索引 PRIMARY KEY UNIQUE 维护索引 DBMS自动完成 使用索引 DBMS自动选择是否使用索引以及使用哪些索引,建立索引的作用,快速存取数据 保证数据记录的惟一性 实现表与表之间的参照完整性 在使用order by,group by子句进行数据检索时,利用索引可以减少排序和分组的时间。,索引的分类,聚集索引 将数据行的键值在表内排序并存储对应的数据记录,使得数据表物理顺序与索引顺序一致。 非聚集索引 完全独立于数据行的结构。 两类都是按B树组织索引的,但聚集索引B树的叶结点存放数据页信息,是按索引键的次序存储的,因此对查找记录很有效;而非聚集索引B树的叶结点不存放数据页信息,而存放非聚集索引的键值,并且每个键值项都有指针指向包含该键值的数据行。,建立索引,CREATE UNIQUE CLUSTER INDEX ON (, ); 用指定要建索引的基本表名字 索引可以建立在该表的一列或多列上,各列名之间用逗号分隔 用指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC UNIQUE表明此索引的每一个索引值只对应唯一的数据记录 CLUSTER表示要建立的索引是聚簇索引,例题,例为学生-课程数据库中的Student,Course,SC三个表建立索引。其中Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。 CREATE UNIQUE INDEX Stusno ON Student(Sno); CREATE UNIQUE INDEX Coucno ON Course(Cno); CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC);,建立索引 (续),唯一值索引 对于已含重复值的属性列不能建UNIQUE索引 对某个列建立UNIQUE索引后,插入新记录时DBMS会自动检查新记录在该列上是否取了重复值。这相当于增加了一个UNIQUE约束,建立索引 (续),聚簇索引:建立聚簇索引后,基表中数据也需要按指定的聚簇属性值的升序或降序存放。也即聚簇索引的索引项顺序与表中记录的物理顺序一致 CREATE CLUSTER INDEX Stusname ON Student(Sname); 在Student表的S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025餐馆租赁合同标准范本
- 码头安全配置方案范本
- 钢筋砼消能池施工方案
- 2025年名画赏析考试试题及答案
- 湖南精轧螺纹钢施工方案
- 常州无菌实验室施工方案
- 厂房钢结构钢筋施工方案
- 2025年高州市属事业单位考试试卷
- 江西金融整改方案范本
- 2025车辆竞价买卖合同
- 街道管理考试题库及答案
- 2025年执业药师之《药事管理与法规》题库附参考答案详解(培优)
- 2025年企业管理人员能力考试试题及答案
- 统编语文(2024)二年级上册识字5《去外婆家》课件
- 2025年6月浙江省高考化学试卷真题(含答案及解析)
- 物权编善意取得制度解读
- 2025年广西公需科目答案02
- 《小米智能家居》课件
- 2024-2025学年九年级化学上册 第二单元 单元测试卷(人教版)
- 深基坑边坡稳定性计算书
- 医疗美容主诊医师专业备案申请表
评论
0/150
提交评论