Oracle 8~ 序列、视图和索引

1.Oracle序列(sequence)是用来生成连续的整数数据的对象。

   可以为表中的行自动生成序列号,产生一组等间隔的值,最主要的用途是生成表的主键值。

   创建sequence的语法结构为:

create sequence 序列名
[maxvalue 序列最大值| nomaxvalue]
[minvalue 序列最小值| nominvalue]
[start with 初始值]    //省略则默认1
[increment by 步长]    //省略则默认1
[cycle|nocycle]        //达到限制值后是否循环
[cache 存放序列的内存块大小| nocache] //cache默认20

     nextval 将生成序列中下一个值,调用方式为:序列名.nextval

     currval 返回序列的当前值

create sequence st start with 1 increment by 2 maxvalue 9;
select st.nextval, st.currval from dual;
select st.nextval, st.currval from dual;

  用一个例子说明用sequence生成主键的方法。

  先创建一个简单的表。

create table perinfo(id number,name varchar2(10),age number);

 创建序列生成主键

create sequence perid nocycle;

 插入几条数据,数据的主键id由序列自动生成

insert into perinfo values(PERID.nextval,'tom',15);

查询验证

select * from perinfo;

2.视图(view):可以看成是一个由一张或多张表进行关联查询后的虚拟表。查询视图本质是对表的关联查询。

创建视图的语法结构为:

create [or replace] view 视图名
as select 查询语句

例如,利用stuinfo、class创建视图,只提供学生的基本信息(学号、姓名)和班级信息。

create view vw_stu as
select a.stuid, a.stuname, b.*
from stuinfo a, class b;
select * from vw_stu;

3.索引(index):可以优化数据库的查询效率。

       如果数据库中的某列出现在查询条件中,而该列的数据是无序的,查询时只能一行一行匹配。创建索引就是对列中的数据进行排序或归类,生成独立的索引表。

      在某列上创建索引后,如果该列出现在查询条件中,Oracle 会自动的引用该索引,先从索引表中查询出符合条件记录的 ROWID,由于 ROWID 是记录的物理地址,因此可以根据 ROWID 快速的定位到具体的记录,当表中的数据非常多时,引用索引带来的查询效率非常可观 。

       Oracle数据库会为表的主键和包含唯一约束的列自动创建索引。常见的索引类型包括:b-tree索引、bitmap位图索引、函数索引、hash索引等。

    创建索引的语法结构为:

create [索引类型] index 索引名
on 表名(列1,列1,列3,...| 函数表达式);

       学生信息表(stuinfo)创建的时候就对学号(stuid)设置了主键(PK_STUINFO),当我们学生信息表数据量大的情况下,我们明显发现班号(classno)需要一个索引,不仅仅是用来关联班级信息表(class)、而且经常作为查询条件,因此创建脚本如下:

create index ind_stu_class
on stuinfo(classno);

      查询索引

      ps:不知道为啥,stuinfo必须大写才行,小写就查询不到结果。

select t.index_name, index_type
from all_indexes t
where t.table_name = 'STUINFO';

以上就是序列,视图,索引的简单学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值