视图,索引基础

来源:互联网 发布:淘宝客服的沟通技巧 编辑:程序博客网 时间:2024/04/28 09:36

一、视图

create   view   如果创建的视图已经存在,会报一个错误   -‘对象已存在’  
create   or   replace   view   则不会报错,如果创建的视图已存在,它会先删除原来的视图,然后创建你要创建的视图

 


视图的创建语法如下:

  CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW 视图名[(别名1,别名2...)]

  AS 子查询

  [WITH CHECK OPTION [CONSTRAINT 约束名]]

  [WITH READ ONLY]

  其中:

  OR REPLACE 表示替代已经存在的视图。

  FORCE表示不管基表是否存在,创建视图。

  NOFORCE表示只有基表存在时,才创建视图,是默认值。

  别名是为子查询中选中的列新定义的名字,替代查询表中原有的列名。

  子查询是一个用于定义视图的SELECT查询语句,可以包含连接、分组及子查询。

  WITH CHECK OPTION表示进行视图插入或修改时必须满足子查询的约束条件。后面的约束名是该约束条件的名字。

  WITH READ ONLY 表示视图是只读的。


在视图上也可以使用修改数据的DML语句,如INSERT、UPDATE和DELETE
视图上的DML语句有如下限制:
只能修改一个底层的基表
如果修改违反了基表的约束条件,则无法更新视图
如果视图包含连接操作符、DISTINCT 关键字、集合操作符、聚合函数或 GROUP BY 子句,则将无法更新视图
如果视图包含伪列或表达式,则将无法更新视图

二、索引

(一)、
索引是与表相关的一个可选结构
用以提高 SQL 语句执行的性能
减少磁盘I/O
使用 CREATE INDEX 语句创建索引
在逻辑上和物理上都独立于表的数据
Oracle 自动维护索引

创建标准索引
CREATE INDEX item_index ON itemfile (itemcode)
     TABLESPACE index_tbs;

重建索引
ALTER INDEX item_index REBUILD;

删除索引
DROP INDEX item_index;

 

(二)、
索引的类型:
1.唯一索引

唯一索引确保在定义索引的列中没有重复值
Oracle 自动在表的主键列上创建唯一索引
使用CREATE UNIQUE INDEX语句创建唯一索引

CREATE UNIQUE INDEX item_index
     ON itemfile (itemcode);


2.组合索引

组合索引是在表的多个列上创建的索引
索引中列的顺序是任意的
如果 SQL 语句的 WHERE 子句中引用了组合索引的所有列或大多数列,则可以提高检索速度

CREATE INDEX comp_index
     ON itemfile(p_category, itemrate);


3.反向键索引

反向键索引反转索引列键值的每个字节
通常建立在值是连续增长的列上,使数据均匀地分布在整个索引上
创建索引时使用REVERSE关键字

CREATE INDEX rev_index
     ON itemfile (itemcode) REVERSE;

ALTER INDEX rev_index REBUID NOREVERSE;


4.位图索引

位图索引适合创建在低基数列上
位图索引不直接存储ROWID,而是存储字节位到ROWID的映射
减少响应时间
节省空间占用

CREATE BITMAP INDEX bit_index
     ON order_master (orderno);


5.基于函数的索引

基于一个或多个列上的函数或表达式创建的索引
表达式中不能出现聚合函数
不能在LOB类型的列上创建
创建时必须具有 QUERY REWRITE 权限

CREATE INDEX lowercase_idx
     ON toys (LOWER(toyname));

SELECT toyid FROM toys
     WHERE LOWER(toyname)='doll';


(三)、索引组织表

索引组织表的数据存储在与其关联的索引中
索引中存储的是行的实际数据,而不是ROWID
基于主键访问数据
CREATE TABLE 命令与 ORGANIZATION INDEX 子句一起用于创建索引组织表

CREATE TABLE ind_org_tab (
       vencode NUMBER(4) PRIMARY KEY,
       venname VARCHAR2(20)
     )
     ORGANIZATION INDEX;

(四)、索引中的分区

可以将索引存储在不同的分区中
与分区有关的索引有三种类型:
1.局部分区索引 - 在分区表上创建的索引,在每个表分区上创建独立的索引,索引的分区范围与表一致
2.全局分区索引 - 在分区表或非分区表上创建的索引,索引单独指定分区的范围,与表的分区范围或是否分区无关
3.全局非分区索引 - 在分区表上创建的全局普通索引,索引没有被分区


(五)、获取索引的信息
与索引有关的数据字典视图有:
USER_INDEXES - 用户创建的索引的信息
USER_IND_PARTITIONS - 用户创建的分区索引的信息
USER_IND_COLUMNS - 与索引相关的表列的信息

SELECT INDEX_NAME, TABLE_NAME, COLUMN_NAME
     FROM USER_IND_COLUMNS
     ORDER BY INDEX_NAME, COLUMN_POSITION;


三、数据字典

数据字典 (Data dictionary) 是一种用户可以访问的记录数据库和应用程序元数据的目录。

数据字典通常包括五个部分:
1.数据项
2.数据结构
3.数据流
4.数据存储
5.处理过程

数据字典分为:
1.主动数据字典,是指在对数据库或应用程序结构进行修改时,其内容可以由DBMS自动更新的数据字典。
2.被动数据字典,是指修改时必须手工更新其内容的数据字典。

 

 

原创粉丝点击