Fork me on GitHub
posts - 148,  comments - 5,  views - 84856

视图:

  作用:是数据库对象,是一个或多个表的或视图中导出的虚表,视图对应的数据并不是存储在视图中,而是存储在数据库中的数据表中。

    视图的结构和数据是对数据表进行查询的结果。

  优点:

    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 表名(列名);
posted on   TopTime  阅读(177)  评论(0编辑  收藏  举报
编辑推荐:
· 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)
· 程序员常用高效实用工具推荐,办公效率提升利器!
< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示