【Oracle】第三章索引视图序列

第三章索引视图序列

序列是用来生成唯一,连续的整数的数据库对象。序列是用来自动生成主键或唯一键的值。

CREATE SEQUENCE  sequence_name

START WITH  integer

INCREMENT BY  integer

MAXVALUE   integer|nomaxvalue

MINVALUE    integer|nominvalue

CYCLE|NOCYCLE

CACHE  integer|nocache;

START WITH     指要生成的第一个序列号,对于升序,其默认值为最小值。对于降序其默认值为最大值。

INCREMENT BY : 用于指定序列号之间的间隔。其默认值为1。 如果为正值,则生成的序列按升序排列,如果为负值,则生成的序列按降序排列

MAXVALUE    :指定序列可生成的最大值

NOMAXVALUE :如果指定了NOMAXVALUE,Oracle将升序序列的最大值设置为10的27次方,将降序序列的的最大值设为-1.

MINVALUE    : 指定序列的最小值。MINVALUE必须小于或等于START WITH 的值,并且必须小于MAXVALUE。

NOMINVALUE  :如果指定了NOMINVALUE ,Oracle将升序序列的最小值设置为1,或者将降序的最小值设置为-10 的26次方。

CYCLE        :指定序列在达到最大值或最小值后,将继续从头开始生成值

NOCYCLE     :指定序列在达到最大或者最小值的时候,将不能继续生成值

CACHE        :使用CACHE选项可以预先分配一组序列号,并将其保存在内存中,这样可以更快的访问序列号,当用完缓存中的所有序列号时,Oracle 将生成另外一组数值,并将其保留在内存中

NOCACHE     :使用NOCACHE选项,则不会加快访问速度而预先分配序列号,如果在创建序列时忽略了CACHE和NOCACHE选项,Oracle 将默认缓存20个序列号。

以下代码创建了一个名为:emp_id的序列(序列号从10开始,自动增长为1,最大值为2000)

Create sequence mytable_id start with 10 increment by 1 maxvalue 2000

以下代码把 emp_id 序列产生的值插入到mytable表中

insert into mytable values(mytableid.nextval,‘rose‘,‘beijing‘,‘[email protected]‘,date‘2007-10-10‘);

以下代码修改了mytable_id 序列的信息。重新设置了新的 maxvalue 值以及设置增量值为2

Alter sequence mytable_id increment by 2 maxvalue 5000;

********* 注意 :不能修改序列的 start with 参数。

以下代码演示了删除一个序列

Drop sequence emp_id;

可以通过查询user_sequence 字典表来获取有关序列的信息。

user_sequence 表中的部分列


Sequence_name


序列名


Min_value


最小值


Max_value


最大值


Increment_by


序列的增量


Cycle_flag


该序列是否循环,该值为Y或N


Order_flag


该序列是否有序,该值为Y或N


Cache_size


保存在内存中的序列值的个数


Last_number


该序列生成或缓存的最后一个数字

以下查询显示了user_sequence表中的详细信息

select * from user_sequences

删除序列:

drop sequence  mytable_id;

创建视图:

视图是在一个或者多个表上的预定义查询。

以下代码 在order_master 表中创建order_view 视图

create or replace view order_view as select * from order_master where vencode=‘V001‘

在视图中使用 with check option 。修改视图后在视图中不能显示修改的行。使用with check option 可以防止视图数据被修改。

-- 在order_master 表中创建order_view 视图 ,并且加了with check option 约束,

--如果修改 视图中 vencode 列的值将违反 with check option 约束。

create or replace view order_view as select * from order_master where vencode=‘V001‘ with check option

--由于视图中增加了with check option 约束

update order_view set vencode=‘V002‘ where orderno=‘o003‘

--创建只读视图

create or replace view order_viewOnly as select * from order_master where vencode=‘V001‘ with read only

select * from order_viewonly

--试图修改以上只读视图

update order_viewonly set ostatus=‘C‘ where orderno=‘V001‘

创建带有错误视图:

下面语句创建一个基于表venmast 的视图 ,但是在数据库中并不存在名为“venmast”的表:

Create  force  view  vtable  as  select  *  from  viewtable;

使用索引

唯一索引:

唯一索引确保在定义索引的列中没有重复值

Oracle 自动在表的主键列上创建唯一索引

使用CREATE UNIQUE INDEX语句创建唯一索引

以下代码在jobs表的name列上创建了一个名为jobnameindex 的唯一索引:

create unique index jobnameindex on jobs(name);

alter index 语句的 rebuild 选项可以用来重建现有的索引,该语句效率高于使用drop index 和 create index 语句重新创建索引,下列语句演示如何重建jobnameindex索引:

alter  index  jobnameindex  rebuild ;

组合索引:

组合索引是在表的多个列上创建的索引

索引中列的顺序是任意的

如果 SQL 语句的 WHERE 子句中引用了组合索引的所有列或大多数列,则可以提高检索速度

以下代码在employee2 表中创建了组合索引:

create index comp_index on employees2(first_name,last_name);

反向键索引:

反向键索引反转索引列键值的每个字节

通常建立在值是连续增长的列上,使数据均匀地分布在整个索引上

创建索引时使用REVERSE关键字

以下代码演示了创建反向键索引

create index rev_inx on employees2(salary) reverse

使用noreverse关键字将反向键索引重建为标准索引:

alter  index  rev_inx  rebuild  noreverse;

位图索引:

位图索引适合创建在低基数列上

位图索引不直接存储ROWID,而是存储字节位到ROWID的映射

减少响应时间

节省空间占用

以下代码演示了如何创建位图索引:

create bitmap index bit_inx  on employees2(division_id);

基于函数的索引

基于一个或多个列上的函数或表达式创建的索引

表达式中不能出现聚合函数

不能在LOB类型的列上创建

创建时必须具有 QUERY REWRITE 权限

以下代码演示了如何创建一个基于函数的索引

create index lowercase_inx on employees2(lower(job_id));

修改索引,以下代码重命名了索引。

Alter index vn_ind rename to c_vn_ind;

删除索引:

Drop index cvn_ind;

查看已创建的索引信息

select * from user_indexes

查看索引基于的列

select * from user_ind_columns

时间: 2024-10-29 19:12:11

【Oracle】第三章索引视图序列的相关文章

Oracle第三章——SQL语言

SQL语言是高级的结构化查询语言,大大减轻了用户的负担.目前查询语言分为四种,数据定义语言(DDL).数据操纵语言(DML). 事务控制语言(TCL).数据控制语言(DCL). 一.数据定义语言(DDL) 1.CREATE CREATE命令用于创建模式对象,如创建表的格式为:CREATE TABLE [schema.]table (column datatype [, column datatype]);,其中, schema是对象的持有者,即用户对应的模式,如果在用户自己的模式中创建则可以不指

第三章 索引

简介 索引存储类型:B型树索引.哈希索引 索引分类:普通索引.唯一性索引.全文索引.单列索引. 多列所以.空间索引 创建索引 create table 表名 (属性名 数据类型 [约束条件], 属性名 数据类型 [约束条件], …… [unique|fulltext|spatial] index | key [别名] (属性名1 [(长度)] [asc|desc]) ); 1.unique是可选参数,表示唯一性索引 2.fulltext是可选参数,表示全文索引 3.spatial是可选参数,表示

Mongodb学习笔记三(Mongodb索引操作及性能测试)

第三章 索引操作及性能测试 索引在大数据下的重要性就不多说了 下面测试中用到了mongodb的一个客户端工具Robomongo,大家可以在网上选择下载. 插入 测试数据 首先插入100万条测试数据 for(var i=1;i<1000000;i++){ var person={ Name:"jack"+i, Age:i, Address:["henan","wuhan"], Course:[ {Name:"shuxue"

java:Oracle(视图,索引,序列)

1.索引:索引一共分为4种 -- 在oracle中, -- normal:普通索引 -- unique:唯一索引 -- bitmap:位图索引 -- B 树索引:默认:如果不建立索引的情况下,oracle就自动给每一列都加一个B 树索引 -- index(下标,索引):作为索引,在oracle如果自带索引能满足当前查询需求,就只需要建立索引,oracle自带机制会帮你使用 -- 如果当前查询oracle自带的索引满足不了,就要自己编写索引 (不学) -- 索引就可以直接理解为一个目录 -- 二叉

oracle(sql)基础篇系列(四)&mdash;&mdash;数字字典、索引、序列、三范式

  数字字典表 --查看当前用户下面有哪些张表 select * from user_tables; select table_name from user_tables;   --查看当前用户下面有哪些视图 select * from user_views; select view_name from user_views;   --查看当前用户下面有哪些约束 select * from user_constraints; select constraint_name from user_co

oracle创建序列&amp;索引&amp;视图

---oracle学习 --oracle的管理系统学习 --oracle的数据管理学习 --oracle的用户管理 --oracle二维表管理 --oracle的其他知识 --oracle的序列,视图,索引 --oracle的分页查询 --oracle的数据库备份 --oracle的图形化界面操作 序列 1 --oracle的序列的学习 2 --创建序列 3 --使用 create sequence 序列名 4 --特点1:默认开始是没有值的,也就是指针指在了没有值的位置. 5 --特点2:序列

Oracle基础 12 对象 objects 同义词/序列/试图/索引

--创建同义词create public synonym employees for hr.employees;  --公共同义词需要 create public synonym 权限 表的所有用户授予公共权限  grant select on employees to public; create synonym t1_s for t1;   --私有同义词如果想在不同的环境中通过不同的别名引用同一个表时,要创建私有同义词.  编译同义词 alter synonym t1_s compile;

【书评:Oracle查询优化改写】第三章

BLOG文档结构图 一.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 隐含参数 _b_tree_bitmap_plans介绍 ② 11g新特性Native Full Outer Join 本文如有错误或不完善的地方请大家多多指正,ITPUB留言或QQ皆可,您的批评指正是我写作的最大动力. 一.2 实验环境介绍 oracle:11.2.0.3  .8.1.7.0.0 OS: RHEL6.5 一.3 前言 前2章的链接参考相

Oracle笔记(十三) 视图、同义词、索引

Oracle笔记(十三) 视图.同义词.索引 一.视图 在之前所学习过的所有的SQL语法之中,查询操作是最麻烦的,如果程序开发人员将大量的精力都浪费在查询的编写上,则肯定影响代码的工作进度,所以一个好的数据库设计人员,除了根据业务的操作设计出数据表之外,还需要为用户提供若干个视图,而每一个视图包装了一条条复杂的SQL语句,视图的创建语法如下: CREATE [OR REPLACE] VIEW 视图名称 AS 子查询; 范例:创建一张视图 CREATE VIEW myview AS SELECT