数据库对象
本节要点:
- 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 语句执行的性能