Oracle 数据库对象

  数据库对象是数据库的组成部分,常常用CREATE命令进行创建,可以使用ALTER命令修改,用DROP执行删除操作。前面已经接触过的数据库对象有表、用户等。 今天将学习更多的Oracle数据库对象

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

  序列:Oracle中实现增长的对象。

  视图:预定义的查询,作为表一样的查询使用,是一张虚拟表。

  索引:对数据库表中的某些列进行排序,便于提高查询效率。

  ①同义词(通过同义词可以访问数据库对象)

  同义词(Synonym)是数据库对象的一个别名,Oracle可以为表、视图、序列、过程、函数、程序包等指定一个别名。同义词有两种类型:

  私有同义词:拥有CREATE SYNONYM权限的用户(包括非管理员用户)即可创建私有同义词,创建的私有同义词只能由当前用户使用。

  公有同义词:系统管理员可以创建公有同义词,公有同义词可以被所有用户访问。

  System用户访问Scott用户的Emp表

  SELECT ENAME,JOB,SAL FROM SCOTT.EMP WHERE SAL>2000

  管理员用户可以访问任何用户的数据库对象,SYSTEM用户访问SCOTT用户的EMP表时,必须使用SCOTT.EMP。

  ②序列

  序列(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:这是最大值的默认选项,升序的最大值是:1027,降序默认值是-1。

  ⑤ MINVALUE:指最小值。

  ⑥ NOMINVALUE:这是默认值选项,升序默认值是1,降序默认值是-1026。

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

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

  ⑨ CACHE:使用CACHE选项时,该序列会根据序列规则预生成一组序列号。保留在内存中,当使用下一个序列号时,可以更快的响应。当内存中的序列号用完时,系统再生成一组新的序列号,并保存在缓存中,这样可以提高生成序列号的效率。Oracle默认会生产20个序列号。

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

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

  使用ALTER SEQUENCE可以修改序列,在修改序列时有如下限制:

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

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

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

  使用DROP SEQUENCE命令可以删除一个序列对象。

  ③视图

  视图(View)实际上是一张或者多张表上的预定义查询,这些表称为基表。从视图中查询信息与从表中查询信息的方法完全相同。只需要简单的SELECT…FROM即可。 视图具有以下优点:

  1. 可以限制用户只能通过视图检索数据。这样就可以对最终用户屏蔽建表时底层的基表。

  2. 可以将复杂的查询保存为视图。可以对最终用户屏蔽一定的复杂性。

  3. 限制某个视图只能访问基表中的部分列或者部分行的特定数据。这样可以实现一定的安全性。

  4. 从多张基表中按一定的业务逻辑抽出用户关心的部分,形成一张虚拟表。

  ④索引

  数据库中索引(Index)的概念与目录的概念非常类似。如果某列出现在查询的条件中,而该列的数据是无序的,查询时只能从第一行开始一行一行的匹配。创建索引就是对某些特定列中的数据排序,生成独立的索引表。在某列上创建索引后,如果该列出现在查询条件中,Oracle会自动的引用该索引,先从索引表中查询出符合条件记录的ROWID,由于ROWID是记录的物理地址,因此可以根据ROWID快速的定位到具体的记录,表中的数据非常多时,引用索引带来的查询效率非常可观。

  Oracle数据库会为表的主键和包含唯一约束的列自动创建索引。索引可以提高查询的效率,但是在数据增删改时需要更新索引,因此索引对增删改时会有负面影响。

posted @ 2016-08-24 22:29  lhd0525  阅读(1439)  评论(0编辑  收藏  举报