视图:
作用:是数据库对象,是一个或多个表的或视图中导出的虚表,视图对应的数据并不是存储在视图中,而是存储在数据库中的数据表中。
视图的结构和数据是对数据表进行查询的结果。
优点:
1.简化数据操作。
2.着重于特定数据
3.视图提供了一个简单的安全机制,可以定制没个用户的访问权限。
4.提供向后兼容性。(我们访问的视图名不变,视图里面的表名改变、我们只需要用以前的视图名去重新创建视图,这样就会把之前的覆盖掉,这样客户端就不需要改变)
视图的创建:
1 2 3 4 | CREATE [ OR REPLACE ] [ FORCE ] VIEW view_name AS subquery [ WITH CHECK OPTION ] [ WITH READ ONLY ] or replace :若所创建的视图已经存在,oracke自动重建该视图。 force :不管基表是否存在oracle都会自动创建该视图。subquery :一条完整的 select 语句,可以在该语句满足视图定义的约束。 with check option :插入或修改的数据行必须满足视图定义的约束。 with read only :该视图上不能进行任何dml操作(对数据操作) |
创建普通视图
1 2 3 4 5 | create view view_table1 as select * from ( select rownum r,t.* from t_area t) c where c.r>3 |
创建带条件的视图
or replace 表示替换以前的视图同名的
1 2 3 4 5 | create or replace view view_table1 as select * from ( select rownum r,t.* from t_area t) c where c.r>3 |
force 表示sql 语句不是正确的也可以添加视图
存在的意义:如果后期添加了t_are表这个视图就可以使用了
1 2 3 4 5 | create or replace force view view_table1 as select * from ( select rownum r,t.* from t_are t) c where c.r>3 |
with check option 插入或修改的数据必须满足视图定义的约束。
1 2 3 4 | create or replace view view_table1 as select rownum as rn,id, name from t_area where rownum <= 5 and id != 5 WITH CHECK OPTION |
1 | update view_table1 set id = 5 |
二: 物化视图
定义:视图是一个虚拟表(也可以认为条语 句),基于它创建时指定的查询视图是一个虚拟表(也可以认为条语 句)。
区别:和普通视图的区别。
普通视图:存储的是sql 语句
物化视图:存储的是sql执行的结果(表结构)
创建物化视图:
1 2 3 4 5 | CREATE MATERIALIZED VIEW view_name [BUILD IMMEDIATE(默认值) | BUILD DEFERRED ] //物化数据什么时候生成 REFRESH [FAST|COMPLETE| FORCE [默认值]] [ ON [ COMMIT |DEMAND] ] AS subquery |
物化数据的产生:
1 | [BUILD IMMEDIATE(默认值) | BUILD DEFERRED ] //物化数据什么时候生成BUILD IMMEDIATE(默认值)在物化数据时产生数据<br>build deferred 在创建时不生成,在以后使用时生成。<br>//使用这个生成物化数据<br> begin <br> DBMS_MVIEW.refresh( view_name , 'C' ); //c表示command<br> end |
刷新方式:1.增量(fast增量刷新);2.完整刷新;3.自动
1 2 3 | 【fast】增量刷新 【complete】完整的物化视图 【 force 】自动(系统自己判断什么时候进行刷新)默认 |
手动刷新数据
1 2 | CREATE materialized VIEW name AS <br>subquery<br><br> |
insert(插入数据)
select * from name(查询数据)
begin
DBMS_MVIEW.refresh( name ,'C' );//手动刷新数据
end ;
自动刷新数据
1 2 3 | CREATE materialized VIEW name <br>refresh<br> on commit AS subquery<br> insert (插入数据)<br> select * from name (查询数据) |
增量刷新 只刷新自上次刷新到现在修改的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | create materialized view log on 表名 with rowid --创建物化视图中的语句中,必须有基表的ROWID create materialized view view_name refresh fast --设置增量刷新<br>--刷新时机为手动刷新(默认) as sqlquery --查询物化视图 select * from view_name --插入数据 insert into commit ; --提交数据 删除数据 commit ; --手动刷新 begin DBMS_MVIEW.refresh(物化数据名, 'C' ); end ; |
查看日志表
old_new $$ :
N:表示新值;
O:表示旧值;
change_vector$$:表示修改矢量,用来被的是哪个或几字段。 .此列是raw,其实oracle采用的方式就是用每个bit位
去映射一个列。插入操作显示为:EF,删除显示为:OO更新操作则根据更新字段的位置而显示不同值。
当我们手动刷新物化视图后,物化视图日志哦被清空,物化视图更新。
//手动刷新物化视图就会
1 | begin DBMS_MVIEW.refresh( 物化视图名, 'C' ); end ; |
刷新时机:
【on commit】提交时候进行刷新
【on demand】手动进行刷新
序列
序列:是oracle提供的产生一系列唯一序列的数字的数据库对象。
创建序列
1 | create sequence 序列名称 |
使用伪表查看序列
1 | select 序列名称.nextval from dual |
创建复杂序列
1 2 3 4 5 6 7 | create sequence vv6 --保存在sequences文件家中 increment by 10 --step执行一次所要加的数 start with 0 --开始数 必须等于或大于最小值 maxvalue 300 --数最大值 minvalue 0 --最小数 cycle --设置为循环 cache 30 --设置时必须小于一次循环的次数 |
索引:
索引是关系数据库中用于存放每一条记录的一种对象,主要目的是加快数据的读取速度和完整性检查。
建立索引是一项技术性要求高的工作。一般在数据库设计阶段的与数据库结构一道考虑。应用系统的性能直接与索引的合理直接有关。
创建普通视图:
1 | <em id= "__mceDel" > </em> create index 索引名 on 表名(列名); |
创建唯一索引:
1 | create unique index 索引名称 on 表名(列名); |
创建复合索引:
1 | create index 索引名称 on 表名(列名,列名.....); |
创建反向索引:
1 | create index 索引名称 on 表名(列名) reverse; |
创建位图索引:
1 | create bitmap index 索引名称 on 表名(列名); |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
· 程序员常用高效实用工具推荐,办公效率提升利器!