目录
1、视图
创建视图
CREATE [OR REPLACE] [FORCE] VIEW [IF NOT EXISTS] [<模式名>.]<视图名>
AS <查询表达式>
删除视图
DROP VIEW [IF EXISTS] [<模式名>.]<视图名> [RESTRICT | CASCADE];
参数 DROP_CASCADE_VIEW 值为 1 时,如果在该视图上建有其它视图,必须使用 CASCADE 参数才可以删除所有建立在该视图上的视图。为 0 时,RESTRICT 和 CASCADE 方式都会成功,且只会删除当前视图。
编译视图
ALTER VIEW [<模式名>.]<视图名> COMPILE;
2、序列
序列是一个数据库实体,通过它多个用户可以产生唯一整数值,可以用序列来自动地生成主关键字值。
1.CURRVAL 返回当前的序列值;
2.NEXTVAL 如果为升序序列,序列值增加并返回增加后的值;如果为降序序列,序列值减少并返回减少后的值。
语法格式:
CREATE SEQUENCE [IF NOT EXISTS] [<模式名>.]<序列名> [<序列选项列表>];
<序列选项列表> ::= <序列选项>{<序列选项>}
<序列选项> ::=
INCREMENT BY <增量值>|
START WITH <初值>|
MAXVALUE <最大值>|
NOMAXVALUE|
MINVALUE <最小值>|
NOMINVALUE|
CYCLE|
NOCYCLE|
CACHE <缓存值>|
NOCACHE|
ORDER |
NOORDER |
GLOBAL |
LOCAL
参数
1.<模式名> 指明被创建的序列属于哪个模式,缺省为当前模式;
2.<序列名> 指明被创建的序列的名称,序列名称最大长度 128 字节;
3.<增量值> 指定序列数之间的间隔,这个值可以是[-9223372036854775808,9223372036854775807]之间任意的 DM 正整数或负整数,但不能为 0。如果此值为负,序列是下降的,如果此值为正,序列是上升的。如果忽略 INCREMENT BY 子句,则间隔缺省为 1。增量值的绝对值必须小于等于(<最大值> - <最小值>);
4.<初值> 指定被生成的第一个序列数,可以用这个选项来从比最小值大的一个值开始升序序列或比最大值小的一个值开始降序序列。对于升序序列,缺省值为序列的最小值,对于降序序列,缺省值为序列的最大值;
5.<最大值> 指定序列能生成的最大值,如果忽略 MAXVALUE 子句,则降序序列的最大值缺省为-1,升序序列的最大值缺省为 9223372036854775807(0x7FFFFFFFFFFFFFFF),若指定的最大值超出缺省最大值,则 DM 自动将最大值置为缺省最大值。非循环序列在到达最大值之后,将不能继续生成序列数;
6.<最小值> 指定序列能生成的最小值,如果忽略 MINVALUE 子句,则升序序列的最小值缺省为 1,降序序列的最小值缺省为-9223372036854775808(0x8000000000000000),若指定的最小值超出缺省最小值,则 DM 自动将最小值置为缺省最小值。循环序列在到达最小值之后,将不能继续生成序列数。最小值必须小于最大值;
7.CYCLE 该关键字指定序列为循环序列:当序列的值达到最大值/最小值时,序列将从最小值/最大值计数;
8.NOCYCLE 该关键字指定序列为非循环序列:当序列的值达到最大值/最小值时,序列将不再产生新值;
9.CACHE 该关键字表示序列的值是预先分配,并保持在内存中,以便更快地访问;<缓存值>
10.NOCACHE 该关键字表示序列的值是不预先分配;
11.ORDER 该关键字表示以保证请求顺序生成序列号;
12.NOORDER 该关键字表示不保证请求顺序生成序列号;
13.GLOBAL 该关键字表示 MPP 环境下序列为全局序列,缺省为 GLOBAL;
14.LOCAL 该关键字表示 MPP 环境下序列为本地序列。
SQL> create table IDENT_TABLE_2(id int);
操作已执行
已用时间: 6.586(毫秒). 执行号:616.
SQL> create sequence SEQ_TEST increment by 10;
操作已执行
已用时间: 5.901(毫秒). 执行号:617.
SQL> insert into IDENT_TABLE_2 values(SEQ_TEST.nextval);
影响行数 1
已用时间: 2.570(毫秒). 执行号:618.
SQL> select * from IDENT_TABLE_2;
行号 ID
---------- -----------
1 1
已用时间: 0.721(毫秒). 执行号:619.
SQL> insert into IDENT_TABLE_2 values(SEQ_TEST.nextval);
影响行数 1
已用时间: 0.226(毫秒). 执行号:620.
SQL> select * from IDENT_TABLE_2;
行号 ID
---------- -----------
1 1
2 11
已用时间: 0.655(毫秒). 执行号:621.
3、同义词
同义词(Synonym)让用户能够为数据库的一个模式下的对象提供别名。
语法格式:
CREATE [OR REPLACE] [PUBLIC] SYNONYM [IF NOT EXISTS] [<模式名>.]<同义词名> FOR [<模式名>.]<对象名>
删除同义词
DROP [PUBLIC] SYNONYM [IF EXISTS] <同义词名>
4、查看定义信息
视图、序列以及同义词的定义信息可以通过查看系统表 SYSOBJECTS 和 SYSTEXTS 得到,如查看普通视图 view_1 的信息,可以执行:
SELECT b.* FROM SYS.SYSOBJECTS a, SYS.SYSTEXTS b WHERE a.ID = b.ID and a.NAME LIKE 'VIEW_1%';
视图的定义信息:
CALL SP_VIEWDEF('SYSDBA', 'VIEW1');