**
普通视图
■修改简单视图里面数据时引用的表里面的数据也会同步修改
■check option带有检查约束,带有检查约束的视图不能够修改生成该视图的约束条件
**
■视图默认可读可写,修改为只读需要添加read only
■数据库允许预先生成带有错误的视图(基表现有阶段可能不存在,可以在后续代码动态生成),可以理解为强制生成。
■所谓复杂视图,就是视图的 SQL语句中,有聚合函数或多表关联查询
■键保留表:生成复杂视图(多表关联)的数据时,把作为视图的主键的那个字段来源的基表,该表就属于键保留表。非键保留表字段不允许修改。
■修改复杂视图(多表关联)的数据时,修改的字段是属于该视图下的键保留表的才能允许修改
■视图不同于基表直接查询,所显示的字段最好拥有别名,例如聚合函数,视图不能直接将其作为列名,而基表查询可以。
■含聚合统计函数生成的复杂视图没有键保留表,也不能修改任何字段内容,只能只读。
**
物化视图
**
■无论物化视图还是普通视图,select后面的字段名不能同时为一个标记,必须起别名。尽管它允许查询后可以同时显示分别来自两个不同的表的同样字段名。
■不能直接操作修改物化表,只能通过修改基表数据实现
■物化视图默认手动刷新,当基表发生数据变化时,需要执行PL/SQL语句或者执行命令,才能刷新。(不知为何,向基表插入数据后直接执行命令更新对应的物化视图时,失效了并没有执行刷新)
另一种输入commad命令方式,我试了失败:
■设置自动更新的物化视图必须对基表操作要有commit关键字
DEFERRED :推迟defer的意思
■生成没有数据的物化视图,第一次必须进行手动更新,才能将数据补充入表。之后性质受其他关键字决定。
■创建增量更新(即部分更新)的物化视图时必须具备两个条件:
1.为关联的表各自创建log表
2.创建as语句必须包含以基表创建的依据的字段名
oracle 根据已经修改基表的日志表提取信息刷新物化视图,物化视图刷新后立即清空对应基表日志表
**
序列
**
oracle序列可以决定从哪里、从数字几、一次增长或减少多少、最大增到或最小减到多少、设置缓存、设置循环这些功能,实现一个有规律的增长序列利用到字段自动增长属性中。
注意:
■开始值不能小于最小值,序列到达最大值后再增长就会报错。
■循环序列中第一次循环是从开始值开始循环,而第二次循环是从最小值开始循环。
■一个循环的序列,必须指定最大值、最小值,否则会报错。
■可以用ALTER修改序列参数,但不能修改起始值。
序列超过最大值会报错:
循环序列限制:
假设不指定默认循环序列缓存为20,范围即是当前增长单位*20, 最大值必须取到比范围值大。
**
同义词
**:
同义词,指ORACLE中为其他数据库对象起的别名,亦是一个对象。分私有和公有,除了DBA可以以“用户.同义词对象”使用之外,私有情况下只有该用户下才有权限使用。公有指任何用户都可以使用(无需使用“用户.同义词对象”的方式)
**
索引
复合索引:
虽然根据两个字段生成索引,但是依旧是一棵树。而且建立索引时有要求与常常并合查询的字段顺序保持一致。
唯一索引:
性能比普通索引高,但是会约束字段不能出现重复值。若是创建失败就有可能是该字段含有重复值。主键不能重复就是创建唯一索引的一个表现。
反向键索引:
位图索引:
不能用于范围查询,只适合数值有限个的字段类型,如性别男女。把数值按照种类划分成多个集合,每个集合放置对应行的rowid即地址,查询按照集合查找。在枚举类型的字段中效率比普通索引要高。