开发者社区> 游客r426lz522voxi> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Oracle数据库常用十一大操作指令(四)

简介: DBA们每天会用到大大小小很多指令,本文对这些指令做了归纳总结,希望可以帮助大家查阅翻看。
+关注继续查看

八、视图


视图是一个虚表,不占用物理空间,因为视图本身的定义语句存储在数据字典里,视图中的数据是一个或多个实际表中获得的。那些用于产生视图的表叫做该视图的基表。一个视图也可以从另一个视图中产生。


1. 视图的优点:

1)      提供了另外一种级别的表安全性

2)      隐藏的数据的复杂性:一个视图可能是用多表连接定义的,但用户不需要知道多表连接的语句也可以查询数据。

3)      简化的用户的SQL命令:查询视图的时候不需要写出复杂的查询语句,只需要查询视图名称即可。

4)      隔离基表结构的改变:视图创建好了之后,如果修改了表的结构,也不会影响视图的。

5)通过重命名列,从另一个角度提供数据:例如在销售系统中,每日下班前要对当日数据进行汇总,在销售人员眼中,该汇总表成为日销售统计表,在财务人眼中,该销售表成为销售日报表


2. 创建视图

80.jpg

参数解释:

 

OR REPLACE:如果视图已存在,此选项将重新创建该视图。

FORCE:如果使用此关键字,则无论基表是否存在,都将创建视图。

NOFORCE:这是默认值,如果使用此关键字,则仅当基表存在时才创建视图。

VIEW_NAME:要创建视图的名称

Alias:指定由视图的查询所选择的表达式或列的别名。别名的数目必须与视图所选择的表达式的数目相匹配。

Select_statement:select语句

WITH CHECK OPTION :此选项指定只能插入或更新视图可以访问的行。术语constraint表示为CHECK OPTION约束指定的名称。

WITH READ ONLY:此选项保证不能在此视图上执行任何修改操作。


3. DML语句和复杂视图

DML语句是指用于修改数据的insert、delete和update语句。因为视图是一个虚拟的表,所以这些语句也可以与视图一同使用。一般情况下不通过视图修改数据,而是直接修改基表,因为这样条例更清晰。


在视图上使用DML语句有如下限制(相对于表)。

1)DML语句只能修改视图中的一个基表。

2)如果过记录的修改违反了基表的约束条件,则将无法更新视图。

3)如果创建的视图包含连接运算符,DISTINCT运算符、集合运算符、聚合函数和groupby子句,则将无法更新视图。

4)如果创建的视图包含伪列表达式,则将无法更新视图。

简单视图基于单个基表,不包括函数和分组函数,那么可以在此视图中进行insert、update、delete操作,这些操作实际上在基表中插入、更新和删除行。


复杂视图从多个表提取数据,包括函数分组函数。复杂视图不一定能进行DML操作。


4. 查询视图

select    view_name   from    user_views;


5. 删除视图

drop  view   view_name;


6. 物化视图

含义:就是具有物理存储的特殊视图,占据物理空间,就像表一样

是远程数据的本地副本,或者用来生成基于数据表求和的汇总表


81.jpg

物化视图中两个重要概念:查询重写和物化视图同步

(1)查询重写:对sql语句进行重写,当用户使用sql语句对基表进行查询时,如果已经建立了基于这些表的物化视图,oracle将自动计算和使用物化视图来完成查询,在某些情况下可以节约查询时间,减少系统i/o。Oracle将这种查询优化技术成为查询重写。参数QUERY_REWRITE_ENABLED决定是否使用重写查询,该参数为布尔型。在创建物化视图需要用ENABLE_QUERY REWRITE来启动查询重写功能。通过SHOW指令可以查看该参数的值。

 

(2)物化视图的同步:

物化视图是基于表创建的,所以当基表变化时,需要同步数据以更新物化视图中的数据,这样保持物化视图中的数据和基表的数据一致性。Oracle提供了两种物化视图的刷新方式,决定何时进行刷新,即ON COMMIT方式和ON DEMAND方式。


ON COMMIT方式:指物化视图在对基表的DML操作事务提交的同时进行刷新。


ON DEMAND方式:指物化视图在用户需要的时候进行更新,可以手工通过DBMS_MVIEW.REFRESH等方式来进行刷新,也可以通过JOB定时进行刷新。


选择刷新方式之后,还需要选择一种刷新类型,刷新类型指定刷新时基表与物化视图如何实现数据的同步,oracle提供了以下4种刷新类型。


COMPLETE:对整个物化视图进行完全的刷新。

FAST:采用增量刷新,只刷新自上次刷新后进行的修改。

FORCE:oracle在刷新时会去判断是否可以进行快速刷新,如果可以则采用FAST方式,否则采用COMPLETE方式。

NEVER:物化视图不进行任何刷新。

默认值是FORCE刷新类型。


创建物化视图

(1)授予权限,具备创建物化视图的权限、QUERY  REWRITE的权限,以及对创建物化视图所涉及的表的访问权限和创建表的权限。

通过SCOTT用户来演示


82.jpg

(2)创建物化视图日志


83.jpg

(3)创建物化视图语句

84.jpg

其中:

bulid immediate:该参数的含义是立即创建物化视图,也可以选择build  deffered,该参数说明在物化视图定以后不会立即执行,而是延迟执行,在使用该视图时再创建。

Reffesh fast:刷新数据的类型选择FAST类型。

ON COMMIT:在基表有更新时提交后立即更新物化视图。

ENABLE QUERY REWRITE:启动查询重写功能。在创建物化视图时明确说明启用查询重写功能。

As:定义后面的查询语句。

查询体:物化视图的查询内容,该sql语句的查询结果集输出到物化视图中,保存在由oracle自动创建的表中。


(4)删除物化视图

drop  materialized  view  view_name;


九、序列


序列是用来生成唯一、连续的整数数据库对象。序列通常用来自动生成主键或唯一键的值。序列可以按升序排列,也可以按降序排列。


1. 创建序列

85.jpg

参数解释:

  • START WITH:指定要生成的第一个序列号,对于升序序列,其默认值为序列的最小值,对于降序序列,其默认值为序列的最大值。
  • INCREMENT BY:用于指定序列号之间的间隔,默认值为1,如果n为正值,则生成的序列将按升序排序,如果n为负值,则生成的序列按降序排列。
  • MAXVALUE:指定序列可以生成的最大值
  • NOMAXVALUE:如果指定了NOMAXVALUE,oracle将升序序列的最大值设为1027,将降序序列的最大值设为-1。
  • MINVALUE:指定序列最小值。MINVALUE必须小于或等于START WITH的值,并且必须小于MAXVALUE。
  • NOMINVALUE:如果指定了NOMINVALUE,oracle将升序序列的最小值设为1,或将降序列的值设置为-1026。
  • CYCLE:指定序列在达到最大值或最小值后,将继续从头开始生成值。
  • NOCYCLE:指定序列在达到最大值或最小值后,将不在继续生成值。
  • CHCHE:使用CACHE选项可以预先分配一组序列号,并将其保留在内存中,这样可以更快地访问序列号,当用完缓存中的所有序列号时,oracle将生成另一组数值,并将其保留在缓存中。
  • NOCACHE:使用NOCACHE选项,则不会为加快访问速度而预先分配序列号。如果在创建序列时忽略了CACHE和NOCACHE选项,oracle将默认缓存20个序列号。


2. 访问序列

创建了序列之后,可以通过NEXTVAL和CURRVAL伪列来访问该序列的值。可以从伪列中选择值。但是不能操纵他们的值。


NETXVAL:创建序列后第一次使用NEXTVAL时,将返回该序列的初始值。以后再引用NETXVAL时,将使用INCREMENT BY子句的值来增加序列值,并返回这个新值。

CURRVAL:返回序列的当前值,即最后一次引用NEXTVAL时返回的值


举例:

创建序列

86.jpg


创建表

87.jpg

插入数据

88.jpg



查看数据

89.jpg


查看序列的当前值

90.jpg

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Oracle数据库常用十一大操作指令(二)
DBA们每天会用到大大小小很多指令,本文对这些指令做了归纳总结,希望可以帮助大家查阅翻看。
67 0
Oracle数据库常用十一大操作指令(六)
DBA们每天会用到大大小小很多指令,本文对这些指令做了归纳总结,希望可以帮助大家查阅翻看。
29 0
Oracle数据库常用十一大操作指令(五)
DBA们每天会用到大大小小很多指令,本文对这些指令做了归纳总结,希望可以帮助大家查阅翻看。
51 0
Oracle数据库常用十一大操作指令(三)
DBA们每天会用到大大小小很多指令,本文对这些指令做了归纳总结,希望可以帮助大家查阅翻看。
38 0
Oracle数据库常用十一大操作指令(一)
DBA们每天会用到大大小小很多指令,本文对这些指令做了归纳总结,希望可以帮助大家查阅翻看。
94 0
oracle数据库带或不带数据导入导出操作大全
oracle数据库带或不带数据导入导出操作大全
106 0
Oracle数据库的增删改操作介绍
前面的博文介绍了Oracle的简单查询操作,博客地址:http://blog.csdn.net/weixin_36380516/article/details/65935879 这里再对Oracle的更新操作即Oracle的增删改操作进行简单的介绍 首先要掌握对表结构的基本操作。 增加字段: alter table 表名 add(字段名 字段类型和长度) alter table
987 0
ADO.Net对Oracle数据库的操作【转载】
一 ADO.Net简介 访问数据库的技术有许多,常见的有一下几种:开放数据库互联(ODBC)、数据访问对象(DAO)、远程数据对象 (RDO)、 ActiveX数据对象(ADO)。我们今天主要要学习ADO.NET中OracleClient命名空间中的几个常用对象,用这作为对ADO.NET认 识学习的开始。
1106 0
569
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载