索引.序列及同义词创建和管理
索引.序列及同义词创建和管理
/*********************创建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 /
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> alter index stu_code_index rebuild;
SQL> drop index stu_code_index;
SQL> select * from v$object_usage;
1* insert into student values(sq_no.nextval,'张','f')
SQL> /
其他配置参数
/*******例子**********/
SQL> create index stu_name_index
2 on student(upper(stu_name))
3 ;
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
------------------------------ ------------------------------ --- ---
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_columns 一个索引对应的字段
all_ind_expressions 查询函数索引的表达式
/**************************************B+树索引分区*****************************************/
/*注:
本地分区:为表的每个分区创建一个独立的索引区(基表必须分区)
create index 名 表(字段) local
/*********例子**********/
create index stu_code_pt
on student(stu_code) local
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> /
2 increment by 1
3 start with 1000
4
SQL> /
序列已创建。
/**********激活序列**************/
dual---虚表
currval---序列当前值
nextval---序列生成的下一个值
/*********例子********/
1* select sq_no.nextval from dual
SQL> /
SQL> /
NEXTVAL
----------
1000
----------
1000
/*******查询当前序列********/
SQL> select sq_no.currval from dual;
CURRVAL
----------
1000
----------
1000
/******序列插入值********/
1* insert into student values(sq_no.nextval,'张','f')
SQL> /
已创建 1 行。
SQL> select * from student;
STU_CODE STU_NAME S
---------- -------------------- -
1002 张 f
---------- -------------------- -
1002 张 f
/****在单据时读取最大值生成自动增长***********/
/注:
select '前缀' || lpad(sq_no.nextval,长度,'补0') from dual
/*******例子**********/
1* select 'xs' || lpad(sq_no.nextval,5,'0') from dual
SQL> /
/*******例子**********/
1* select 'xs' || lpad(sq_no.nextval,5,'0') from dual
SQL> /
'XS'||LPAD(S
------------
xs01004
------------
xs01004
/*************************修改序列**************/
alter sequence 名 参数
/*注:序列的起始值不能改,在对序列修改时、,将丢失缓存中的序列值
/************删除序列**********/
drop sequence 名
/*********************************同义词******************************************/
创建:
create public synonym 名
for 用户.对象
需在SYSTEM用户下创建
/**********例子************/
1 create public synonym emp
2* for scott.emp
3 ;
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
------ ---------- --------- ---------- ---------- ---------- ---------- ----------
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 名