Oracle的视图、索引、同义词和序列
时间:2015-07-11 21:50 来源:linux.it.net.cn 作者:IT
一、视图
create view viewname as select语句 [with read only] | [with check option]
drop view viewname
alter view viewname as select语句
二、索引
1. 简介
查询性的表,要多建索引; 修改型的表,要少建索引
索引有唯一索引的和非唯一索引两种
oracle提供了B树,散列,位图等索引类型,主要使用B树索引和位图索引。
B树索引是默认条件下创建的,可以是唯一的也可以是非唯一的,可以是基于一列的,也可以是多列的。B树索引在检索高基数数据列时有很好的性能,对于取出较小的数据,B树索引也更有效。但是当检查范围超过表的10%时,就不行了。
位图索引主要用于决策支持系统或者静态数据,不支持行级锁定。位图索引可以是单列的,也可以是多列的。最好用于小型或者中型群集列。位图以一种压缩格式存放,占用的空间小。
2. 创建索引
create [unique] index 索引名 on 表名(fieldname[asc|desc], fieldname,...) [with {primary| disallownull|ignorenull}] tablespace 表空间名
此外,constraint条件子句的功能类似于索引,并且它也可以建立表之间的关联性。注意这个子句是create表的子句。
单一字段索引语句格式:constraint constraintname {primary key|unique|references foreigntable[(foreignfield1, foreignfield2)]}
多字段索引语句格式:
constraint constraintname {primary key(primary1, primary2,...) | unique(unique1, unique2,...)|foreign key(ref1, ref2,...)| references foreigntable[(foreignfield1, foreignfield2,...)] }
三、同义词
同义词是表,视图,序列,存储函数,包,快照,或者其他同义词的另一个名字。同义词有公共的和私有的之分。在本地数据库同义词还可以通过链接表示另一个数据库的对象。使用同义词可以有以下优点:引用对象无需指出对象的所有者和数据库
为一个表创建同义词的方法是:create public|private name for [username.]tablename
不能为抽象数据类型创建同义词,当创建同义词时,oracle不检查同义词的有效性。所以用户应该自己测试。删除同义词的语句是drop SYNONYM name(private的),或者drop public SYNONYM name(public的).
用户可以删除自己的任何私有同义词,但是要想删除其他用户的私有同义词,必须拥有drop any synonym的权限,要想删除public同义词,必须拥有drop public synonym权限。
四、序列
序列是多个用户能够以此产生唯一整数的数据库对象,可以用它来自动产生主键值,当然不必是只包含序列的值。使用序列时,不保证将生成一系列连续的值
创建序列的语句是create sequence 序列名 keyword。其中的keyword包括start with, increment by(降序为负), minvalue(默认为nominvalue,即1和-10E26), maxvalue(默认为nomaxvalue,即-1和10E26), cycle, nocycle, cache, nocache
修改序列的语句是alter sequence 序列名 keyword
删除序列的语句是drop sequence 序列名
(责任编辑:IT)
一、视图 create view viewname as select语句 [with read only] | [with check option] drop view viewname alter view viewname as select语句 二、索引 1. 简介 查询性的表,要多建索引; 修改型的表,要少建索引 索引有唯一索引的和非唯一索引两种 oracle提供了B树,散列,位图等索引类型,主要使用B树索引和位图索引。 B树索引是默认条件下创建的,可以是唯一的也可以是非唯一的,可以是基于一列的,也可以是多列的。B树索引在检索高基数数据列时有很好的性能,对于取出较小的数据,B树索引也更有效。但是当检查范围超过表的10%时,就不行了。 位图索引主要用于决策支持系统或者静态数据,不支持行级锁定。位图索引可以是单列的,也可以是多列的。最好用于小型或者中型群集列。位图以一种压缩格式存放,占用的空间小。 2. 创建索引 create [unique] index 索引名 on 表名(fieldname[asc|desc], fieldname,...) [with {primary| disallownull|ignorenull}] tablespace 表空间名 此外,constraint条件子句的功能类似于索引,并且它也可以建立表之间的关联性。注意这个子句是create表的子句。 单一字段索引语句格式:constraint constraintname {primary key|unique|references foreigntable[(foreignfield1, foreignfield2)]} 多字段索引语句格式: constraint constraintname {primary key(primary1, primary2,...) | unique(unique1, unique2,...)|foreign key(ref1, ref2,...)| references foreigntable[(foreignfield1, foreignfield2,...)] } 三、同义词 同义词是表,视图,序列,存储函数,包,快照,或者其他同义词的另一个名字。同义词有公共的和私有的之分。在本地数据库同义词还可以通过链接表示另一个数据库的对象。使用同义词可以有以下优点:引用对象无需指出对象的所有者和数据库 为一个表创建同义词的方法是:create public|private name for [username.]tablename 不能为抽象数据类型创建同义词,当创建同义词时,oracle不检查同义词的有效性。所以用户应该自己测试。删除同义词的语句是drop SYNONYM name(private的),或者drop public SYNONYM name(public的). 用户可以删除自己的任何私有同义词,但是要想删除其他用户的私有同义词,必须拥有drop any synonym的权限,要想删除public同义词,必须拥有drop public synonym权限。 四、序列 序列是多个用户能够以此产生唯一整数的数据库对象,可以用它来自动产生主键值,当然不必是只包含序列的值。使用序列时,不保证将生成一系列连续的值 创建序列的语句是create sequence 序列名 keyword。其中的keyword包括start with, increment by(降序为负), minvalue(默认为nominvalue,即1和-10E26), maxvalue(默认为nomaxvalue,即-1和10E26), cycle, nocycle, cache, nocache 修改序列的语句是alter sequence 序列名 keyword 删除序列的语句是drop sequence 序列名 (责任编辑:IT) |