陈强
Oracle的第三天;
今天的重点内容主要是视图和索引部分,当然还学了序列和同义词;
首先是视图部分,视图就是一种数据库的对象,是对sql语句进行一个封装,成为一张虚拟的表,该视图中是没有存放数据的,存放的是一个sql语句.
那么视图的优点都有什么呢?
---简化数据的操作,主要是查询的时候
---着重于特定数据
---提供一种安全机制( 定制访问权限 )
---提供向后兼容性
接下来就是创建一个视图了:
---create 参数1,参数2 视图名as sql语句 参数3,参数4
---参数1=or replace :如果要创建的视图存在则自动重新创建视图
---参数2=force :不论基表是否存在都会创建视图
---参数3=with check option :插入或者修改必须满足视图定义的约束
---参数4=with read only :只读视图,不能进行增删改
那么,sql语句中含有聚合函数,多表关联或者子查询的话,创建出来的就是属于复杂视图了.
当在复杂视图中要对数据进行修改的时候,就涉及到一个键保留表的知识,其实简答的理解就是新的视图中的主键字段来自于哪个表,那么那个表就是键保留表了,oracle中只能对键保留表的数据进行修改,不能对非键保留表的数据进行修改,当然了,该复杂视图中,如果没有存在主键的话,就更不用去谈数据的修改了,根本不可能滴!!!!
所以.有一个关于视图操作的规范:
---多用于多表数据的封装,单表数据不允许封装成视图
---视图创建的时候,只允许创建只读视图,因为我们不会对视图的数据进行修改
---是不允许通过视图去修改数据的
当然,对sql语句封装成视图之后,该视图是虚拟的表,每次在进行对数据库的操作的时候,都是还要执行一次sql语句,这样就导致了查询性能的降低,所以引出了物化视图的知识!
物化视图也可以叫实体化视图,就是真实存在有数据的一个表;所以对物化视图进行查询的时候,就相当于查询一个表,相比虚拟的视图就提高了查询性能,但是,物化视图是需要占用存储空间的,就是牺牲空间换取时间的意思.
---物化视图的关键字就是meterialized ,其余的操作更普通的视图是一样的,有三个参数
---数据生成的时间 =build ( 创建时生成=immediate | 需要时在生成=deferred )
---刷新机制=refresh ( 增量刷新=fast | 完全的刷新=complete | force=强制刷新 )
---刷新模式=on ( 手动刷新=demand | 自动刷新=commit )
第二部分重点就是索引了.是为了加快数据的存取的一个对象,当然了,它也是牺牲空间换取时间的,需要占用存储空间的.
有分为普通索引 \ 唯一索引 \ 组合索引 \ 反向键索引 \ 位图索引等
---普通索引 :就是想姓名这种,会有重复值存在的字段
---唯一索引 :就是表格的主键字段才能设置成唯一索引
---组合索引 :将多个字段组合成为一个新的索引
---反向键索引
---位图索引 :提升数据查询性能的,是针对低基数列而言的
===高基数列 :数据多种类也多,如从1到1亿的数字
===低基数列 :数据多,但种类少,如1到1亿条性别数据
位图索引就相当于一个图片的意思,每条数据就相当于是该图片上的每一个像素
然后还序列和同义词的知识.
序列就是为了处理oracle中主键不能自增的问题
---关键字是sequence ( nextval | currval )
同义词就是一个表的别名的意思,主要是为了保护数据的安全性的使用
---关键字是synonym ,同义词的对象可以是表,视图,序列
就这么多吧,第一次总结写这么多~~~~~~~~~~~
|