数据库对象

本节要点:

  • l  同义词
  • l  序列
  • l  视图
  • l  索引

Oracle 数据库对象又称模式对象;数据库对象是逻辑结构的集合,最基本的数据库对象是表。其他数据库对象包括:

 

1         同义词

同义词是现有对象的一个别名。优点:简化SQL语句、隐藏对象的名称和所有者、提供对对象的公共访问。

同义词共有两种类型:私有同义词、公有同义词。公有同义词可被所有的数据库用户访问。私有同义词只能在其模式内访问,且不能与当前模式的对象同名。

 

 

创建或替换现有的同义词:

CREATE OR REPLACE SYNONYM syn_emp FOR SCOTT.emp;

删除同义词:

DROP SYNONYM emp;

DROP PUBLIC SYNONYM syn_emp;

2         序列

序列是用于生成唯一、连续序号的对象;序列可以是升序的,也可以是降序的。

1)         使用CREATE SEQUENCE语句创建序列:

CREATE SEQUENCE seq_toys

         START WITH 10

         INCREMENT BY 10

         MAXVALUE 2000

         MINVALUE 10

         NOCYCLE

         CACHE 10;

2)         可以通过序列的伪列来访问序列的值:

  • l  NEXTVAL 返回序列的下一个值
  • l  CURRVAL 返回序列的当前值

3)         指定序列的下一个值:

INSERT INTO toys (toyid, toyname, toyprice) VALUES (seq_toys.NEXTVAL, ‘TransFormer’, 500);

4)         检索序列的当前值:

SELECT seq_toys.CURRVAL FROM dual;

5)         修改序列:

ALTER SEQUENCE seq_toys MAXVALUE 5000 CYCLE;

6)         删除序列:

DROP SEQUENCE seq_toys;

3         视图

视图以经过定制的方式显示来自一个或多个表的数据;视图可以视为“虚拟表”或“存储的查询”;创建视图所依据的表称为“基表”.

视图的优点有:

  • l  提供了另外一种级别的表安全性
  • l  隐藏的数据的复杂性
  • l  简化的用户的SQL命令
  • l  隔离基表结构的改变
  • l  通过重命名列,从另一个角度提供数据

1)         创建视图

语法:

CREATE [OR REPLACE] [FORCE] VIEW

    view_name [(alias[, alias]...)]

  AS select_statement

  [WITH CHECK OPTION]

  [WITH READ ONLY];

示例:

CREATE VIEW stud_view

AS SELECT studno, studname, subno

FROM stud_details;

2)         视图上的DML语句

在视图上也可以使用修改数据的DML语句,如INSERT、UPDATE和DELETE

视图上的DML语句有如下限制:

  • l  只能修改一个底层的基表
  • l  如果修改违反了基表的约束条件,则无法更新视图
  • l  如果视图包含连接操作符、DISTINCT 关键字、集合操作符、聚合函数或 GROUP BY 子句,则将无法更新视图
  • l  如果视图包含伪列或表达式,则将无法更新视图

3)         视图中可以使用单行函数、分组函数和表达式

例:CREATE VIEW item_view AS

SELECT itemcode, LOWER(itemdesc) item_desc

FROM itemfile;

4)         删除视图

DROP VIEW toys_view;

4         索引

索引是与表相关的一个可选结构,用以提高 SQL 语句执行的性能,减少磁盘I/O,索引在逻辑上和物理上都独立于表的数据。

1)         创建标准索引

CREATE INDEX x_name ON t_student (f_name) TABLESPACE index_tbs;

2)         删除索引

DROP INDEX x_name;

3)         获取索引有关数据

与索引有关的数据字典视图有:

USER_INDEXES - 用户创建的索引的信息

USER_IND_PARTITIONS - 用户创建的分区索引的信息

USER_IND_COLUMNS - 与索引相关的表列的信息

 示例:SELECT INDEX_NAME, TABLE_NAME, COLUMN_NAME

     FROM USER_IND_COLUMNS

     ORDER BY INDEX_NAME, COLUMN_POSITION;

 

总结:

  • l  同义词是现有数据库对象的别名
  • l  序列用于生成唯一、连续的序号
  • l  视图是基于一个或多个表的虚拟表
  • l  索引是与表相关的一个可选结构,用于提高 SQL 语句执行的性能
posted @ 2017-08-08 16:23  silvan_happy  阅读(413)  评论(0编辑  收藏  举报