ORACLE数据库入门再在屋里坐会 (15)

11g 版本引入的 interval 分区范围分区的一种增强功能,可实现 equi-sized 范围分区的自动化。创建的分区作为元数据,只有最开始的分区是永久分区。随着数据的增加会分配更多的部分,并自动创建新的分区和本地索引

create table test

(

      id number,

      order_date date

) partition by range (order_date)

interval (numtoyminterval(1,'month'))

(

      partition p_first values less than (to_date('2013-06-23','yyyy-mm-dd'))

);

insert into test values(1,to_date('2013-06-22','yyyy-mm-dd'));

insert into test values(1,to_date('2013-06-23','yyyy-mm-dd'));

insert into test values(1,to_date('2013-07-20','yyyy-mm-dd'));

insert into test values(1,to_date('2013-07-24','yyyy-mm-dd'));

select * from test partition (p_first);

......

5、分区原则

1)表的大小:当表的大小超过 1.5GB-2GB,或对于 OLTP 系统,表的记录超过 1000 万,都应考虑对表进行分区。

2)数据访问特性:基于表的大部分查询应用,只访问表中少量的数据。对于这样表进行分区,可充分利用分区排除无关数据查询的特性。

3)数据维护:按时间段删除成批的数据,例如按月删除历史数据。对于这样的表需要考虑进行分区,以满足维护的需要

4)数据备份和恢复: 按时间周期进行表空间的备份时,将分区与表空间建立对应关系。

5)只读数据:如果一个表中大部分数据都是只读数据,通过对表进行分区,可将只读数据存储在只读表空间中,对于数据库的备份是非常有益的。

6)并行数据操作:对于经常执行并行操作(如 Parallel Insert,Parallel Update等)的表应考虑进行分区

7)表的可用性:当对表的部分数据可用性要求很高时,应考虑进行表分区。

 视图 1、概念

1) 视图是一张虚拟的表,此表的结构从一个或多个表(或其它视图)查询的得到的结果一致

2) 视图一经定义,则以对象的方式存储在Oracle数据库中,视图中的数据是来源于查询的基表;对视图的CRUD操作,相应的基表也会发生变化

3) 对视图的更新或者插入限制很多,事实上,除非视图包含的是简单的select语句,否则不能通过它来做更新.推荐的做法还是在基表上做更新或者插入操作,一般情况下,视图只是用来方便查询的

2、优点

1) 集中用户使用的数据

2) 掩盖数据库的复杂性

3) 简化用户权限的管理

4) 重新组织数据

5) 不占物理存储空间,它只是一个逻辑对象(虚拟的表)

3、视图分类

关系视图:

  关系视图(relational view)基本上就是经过存储的查询,可以将它的输出看作是一个表。它就是基于关系数据的存储对象

内嵌视图:

  又称为嵌套查询,是嵌入到父查询中的查询,能够在任何可以使用表名称的地方使用

对象视图:

  为了迎合数据库中对象类型而将关系表投射到特定数据类型的虚拟对象表中,视图的每行都是带有属性、方法和唯一标识(OID)的对象实例。

物化视图:

  就是在数据库中查询结果存储在视图中,并支持查询重写、刷新、提交等特性的视图

4、视图的创建和管理

步骤:

  1)编写select语句

  2)测试select语句

  3)查询结果的正确性

  4)创建视图

注:  1)普通用户并没有创建视图的权限,如果要创建视图,需要使用 dba 角色的用户赋予 create view 的权限,如: grant create view to scott;

  2)查看视图:User_views,All_views,Dba_views

语法:

  create [or replace] [force] view view_name [(alias[, alias]...)]

  as

  select_statement

  [with check option [constraint constraint]]

  [with read only]

其中:

  or replace:若所创建的试图已经存在,oracle自动重建该视图;

  force:不管基表是否存在oracle都会自动创建该视图;

  noforce:只有基表都存在oracle才会创建该视图(默认):

  alias:为视图产生的列定义的别名;

  select_statement:一条完整的select语句,可以在该语句中定义别名;

  with check option : 插入或修改的数据行必须满足视图定义的约束;

  with read only : 该视图上不能进行任何dml操作

a) 关系视图

语法:

  create [or replace] [force] view

  view_name [(alias[, alias]...)]

  as select_statement

  [with check option [constraint constraint]]

  [with read only]

注意:普通用户并没有创建视图的权限,如果要创建视图,需要使用 dba 角色的用户赋予 create view 的权限

5、查看视图

可以通过 User_views,All_views,Dba_views 来查询视图信息

例如: Select * from user_views;--查看当前用户创建的视图

1. 创建普通关系视图[可对视图执行 DML 操作]

2. 创建只读视图

特点:顾名思义,只读,不能执行其他 DML 操作

  create or replace view view_emp as select * from emp where

  sal>=3000 with read only;

3. 创建检查视图

特点:执行 DML 操作时,自动检测是否满足创建视图时所建立的 where 条件,如果不满足,直接出错

  create or replace view view_emp as select * from emp where

  sal>=3000 with check option;

4. 创建连接视图

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyzwgw.html