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

简介:
  
索引.序列及同义词创建和管理
/*********************创建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 名
 
 
        
版权说明

  如果标题未标有<转载、转>等字则属于作者原创,欢迎转载,其版权归作者和博客园共有。
  作      者:温景良
  文章出处:http://wenjl520.cnblogs.com/  或  http://www.cnblogs.com/

分类: Oracle
0
0
« 上一篇: 创建和管理表
» 下一篇: PL/SQL语言基础
posted @ 2009-04-28 23:43 温景良(Jason) Views( 170) Comments( 0) Edit 收藏
 
相关文章
|
15天前
|
数据库 索引
联合索引和单独列索引哪个更好
【10月更文挑战第15天】联合索引和单独列索引哪个更好
37 2
|
2月前
|
关系型数据库 MySQL 数据库
MYSQL索引的分类与创建语法详解
理解并合理应用这些索引类型,能够有效提高MySQL数据库的性能和查询效率。每种索引类型都有其特定的优势,适当地使用它们可以为数据库操作带来显著的性能提升。
69 3
|
6月前
|
SQL C++
组合两个表(C++)
组合两个表(C++)
34 0
|
存储 SQL 关系型数据库
|
关系型数据库 MySQL 开发者
索引分类和建索引命令语句|学习笔记
快速学习索引分类和建索引命令语句
|
索引
索引分类、创建索引、删除索引
索引分类、创建索引、删除索引
137 0
索引分类、创建索引、删除索引
|
关系型数据库 MySQL 数据库
创建索引,这些知识应该了解
在 MySQL 中,基本上每个表都会有索引,有时候也需要根据不同的业务场景添加不同的索引。索引的建立对于数据库高效运行是很重要的,本篇文章将介绍下创建索引相关知识及注意事项。
144 0

相关实验场景

更多