视图和索引

视图

视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据,其作用就是节省空间、便于查询,主要用于统计查询。

创建语法:

CREATE OR REPLACE [FORCE|NOFORCE] VIEW 视图名
[(alias[,alias]…)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT]]
[WITH READ ONLY](WITH条件只能有一个)
OR REPLACE : 视图存在则替换原来视图;
FORCE: 不管基表是否存在都自动创建该视图;
Alias :为视图产生的列定义的别名;
SUBQUERY :一条完整的SELECT语句,可以在语句中定义别名;
WITH CHECK OPTION :插入或修改数据行必须满足视图定义的约束;
WITH READ ONLY :该视图上不能进行任何DML操作。
查询视图:SELECT * FROW 视图名;


当视图定义中包含分组组函数GROUP BY字句,DISTINCT关键字,ROWNUM伪列的情况下不能执行UPDATE, INSERT, DELETE数据操作。

删除视图:DROP VIEW 视图名;

5.2索引

索引是与表相关的一个可选结构,索引的关键在于通过一组排序后的索引键来取代默认的全表扫描检索方式,从而提高检索效率。 Oracle会自动使用并维护索引。

单列索引和复合索引:

基于单个列所创建的索引称为单列索引,基于多列所创建的索引称为多列索引。

5.2.1树索引

树索引是oracle数据库中最常用的一种索引,当使用CREATE INDEX 语句创建索引时,默认创建的索引就是B树索引。

5.2.1.1唯一索引(UNIQUE)

唯一索引(UNIQUE):索引值不能重复,但允许为NULL,在创建索引时指定UNIQUE关键字可以创建唯一索引。当建立”主键约束条件“时oracle会自动在相应列上建立唯一索引。

5.2.1.2 非唯一索引

非唯一索引:其索引值可以重复,允许为NULL。默认情况下oracle创建的索引是非唯一索引。

5.2.1.3反向索引(REVERSE)

反向关键字索引:在创建索引时最后指定“REVERSE”关键字,即创建反向索引,被索引的数据都是反向存储的,但仍然保持原来数据列的次序。

5.2.2位图索引(BITMAP)

对于只有几个固定值的字段,应该建立位图索引。

5.2.3基于函数的索引

当需要经常访问一些函数或者表达式时,可以将其存储在索引中,称为函数索引。当函数或表达式结果不确定是采用B树索引,当函数的结果是固定的几个值时采用位图索引。

创建索引

用户创建索引需要CREATE ANYINDEX和UNLIMITED TABLESPACE系统权限(或者DBA权限)。

语法:

CREATE [UNIQUE]|[BITMAP] INDEX INDEX_NAME
ON
TABLE_NAME(COLUMN1 [ASC|DESC],COLUMN2 [ASC])
[TABLESPACE TABLESPACE_NAME] 存储空间名
[PCTFREE N1] 空闲空间大小
清除缓存:
ALTER SYSTEM FLUSH SHARED_POOL;
ALTER SYSTEM FLUSH BUFFER_CACHE;
删除索引:DROP INDEX 索引名;