个人博客:http://demi-panda.com
序列是用来生成唯一,连续的整数的数据库对象。序列是用来自动生成主键或唯一键的值。
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','rose@sdi.com',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
分享到:
相关推荐
### Oracle学习笔记知识点详解 #### 一、Oracle简介 Oracle是一家知名的软件公司,以其数据库管理系统闻名全球。该公司成立于1977年,总部位于美国加利福尼亚州。Oracle不仅提供数据库解决方案,还涉及中间件、...
Oracle学习笔记 Oracle学习笔记是李兴华老师编写的Oracle从入门到精通的学习笔记,涵盖了 Oracle 的多表查询、连接、组函数和分组统计等知识点。在本篇笔记中,李兴华老师详细介绍了多表查询的基本语法、左右连接...
Oracle学习笔记精华版是针对数据库管理系统Oracle的一份重要学习资源,涵盖了从基础概念到高级特性的全面知识。Oracle,作为全球广泛使用的大型企业级数据库系统,对于IT专业人员尤其是数据库管理员(DBA)来说,是...
Oracle学习笔记 以下是我这一周学习oracle整理的笔记,包括课堂的内容和自己看额外看的视频补充的一些内容,基本上囊括了所有oracle的基本知识。主要的形式是例子代码加代码解释加运行结果,我个人认为对于没有学习...
在Oracle学习笔记中,对安装卸载和配置的详尽讲解,不仅为学习者提供了操作指导,而且还涉及到了数据库管理的一些基础知识点。这些内容对于数据库管理员和开发人员来说都是十分重要的,因为它们是操作Oracle数据库的...
资源名称:Oracle学习笔记-日常应用、深入管理、性能优化内容简介:Oracle学习笔记-日常应用、深入管理、性能优化Oracle 11g是最具代表性的高端关系型数据库管理系统,它在世界各地的大型商务数据库应用系统中被广泛...
Oracle DBA 学习笔记 标题:Oracle DBA 学习笔记 描述:学习使用维护 Oracle 数据库数年,对认为值得记录的 Oracle 维护脚本进行记录总结,存起来,虽然今后开源是方向,但不可否认 Oracle 仍然非常有水平的,在...
以下是对Oracle学习笔记整理的主要知识点的详细说明: 1. **数据库选择**: 在决定使用哪种数据库时,通常需要考虑项目的规模、性能需求、安全性要求以及可用资源。Oracle数据库因其稳定性、可扩展性和高性能而被...
根据提供的信息,我们可以总结出以下Oracle数据库学习的关键知识点: ...以上是基于提供的内容整理出的Oracle学习笔记中的关键知识点。通过理解这些基础知识,可以更好地管理和操作Oracle数据库。
超详细Oracle学习笔记,详细记录了oracle的学习过程中遇到的各种问题及基础知识,适合初中级oracle使用人员学习参考。
Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的特性和功能来优化数据管理和查询性能。本文主要探讨Oracle数据库的入门基础知识,特别是与索引相关的概念。 首先,我们要理解ROWID的概念。ROWID是...
Oracle 11g是最具代表性的高端关系型数据库管理系统,它在世界各地的大型商务数据库应用系统中被广泛应用。本书设计了大量的应用情景,介绍了数据库管理员和开发人员常用的管理、维护和优化Oracle 11g数据库的技术和...
### Oracle 学习笔记知识点概览 #### 一、Oracle 数据库系统参数查询与管理 在 Oracle 数据库的学习过程中,了解如何查看和管理数据库的系统参数是非常重要的。这些参数直接影响着数据库的性能和稳定性。 ##### ...
### ORACLE经典学习笔记知识点概览 #### 第一章 ORACLE 命令 本章节主要介绍了Oracle数据库中常用的命令及其使用方法。 1. **查看参数文件**: `Desc v$parameter` - 这个命令用于查看Oracle的参数文件信息,通过...
Oracle10g学习笔记,Oracle10g学习笔记Oracle10g学习笔记Oracle10g学习笔记Oracle10g学习笔记Oracle10g学习笔记
全网最全的oracle学习笔记,oracle学习笔记,oracle,### 4、oracle的七个服务 ```sql 1、Oracle ORCL VSS Writer Service Oracle卷映射拷贝写入服务,VSS(Volume Shadow Copy Service)能够让存储基础设备(比如...
在“MSDN Oracle学习笔记”中,我们可以期待找到关于Oracle数据库的详细讲解和实践指导。 首先,Oracle数据库的基础知识是必不可少的。这通常涵盖数据库系统的基本概念,如SQL(结构化查询语言)的使用,数据类型,...