学习与管饭的我的笔记 (5)

上传人:hy****d 文档编号:243317193 上传时间:2024-09-20 格式:PPT 页数:37 大小:107.50KB
返回 下载 相关 举报
学习与管饭的我的笔记 (5)_第1页
第1页 / 共37页
学习与管饭的我的笔记 (5)_第2页
第2页 / 共37页
学习与管饭的我的笔记 (5)_第3页
第3页 / 共37页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,视图的概念,视图是从,一个,或,多个,表(或视图),导出的虚拟表。视图是数据库的用户使用数据库的观点。,视图与表(有时为与视图区别,也称表为基本表,Base Table,)不同,视图是一个,虚表,,即视图所对应的数据不进行实际存储,数据库中,只存储视图的定义,,对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。,1,使用视图的优点,提供最新的数据。,具有更好的安全性,有利于提高数据库,逻辑独立性,。,针对性强。,2,建立视图的四种类型,表中列的子集,表中行的子集,两个或多个表的连接,聚集信息,3,使用视图的一些限制,列数不能超过,1024,列。,不能跨数据库引用列。,只能访问视图定义所涉及到的列。,通过视图操纵数据时不能违背建立表时所建立的约束。,视图最多嵌套,32,层。,定义视图时不能使用,ORDER BY,语句。,4,建立视图,用,CREATE VIEW,语句创建,用企业管理器创建,使用视图向导创建,5,CREATE VIEW,语句,CREATE VIEW, ( ,,,),AS,WITH CHECK OPTION,/*,透过视图进行增删改操作时,不得破坏视图定义中的谓词条件(即子查询中的条件表达式)*,/,6,说明,DBMS,执行,CREATE VIEW,语句时只是把视图的定义存入数据字典,并不执行其中的,SELECT,语句。,在对视图查询时,按视图的定义从基本表中将数据查出。,7,组成视图的属性列名,省略全部列:由子查询中,SELECT,目标列中的诸字段组成。,明确指定视图的所有列名,:,某个目标列是集函数或列表达式,目标列为 *,多表连接时选出了几个同名列作为视图的字段,需要在视图中为某个列启用新的更合适的名字,8,行列子集视图,例,建立信息系学生的视图。,CREATE VIEW IS_Student,AS,SELECT Sno,,,Sname,,,Sage,FROM Student,WHERE Sdept= IS,;,从单个基本表导出,只是去掉了基本表的某些行和某些列,保留了码。,9,WITH CHECK OPTION,的视图,例,2,建立信息系学生的视图,并要求透过该视图进行的更新操作只涉及信息系学生。,CREATE VIEW IS_Student,AS,SELECT Sno,,,Sname,,,Sage,FROM Student,WHERE Sdept= IS,WITH CHECK OPTION,;,10,对,IS_Student,视图的更新操作,修改操作:,DBMS,自动加上,Sdept= IS,的条件,删除操作:,DBMS,自动加上,Sdept= IS,的条件,插入操作:,DBMS,自动检查,Sdept,属性值是否为,IS,如果不是,则拒绝该插入操作,如果没有提供,Sdept,属性值,则自动定义,Sdept,为,IS,11,建立视图,(,续,),例,7,将学生的学号及他的平均成绩定义为一个视图,假设,SC,表中,“,成绩,”,列,Grade,为数字型,CREAT VIEW S_G(Sno,,,Gavg,),AS,SELECT Sno,,,AVG(Grade),FROM SC,GROUP BY Sno,12,建立视图(回顾),行列子集视图,WITH CHECK OPTION,的视图,基于多个基表的视图,基于视图的视图,带表达式的视图,分组视图,注:,视图是虚表,是导出的表,以,SELECT *,方式创建的视图可扩充性差,应尽可能避免,13,视图的修改与删除,ALTER VIEW (,),AS ,WITH CHECK OPTION,DROP VIEW ,14,视图的查询,从用户角度:查询视图与查询基本表相同,DBMS,实现,视图查询的方法,:,实体化视图(,View Materialization,),有效性检查:检查所查询的视图是否存在,执行视图定义,将视图临时实体化,生成临时表,查询视图转换为查询临时表,查询完毕删除被实体化的视图,(,临时表,),15,视图的查询,视图消解法(,View Resolution,),进行有效性检查,检查查询的表、视图等是否存在。如果存在,则从数据字典中取出视图的定义,把视图定义中的子查询与用户的查询结合起来,转换成等价的对基本表的查询,执行,修正,后的查询,16,查询视图(续),例,在信息系学生的视图中找出年龄小于,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,;,17,视图的查询(续),视图实体化法,视图消解法,转换后的查询语句为:,SELECT Sno,,,Sage,FROM Student,WHERE Sdept= IS AND Sage=90,;,S_G,视图定义:,CREATE VIEW S_G (Sno,,,Gavg),AS,SELECT Sno,,,AVG(Grade),FROM SC,GROUP BY Sno,;,20,查询转换,错误:,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,不能正确转换,但一般行列子集视图的查询均能正确转换,21,更新视图,用户角度:更新视图与更新基本表相同,DBMS,实现视图更新的方法,视图实体化法(,View Materialization,),视图消解法(,View Resolution,),指定,WITH CHECK OPTION,子句后,DBMS,在更新视图时会进行检查,防止用户通过视图对,不属于视图范围内,的基本表数据进行更新,22,更新视图(续),例,1,将信息系学生视图,IS_Student,中学号,95002,的学生姓名改为,“,刘辰,”,。,UPDATE,IS_Student,SET Sname= ,刘辰,WHERE Sno= 95002,;,转换后的语句:,UPDATE,Student,SET Sname= ,刘辰,WHERE Sno= 95002 AND,Sdept= IS,;,23,更新视图(续),例,2,向信息系学生视图,IS_S,中插入一个新的学生记录:,95029,,赵新,,20,岁,INSERT,INTO,IS_Student,VALUES(,95029,,,赵新,,,20),;,转换为对基本表的更新:,INSERT,INTO,Student,(Sno,,,Sname,,,Sage,,,Sdept,),VALUES(95029,,,赵新,,,20,,,IS,),;,24,更新视图(续),例,3,删除视图,CS_S,中学号为,95029,的记录,DELETE,FROM,IS_Student,WHERE Sno= 95029,;,转换为对基本表的更新:,DELETE,FROM,Student,WHERE Sno= 95029 AND,Sdept= IS,;,25,更新视图的限制,一些视图是不可更新的,因为对这些视图的更新不能唯一地有意义地转换成对相应基本表的更新,(,对两类方法均如此,),例:视图,S_G,为不可更新视图。,CREATE VIEW S_G (Sno,,,Gavg),AS,SELECT Sno,,,AVG(Grade),FROM SC,GROUP BY Sno,;,26,更新视图(续),对于如下更新语句:,UPDATE S_G,SET,Gavg=90,WHERE Sno= 95001,;,无论实体化法还是消解法都无法将其转换成对基本表,SC,的更新,27,可更新视图条件,满足以下条件的视图:创建视图的,select,语句中没有聚合函数,且没有,top,,,group by,,,union,子句及,distinct,关键字;创建的,select,语句中不包含从基本表通过计算所得的列;创建视图的,select,语句的,from,子句中至少要包含一个基本表。,可更新的分区视图。,通过,instead of,触发器创建的可更新视图。,28,建立与删除索引,建立索引是,加快查询速度,的有效手段,建立索引,DBA,或表的属主(即建立表的人)根据需要建立,有些,DBMS,自动建立以下列上的索引,PRIMARY KEY,UNIQUE,维护索引,DBMS,自动完成,使用索引,DBMS,自动选择是否使用索引以及使用哪些索引,29,建立索引的作用,快速存取数据,保证数据记录的惟一性,实现表与表之间的参照完整性,在使用,order by,,,group by,子句进行数据检索时,利用索引可以减少排序和分组的时间。,30,索引的分类,聚集索引,将数据行的键值在表内排序并存储对应的数据记录,使得数据表物理顺序与索引顺序一致。,非聚集索引,完全独立于数据行的结构。,两类都是按,B,树,组织索引的,但聚集索引,B,树的叶结点存放数据页信息,是按索引键的次序存储的,因此对查找记录很有效;而非聚集索引,B,树的叶结点不存放数据页信息,而存放非聚集索引的键值,并且每个键值项都有指针指向包含该键值的数据行。,31,建立索引,CREATE,UNIQUE CLUSTER,INDEX ,ON (, ,),;,用,指定要建索引的基本表名字,索引可以建立在该表的,一列,或多列上,各列名之间用逗号分隔,用,指定索引值的排列次序,升序:,ASC,,降序:,DESC,。缺省值:,ASC,UNIQUE,表明此索引的每一个索引值只对应唯一的数据记录,CLUSTER,表示要建立的索引是聚簇索引,32,例题,例,为学生,-,课程数据库中的,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),;,33,建立索引 (续),唯一值索引,对于已含重复值的属性列不能建,UNIQUE,索引,对某个列建立,UNIQUE,索引后,插入新记录时,DBMS,会自动检查新记录在该列上是否取了重复值。这相当于增加了一个,UNIQUE,约束,34,建立索引 (续),聚簇索引:,建立聚簇索引后,基表中数据也需要按指定的聚簇属性值的升序或降序存放。也即聚簇索引的索引项顺序与表中记录的物理顺序一致,CREATE CLUSTER INDEX Stusname ON Student(Sname),;,在,Student,表的,Sname,(姓名)列上建立一个聚簇索引,而且,Student,表中的记录将按照,Sname,值的升序存放,35,建立索引 (续),在一个基本表上最多只能建立一个聚簇索引,聚簇索引的用途:对于某些类型的查询,可以提高查询效率,聚簇索引的适用范围,很少对基表进行增删操作,很少对其中的变长列进行修改操作,36,删除索引,DROP INDEX ,;,删除索引时,系统会从数据字典中删去有关该索引的描述。,例,删除,Student,表的,Stusname,索引。,DROP INDEX Stusname,;,37,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!