四 表空间、数据库对象

1.Oracle数据库对象有:

a.同义词:就是给数据库对象一个别名

b.序列:Oracle实现增长的一个对象

c.视图:预定义的查询,与表一样的查询使用,是一张虚拟表

d.索引:对数据库表中的某些进行排序,提高查询效率

2.同义词

同义词(synonym)是数据库对象的一个别名,Oracle可以为表/ 视图 / 序列 / 过程 / 函数 / 程序包 等指定一个别名.

a.私有同义词:拥有CREATE SYNONYM权限的用户(包括非管理员用户)即可创建私有同义词,创建的私有同义词只能由当前用户使用.
b.公有同义词:系统管理员可以创建公有同义词,公有同义词可以被所有用户访问.
语法:
CREATE [OR REPLACE] [PUBLIC] SYNONYM [schema.]synonym_name
FOR [schema.]object_name
①[OR REPLACE]表示如果已经存在,则用新的替换旧的.
②[PUBLIC]: 表示创建公有同义词

 

例如:正常其他用户要查询scott用户的EMP表需要这样写(在scott已经授权其他用户能查询他的emp表的前提下)

select * from scott.emp

如果为其创建同义词

create synonym myemp for scott.emp

之后可以直接这样查询

select * from myemp

3.序列

序列(sequence)是用来生成连续的整数数据的对象.序列常常用来作为主键中增长列,序列中的可

以升序生成,也可以降序生成.

语法: CREATE SEQUENCE sequence_name

[START WITH num]

[INCREMENT BY increment]

[MAXVALUE num|NOMAXVALUE]

[MINVALUE num|NOMINVALUE]

[CYCLE|NOCYCLE]

[CACHE num|NOCACHE]

①START WITH:从某一个整数开始,升序默认值是1,降序默认值是-1

②INCREMENT BY:增长数.如果是正数则升序生成,如果是负数则降序生成.升序默认值是1,降序默认值是-1.

③MAXVALUE:指最大值

④NOMAXVALUE:这是最大值的默认选项,升序的最大值是:10^27,降序默认值是-1.

⑤MINVALUE:指最小值

⑥NOMINVALUE:这是默认值选项,升序默认值是1,降序默认值是:-10^26.

⑦CYCLE:表示如果升序达到最大值后,从最小值重新开始;如果最降序序列,达到最小值后,从最大值重新开始

⑧NOCYCLE:表示不重新开始,序列升序达到最大值/降序达到最小值后就报错.默认NOCYCLE

⑨CACHE:使用CACHE选项时,该序列会根据序列规则预生成一组序列号.保留在内存中,当使用下一个序列号时可以更快的响应.当内存中的序列号用完时.系统再生成一组新的序列号,并保存在缓

存中,这样可以提高生成序列号的效率.Oracle默认会生产20个序列号.

⑩NOCACHE:不预先在内存中生成序列号.

 

创建之后,可以通过序列对象的CURRVAL和NEXTVAL两个伪列分别访问该序列的当前值和下一个值

例:SELECT MYSEQ.NEXTVAL FROM DUAL

SELECT MYSEQ.CURRVAL FROM DUAL

修改序列时限制:

1.不能修改序列的初始值

2.最小值不能大于当前值

3.最大值不能小于当前值

 

4.视图
语法
CREATE [OR REPLACE] [{FORCE|NOFORCE}] VIEW view_name
AS
SELECT....
[WITH READ ONLY CONSTRANT]
1.OR REPALCE:如果视图已经存在,则替换旧视图
2.FORCE:即使基表不存在,也可以创建该视图,但是该视图不能正常使用,当基表创建成功后,视图才能正常使用.
3.NOFORCE:如果基表不存在,无法创建视图,该项是默认选项.
4.WITH READ ONLY:默认可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行INSERT操作),WITH READ ONLY说明视图是只读视图,不能通过该视图进行增删改操作.现实开发中,基本上不通过视图对表中的数据进行增删改操作.

5.索引
如果表中的某些字段被经常查询并作为查询的条件出现时,就应该考虑为该列创建索引
当从很多行的表中查询少数行时,也要创建索引.
有一个基本的准则是:当任何单个查询要检索的行少于或者等于整个表行数的10%时,索引就非常有用.
Oracle数据库会为表的主键和包含唯一约束的列自动创建索引.索引可以提高查询的效率,但是在数据增删改时需要更新索引,因此索引对增删改会有负面影响.
在select语句查询时,Oracle系统会自动为查询条件上的列应用索引.索引就是对某一列进行排序,因此在索引列上,重复值越少,索引效果越明显.
Oracel可以为一些列重复非常多且值有限的列(比如性别列)上创建位图索引.

 

posted @ 2016-04-27 14:55  xfyn  阅读(213)  评论(0编辑  收藏  举报