索引.序列及同义词创建和管理

索引.序列及同义词创建和管理
/*********************创建B+树索引**********************/
create unique index 索引名
     on 表 (字段)
     tablespace ts 名
     storage (参数)
     其他配置参数
/*注:
     默认的索引创建方法.
     特点:1.不可标志NULL值2.无法标志重复率高的字段3.尺寸大4.速度快,大小表均衡
 
/*******例子****************/
  1  create unique index stu_code_index
  2  on student(stu_code)
  3* tablespace indx
  4  /
 
索引已创建。
 
/*********************创建位图索引************************/
create bitmap index 索引名
    on 表(字段)
    storage参数
    其他配置参数
/*注:
     适合枚举字段,例如性别.一般在一个列上的值重复超过100次以上的就可以创建位图索引.
     特点:1.可以标注NULL值2.可标注重复率高的字段3.尺寸小
*/     
 
/************例子************/

  1  create bitmap index stu_sex_index
  2* on student(stu_sex)
  3  /
 
索引已创建。
 
/***************创建函数索引*****************************/
create index 索引名
    on 表(函数(字段))
     storage参数
    其他配置参数
 
/*******例子**********/
SQL> create index stu_name_index
  2  on student(upper(stu_name))
  3  ;
 
索引已创建。
/******************************修改索引存储特性************************/
alter index 名 storage(参数)
/*注:
     对ORACLE自动创建的索引的修改
     alter index using index tablespace indx
     存储参数INITIAL和EXTENTS参数创建后不能修改
 
/******************合并索引(B+树)****************************************/
alter index 名 coalesce
/*注:
    合并索引只是简单的将B树节点中的存储碎片合并在一起,不改变索引的物理组织结构.
 
/*************重建索引********************************************/
alter index 名rebuild
/*注:
     能够消除存储碎片,改变所有的存储参数,可以移到别的表空间,可以使用create index的各种子句
 
/*************例子**************/

SQL> alter index stu_code_index rebuild;
 
索引已更改。
 
/*******************************删除索引*******************************/
drop index 名
/*注:
     删除一个表自动删除相关索引
     如索引是通过定义约束自动创建,通过删除或禁用约束删除对应索引
 
/***************例子**************/

SQL> drop index stu_code_index;
 
索引已丢弃。
 
/************************监视索引**************************************/
alter index 名 monitoring usage
在V$OBJECT_USAGE中查看正在被监视的索引(填充率%80 较危险需重建)
/************例子************/
SQL> alter index stu_sex_index monitoring usage;
 
索引已更改。

SQL> select * from v$object_usage;
 
INDEX_NAME                     TABLE_NAME                     MON USE
------------------------------ ------------------------------ --- ---
START_MONITORING    END_MONITORING
------------------- -------------------
STU_SEX_INDEX                  STUDENT                        YES NO
11/02/2006 21:28:58
 
/********************查询索引************************/
select * from all_indexes          查询所有的索引
              all_ind_columns      一个索引对应的字段
              all_ind_expressions  查询函数索引的表达式
 
/**************************************B+树索引分区*****************************************/
/*注:
     本地分区:为表的每个分区创建一个独立的索引区(基表必须分区)
create index 名 表(字段) local
/*********例子**********/
create index stu_code_pt
on student(stu_code) local 
 
/*************************/
/*注:
    字段一和二相同
    全局分区:1只使用于范围分区2全局索引各个分区间不是互相独立,与各表之间的分区不是一一对应
create index 名 on 表(字段1)
global partition by range(字段2)
(  partition 区名 values less than(条件),
   .......
)
/*
   全局非分区索引:只创建一个独立的索引
 create index 名 on 表(字段)
 
/***************************创建视图*******************************/
create or replace view 名
列定义 AS SQL语句
with check option/with read only
/*推荐使用下面的语法:
create view 名
( 字段1,--注释
  字段2,--注释
AS
   SQL语句
 
/**********删除视图************/
drop view 名
 
/**************************************创建序列********************************/
create sequence 名      (下面的参数可以不写,取默认值)
increment by n  --步长  1
start with n --开始     1
nomaxvalue/maxvalue n
nocycle                --不能重复使用
cache       --读几个到内存 10
 
/*******例子**********/
/*创建
SQL> create sequence sq_no
  2  increment by 1
  3  start with 1000
  4 
SQL> /
 
序列已创建。
 
/**********激活序列**************/
dual---虚表
currval---序列当前值
nextval---序列生成的下一个值
/*********例子********/
  1* select sq_no.nextval from dual
SQL> /
 
   NEXTVAL
----------
      1000
 
/*******查询当前序列********/
SQL> select sq_no.currval from dual;
 
   CURRVAL
----------
      1000
 
/******序列插入值********/

  1* insert into student values(sq_no.nextval,'张','f')
SQL> /
 
已创建 1 行。
SQL> select * from student;
 
STU_CODE   STU_NAME             S
---------- -------------------- -
1002       张                   f
 
/****在单据时读取最大值生成自动增长***********/
/注:
   select '前缀' || lpad(sq_no.nextval,长度,'补0') from dual
/*******例子**********/
  1* select 'xs' || lpad(sq_no.nextval,5,'0') from dual
SQL> /
 
'XS'||LPAD(S
------------
xs01004
 
/*************************修改序列**************/
alter sequence 名 参数
/*注:序列的起始值不能改,在对序列修改时、,将丢失缓存中的序列值
 
/************删除序列**********/
drop sequence 名
 
/*********************************同义词******************************************/
创建:
create public synonym 名
for 用户.对象
需在SYSTEM用户下创建
/**********例子************/
  1   create public synonym emp
  2* for scott.emp
  3  ;
 
同义词已创建。
 
 select * from emp;
 
 EMPNO ENAME      JOB              MGR HIREDATE          SAL       COMM     DEPTNO
------ ---------- --------- ---------- ---------- ---------- ---------- ----------
  7369 SMITH      CLERK           7902 17-12月-80        800                    20
  7499 ALLEN      SALESMAN        7698 20-2月 -81       1600        300         30
  7521 WARD       SALESMAN        7698 22-2月 -81       1250        500         30
  7566 JONES      MANAGER         7839 02-4月 -81       2975                    20
  7654 MARTIN     SALESMAN        7698 28-9月 -81       1250       1400         30
  7698 BLAKE      MANAGER         7839 01-5月 -81       2850                    30
  7782 CLARK      MANAGER         7839 09-6月 -81       2450                    10
  7788 SCOTT      ANALYST         7566 19-4月 -87       3000                    20
  7839 KING       PRESIDENT            17-11月-81       5000                    10
  7844 TURNER     SALESMAN        7698 08-9月 -81       1500          0         30
  7876 ADAMS      CLERK           7788 23-5月 -87       1100                    20
  7900 JAMES      CLERK           7698 03-12月-81        950                    30
  7902 FORD       ANALYST         7566 03-12月-81       3000                    20
  7934 MILLER     CLERK           7782 23-1月 -82       1300                    10
 /************删除同义词************/
drop public synonym 名
 
 
        
posted @ 2009-04-28 23:43  温景良(Jason)  Views(443)  Comments(0Edit  收藏  举报