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';
以上就是序列,视图,索引的简单学习。