概念:
模拟自增操作,本质是内存中的数组,数组长度默认是20;
[1,2,3,4,…20] [21,22,…40]
语法:
create sequence 系列名
increment by 步长
start with 起始值
maxvalue(适用于循环序列) | nomaxvalue
minvalue | nominvalue
cycle | nocycle(循环序列)
cache n |no cache
属性:
currval:当前值
nextval:下一个值
先nextval再currval;序列是连续的,不会清零;
--创建序列myseq
SQL> create sequence myseq increment by 1 start with 500;
--查看用户下的所有序列
SQL> select *from user_sequences;
SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER
------------------------------ ---------- ---------- ------------ - - ---------- -----------
MYSEQ 1 1.0000E+28 1 N N 20 500
序列已创建。
--序列的运用
SQL> select myseq.nextval,myseq.currval,ename,sal from emp;
NEXTVAL CURRVAL ENAME SAL
---------- ---------- ---------- ----------
500 500 SMITH 1200
501 501 ALLEN 2000
502 502 QINJIALI_3 1650
503 503 JONES 4575
504 504 MARTIN 1650
505 505 BLAKE 4450
506 506 CLARK 4050
507 507 SCOTT 3400
508 508 KING 7000
509 509 TURNER 1900
510 510 ADAMS 1500
511 511 JAMES 1350
512 512 FORD 3400
513 513 MILLER 1700
已选择14行。
--increment by 2 步数是2;
--start with 初始值是1
--maxvalue 9 最大值是9
--minvalue 最小值是1
--cycle 周期
--cache 3 3个一组,个数必须小于元素的个数;
SQL> create sequence myseq2 increment by 2 start with 1 maxvalue 9 minvalue 1 cycle cache 3;
序列已创建。
修改序列
alter sequence 系列名
increment by 步长
start with 起始值
maxvalue(适用于循环序列) | nomaxvalue
minvalue | nominvalue
cycle | nocycle(循环序列)
cache n |no cache
切记:初始值不准修改哦!!
删除序列
drop sequence 序列名;