您的位置:首页 > 数据库 > Oracle

Oracle 序列 sequence

2017-01-23 17:46 435 查看
一、序列

(一)序列定义

序列是一种用于产生唯一数字列值得数据库对象,一般使用序列自动地生成主码键或唯一键值,序列可以是升序或降序。

(二)NEXTVAL和CURRVAL伪列

可用语句sequence_name.currval和sequence_name.nextval来访问序列

currval:获取当前序列值;

nextval:返回下一个有效地序列值;

currval和nextval都返回number值;

currval能被引用之前,必须使用nextval产生一个序列值;

二、序列特点

可以自动产生唯一数值;

可被多个用户共享;

典型应用是生成主键值,用于标识记录的唯一性,但不保证其值是连续的,可能是中间回滚了;

使用缓存加速序列的访问速度。

三、序列操作

(一)创建序列

--创建序列test_sequence
CREATE SEQUENCE test_sequence
START WITH 10   --序列从10开始
INCREMENT BY 2  --序列每次增加2
MAXVALUE 100    --序列最大值100
MINVALUE 1      --序列最小值1
CYCLE           --序列循环,每次增加2,一直到100后回到9重新开始
CACHE 10;       --缓存中序列值个数为10


(二)序列使用

1、确定要用到序列的表是什么表

--创建学生表
CREATE  TABLE  STUDENT
(
SNO NUMBER(4) PRIMARY KEY,
SNAME VARCHAR2(20) NOT NULL,
COURSE VARCHAR2(20),
GRADE NUMBER(3)
)




2、创建序列

--创建序列STUDENT_SEQUENCE
CREATE  SEQUENCE STUDENT_SEQUENCE
START WITH 1020  --序列从1000开始
INCREMENT BY 1   --序列每次增加1


3、使用序列

--使用序列STUDENT_SEQUENCE生成STUDENT表中SNO列插入值
INSERT INTO STUDENT
VALUES(STUDENT_SEQUENCE.NEXTVAL,'TOM','语文',85);

INSERT INTO STUDENT
VALUES(STUDENT_SEQUENCE.NEXTVAL,'JIM','数学',100);

INSERT INTO STUDENT
VALUES(STUDENT_SEQUENCE.NEXTVAL,'JIM',
9bb4
'语文',99);

SELECT * FROM STUDENT;




4、查看当前序列值

--查看序列STUDENT_SEQUENCE序列当前值
SELECT STUDENT_SEQUENCE.CURRVAL FROM DUAL;




(三)修改序列

修改序列的要求

1、必须是序列的所有者或者ALTER ANY SEQUENCE权限才能修改序列;

2、除了START WITH不能修改,其他的都能改,直接给值就可以了;

3、最大值不能小于已经分配的序列值。



(四)删除序列

删除序列必须是序列的所有者或者具有drop any sequence权限的用户才能完成。

DROP SEQUENCE 序列号;


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: