序列的定义
序列是一种可被多个用户使用的用于产生一系列唯一数字的数据库对象。
使用序列的优点
①没有磁盘I/O或事物的开销
②提高事物处理的吞吐量,使用户等待的时间明显缩短。因为序列避免在多个用户互相等待生成和使用序列号时产生的串行化现象。
序列的存储
序列定义存储在数据字典中。
创建序列
语法:
Create sequence [模式.]序列名称
Start with 起始数字
Increment by 增量
Maxvalue 最大值 | nomaxvalue
Minvalue 最小值 | nominvalue
Cycle | nocycle
Cache 数目 | nocache
Order | noorder;
实例
create sequence incrnum
start with 1
increment by 1
nomaxvalue;
Sql developer将其转化为:
-- Create sequence
create sequence INCRNUM
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
cache 20;
我们可以通过两个伪列来应用序列,他们是nextval(下一个值)和currval(当前值)。
Nextval或currval使用的场合:
①insert语句的values子句中
②select语句的前面选择的表列明中
③update语句的set子句
Nextval或currval不能使用的场合:
①子查询
②视图或快照的定义查询
③带有distinct操作符的select语句
④带有group by或order by子句的select语句
⑤通过union、intersect或minus与另一个select语句想结合的select语句中
⑥select语句的where中
⑦create table或alter table语句中的一个表列的default值定义中
⑧检查约束的条件中
删除序列命令:
Drop sequence sequenceName;