学习与管饭的我的笔记.ppt

上传人:sccc 文档编号:5827128 上传时间:2023-08-24 格式:PPT 页数:37 大小:225.01KB
返回 下载 相关 举报
学习与管饭的我的笔记.ppt_第1页
第1页 / 共37页
学习与管饭的我的笔记.ppt_第2页
第2页 / 共37页
学习与管饭的我的笔记.ppt_第3页
第3页 / 共37页
学习与管饭的我的笔记.ppt_第4页
第4页 / 共37页
学习与管饭的我的笔记.ppt_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《学习与管饭的我的笔记.ppt》由会员分享,可在线阅读,更多相关《学习与管饭的我的笔记.ppt(37页珍藏版)》请在三一办公上搜索。

1、视图的概念,视图是从一个或多个表(或视图)导出的虚拟表。视图是数据库的用户使用数据库的观点。视图与表(有时为与视图区别,也称表为基本表Base Table)不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。,使用视图的优点,提供最新的数据。具有更好的安全性,有利于提高数据库逻辑独立性。针对性强。,建立视图的四种类型,表中列的子集表中行的子集两个或多个表的连接聚集信息,使用视图的一些限制,列数不能超过1024列。不能跨数据库引用列。只能访问视图定义所涉及到的列。通过视图操纵数据时不能违背建立表时

2、所建立的约束。视图最多嵌套32层。定义视图时不能使用ORDER BY语句。,建立视图,用CREATE VIEW语句创建用企业管理器创建使用视图向导创建,CREATE VIEW语句,CREATE VIEW(,)AS WITH CHECK OPTION/*透过视图进行增删改操作时,不得破坏视图定义中的谓词条件(即子查询中的条件表达式)*/,说明,DBMS执行CREATE VIEW语句时只是把视图的定义存入数据字典,并不执行其中的SELECT语句。在对视图查询时,按视图的定义从基本表中将数据查出。,组成视图的属性列名,省略全部列:由子查询中SELECT目标列中的诸字段组成。明确指定视图的所有列名:某

3、个目标列是集函数或列表达式目标列为*多表连接时选出了几个同名列作为视图的字段需要在视图中为某个列启用新的更合适的名字,行列子集视图,例 建立信息系学生的视图。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 S

4、tudent 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,建

5、立视图(回顾),行列子集视图WITH CHECK OPTION的视图基于多个基表的视图基于视图的视图带表达式的视图分组视图注:视图是虚表,是导出的表 以 SELECT*方式创建的视图可扩充性差,应尽可能避免,视图的修改与删除,ALTER VIEW()AS WITH CHECK OPTIONDROP VIEW,视图的查询,从用户角度:查询视图与查询基本表相同DBMS实现视图查询的方法:实体化视图(View Materialization)有效性检查:检查所查询的视图是否存在执行视图定义,将视图临时实体化,生成临时表查询视图转换为查询临时表查询完毕删除被实体化的视图(临时表),视图的查询,视图消解

6、法(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;,视图的查询(续),视图实体化法视图消

7、解法转换后的查询语句为:SELECT Sno,Sage FROM StudentWHERE Sdept=IS AND Sage20;,查询视图(续),视图消解法的局限有些情况下,视图消解法不能生成正确查询。采用视图消解法的DBMS会限制这类查询。,查询视图(续),例3在S_G视图中查询平均成绩在90分以上的学生学号和平均成绩SELECT*FROM S_GWHERE Gavg=90;S_G视图定义:CREATE VIEW S_G(Sno,Gavg)AS SELECT Sno,AVG(Grade)FROM SCGROUP BY Sno;,查询转换,错误:SELECT Sno,AVG(Grade)F

8、ROM SCWHERE AVG(Grade)=90GROUP BY Sno;正确:SELECT Sno,AVG(Grade)FROM SCGROUP BY SnoHAVING AVG(Grade)=90;注:目前大多RDBMS不能正确转换,但一般行列子集视图的查询均能正确转换,更新视图,用户角度:更新视图与更新基本表相同DBMS实现视图更新的方法视图实体化法(View Materialization)视图消解法(View Resolution)指定WITH CHECK OPTION子句后 DBMS在更新视图时会进行检查,防止用户通过视图对不属于视图范围内的基本表数据进行更新,更新视图(续),例

9、1 将信息系学生视图IS_Student中学号95002的学生姓名改为“刘辰”。UPDATE IS_StudentSET Sname=刘辰WHERE Sno=95002;转换后的语句:UPDATE StudentSET Sname=刘辰WHERE Sno=95002 AND Sdept=IS;,更新视图(续),例2 向信息系学生视图IS_S中插入一个新的学生记录:95029,赵新,20岁INSERTINTO IS_StudentVALUES(95029,赵新,20);转换为对基本表的更新:INSERTINTO Student(Sno,Sname,Sage,Sdept)VALUES(95029,

10、赵新,20,IS);,更新视图(续),例3 删除视图CS_S中学号为95029的记录DELETEFROM IS_StudentWHERE Sno=95029;转换为对基本表的更新:DELETEFROM StudentWHERE Sno=95029 AND Sdept=IS;,更新视图的限制,一些视图是不可更新的,因为对这些视图的更新不能唯一地有意义地转换成对相应基本表的更新(对两类方法均如此)例:视图S_G为不可更新视图。CREATE VIEW S_G(Sno,Gavg)AS SELECT Sno,AVG(Grade)FROM SCGROUP BY Sno;,更新视图(续),对于如下更新语句:

11、UPDATE S_GSET Gavg=90WHERE Sno=95001;无论实体化法还是消解法都无法将其转换成对基本表SC的更新,可更新视图条件,满足以下条件的视图:创建视图的select语句中没有聚合函数,且没有top,group by,union子句及distinct关键字;创建的select语句中不包含从基本表通过计算所得的列;创建视图的select语句的from子句中至少要包含一个基本表。可更新的分区视图。通过instead of触发器创建的可更新视图。,建立与删除索引,建立索引是加快查询速度的有效手段建立索引DBA或表的属主(即建立表的人)根据需要建立有些DBMS自动建立以下列上的

12、索引 PRIMARY KEY UNIQUE维护索引 DBMS自动完成使用索引 DBMS自动选择是否使用索引以及使用哪些索引,建立索引的作用,快速存取数据保证数据记录的惟一性实现表与表之间的参照完整性在使用order by,group by子句进行数据检索时,利用索引可以减少排序和分组的时间。,索引的分类,聚集索引将数据行的键值在表内排序并存储对应的数据记录,使得数据表物理顺序与索引顺序一致。非聚集索引完全独立于数据行的结构。两类都是按B树组织索引的,但聚集索引B树的叶结点存放数据页信息,是按索引键的次序存储的,因此对查找记录很有效;而非聚集索引B树的叶结点不存放数据页信息,而存放非聚集索引的键

13、值,并且每个键值项都有指针指向包含该键值的数据行。,建立索引,CREATE UNIQUE CLUSTER INDEX ON(,);用指定要建索引的基本表名字索引可以建立在该表的一列或多列上,各列名之间用逗号分隔用指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASCUNIQUE表明此索引的每一个索引值只对应唯一的数据记录CLUSTER表示要建立的索引是聚簇索引,例题,例为学生-课程数据库中的Student,Course,SC三个表建立索引。其中Student表按学号升序建唯一索引,Course表按课程号升序建唯一索引,SC表按学号升序和课程号降序建唯一索引。CREATE UNIQU

14、E 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表的Sname(姓名)列上建立一个聚簇索引,而且Student表中的记录将按照Sname值的升序存放,建立索引(续),在一个基本表上最多只能建立一个聚簇索引聚簇索引的用途:对于某些类型的查询,可以提高查询效率聚簇索引的适用范围 很少对基表进行增删操作 很少对其中的变长列进行修改操作,删除索引,DROP INDEX;删除索引时,系统会从数据字典中删去有关该索引的描述。例删除Student表的Stusname索引。DROP INDEX Stusname;,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号