一、什么是序列
序列是用于生成唯一、连续序号的对象。序列可以是升序的,也可以是降序的,Oracle用户想创建序列必须有创建序列的角色权限。
二、创建序列的SQL语法
创建序列:CREATE SEQUENCE SEQ_NAME START WITH n INCREMENT BY n2 MAXVALUE n3 MINVALUE n4 NOCYCLE(或者CYCLE) CACHE n5
删除序列:DROP SEQUENCCE SEQ_NAME
查看序列的当前值:SELECT SEQ_NAME.CURRVAL FROM DUAL(第一次查看序列中的值时候,只能使用NEXTVAL查看,不曾使用CURRVAL)
查看序列的下一个值:SELECT SEQ_NAME.NEXTVAL FROM DUAL
(1)SEQ_NAME:序列对象名
(2)n:第一个开始的序号
(3)n2:序号之间的间隔
(4)n3:序号的最大值
(5)n4:序号的最小值
(6)n5:指定内存中预先分配的序号个数,从当前序号开始算起个数(Oracle11gR2中默认为20)
(7)NOCYCLE:表示在达到最大值后停止生成下一个值
(8)CYCLE:表示在达到最大值后继续循环从n开始生成序号
(9)必须满足的条件:n>=n4,n<=n3,n3>=n4,n5<=(n3-n)
三、效果演示
1、创建一个序列名SEQ_1开始值为1,最大值为5,并且依次递增1 NOCYCLE,SQL语句如下:
1 CREATE SEQUENCE SEQ_1 START WITH 1 INCREMENT BY 1 MAXVALUE 5 MINVALUE 1 NOCYCLE CACHE 10;
如图1-1所示,成功创建序列SEQ_1,并且第一次查看序列中的值只能用NEXTVAL。如图1-2所示,当序列值达到最大值5时,停止生成下一个值
图 1-1
图 1-2
2、创建一个序列名SEQ_2开始值为1,最大值为5,并且依次递增1 CYCLE,SQL语句如下:
1 CREATE SEQUENCE SEQ_2 START WITH 1 INCREMENT BY 1 MAXVALUE 5 MINVALUE 1 CYCLE CACHE 4;
如图2-1所示,成功创建序列SEQ_1,查看序列当前值用CURRVAL。如图2-2所示,当序列值达到最大值5时,循环生成开始值
图 2-1
图 2-2
3、删除序列SEQ_1、SEQ_2,如图3-1所示
图 3-1
明天又要上班了,呜呜呜呜呜。。。。