索引视图序列

索引:

   优点:提高查询的执行速度,实施数据的唯一性,加速了表之间的联系;

   缺点:创建索引需要花费较多的时间,每个创建的索引连同原先的数据源都要空间来存储数据,每次修改数据时索引都要更新;

  分类:

按 存储方式: B* 树 索引 、 位图索引;

按 索引个数: 单列索引  、  复合索引

按 引列值唯一性: 唯一索引、非唯一索引;

注意 : 默认为 树索引

B树索引:

  以树结构(算法)组织数据并存放索引数据,B树是一颗 二叉树;

 默认以升序排列,由根块、分支块 、叶块组成 。索引数据存储在叶块中;

语法:

   Create  Index  索引名 on  table_name(列名)

如:create  index index_name on emp(ename);

 B树索引一般应建立在重复值很少的列上;并且经常在where 子句中引用 适用于相等查询和范围查询;

语法:

Create [ unique ]  index  index_name  on  table_name(column_name, column_name …) [ tablespace   tablespace_name ];

   其 中: 

       Unique  表示建立唯一性索引;

       Tablespace_name :位于表空间的名称;默认当前用户的表空间;

位图索引:

   位图索引 以位置来表示索引数据;相比 B树索引 ,位图索引可以节省大量的磁盘空间;

   基于每个不同值建立一个位图;

   语法:

       Create  BitMap index  idx_name  on table_name( con_name (列名) ) 

[ tablespace   tablespace_name];

  如:create  bitmap  index  inx_emp on emp(ename);

  

一般位图索引建立在重复很多的列上; 或者建立在执行数据统计、数据汇总的条件查询列上;

函数索引:

  一个字段上定义了索引后,如果在查询时使用了函数,则会使索引失效 ;可使用函数索引解决此问题;

 语法:

   Create  index idx_name  on  table_name( func_name( 列名 ) );

如:create index  func_index on emp substr(empno ,1 ,2)

修改索引:

   语法: alter index  idx_name rebuild;

删除索引

语法:drop  Index  idx_name;

查看索引:

   语法:select  idx_name ,  index_type ,  uniqueness from User_indexes where table_name =’emp’; 

----------------------------------------------------------------------------------------------------------------

视  图

  视图是一个虚拟的表它提供一种安全机制,保证只能检索和修改他们能看到的数据

  复杂查询的使用也可以通过视图来简化;

  视图的优点:

     1、为用户提供相关的数据 提供一种安全机制;

     2、隐藏数据复杂性;

     3、从异构源组织数据 比如远程服务器和不是同一个数据库的表;

     4、 减少对象的大小

 创建视图;

   语法: create view  view_name as select 语句  [ with read only ]

            With read only :只读视图;

如:create view  view_name as  select  emp.* , dept,dname  from  emp , dept 

          Where emp.deptno = dept.deptno;

  

直接从视图中查询:

        Select * from v_emp;

更新视图记录:

    Create  or  replace  view  view_name  as subquery;

撤销视图:

   Drop   view  view_name;

----------------------------------------------------------------------------------------------------------------

序 列:

   用于解决: 如何生成一个自动增长的列?

 

语 法:

      Create  sequence  sequence_name

       Increment  by 1       每次增加

       Start with 100         从 100 开始增加

       Maxvalue  1000  |  nomaxvalue  最大值为1000   |  没有最大值 

       Minvalue  100   |  nominvalue   最小值为100    |  没有最小值

       [ cycle  |  nocycle  ]  当 序列增加到最大值后 是否从头开始循环 

       [ cache  20  |  nocache  ]  缓存为20  |  没缓存

       Noorder  : 表示不排序

  用法:

       创建一个索引:create  sequence  xm_seq2   start  with  100  increment  by  1 maxvalue 500 nocycle cache 20;

 创建一张表:create table xm_table (
             fid number,
             fname varchar2(20)   
          )  
 插入索引:
 insert  into   xm_table values(xm_seq2.nextval, 'xiaoming');

   Insert  into  xm_table values(xm_seq2.currval,’zhangsan’);

      

    索引有连个序列值:

               Nextval : 每取一次值 自动增加 1

               Currval : 取当前值,并不增加 

  

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值