Oracle 序列 sequence

来源:互联网 发布:网络dns未响应怎么解决 编辑:程序博客网 时间:2024/06/06 14:15

一、序列

(一)序列定义

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

(二)NEXTVAL和CURRVAL伪列

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

currval:获取当前序列值;

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

currval和nextval都返回number值;

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

二、序列特点

可以自动产生唯一数值;

可被多个用户共享;

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

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

三、序列操作

(一)创建序列

--创建序列test_sequenceCREATE SEQUENCE test_sequenceSTART WITH 10   --序列从10开始INCREMENT BY 2  --序列每次增加2MAXVALUE 100    --序列最大值100MINVALUE 1      --序列最小值1CYCLE           --序列循环,每次增加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_SEQUENCECREATE  SEQUENCE STUDENT_SEQUENCESTART WITH 1020  --序列从1000开始INCREMENT BY 1   --序列每次增加1

3、使用序列

--使用序列STUDENT_SEQUENCE生成STUDENT表中SNO列插入值INSERT INTO STUDENTVALUES(STUDENT_SEQUENCE.NEXTVAL,'TOM','语文',85);INSERT INTO STUDENTVALUES(STUDENT_SEQUENCE.NEXTVAL,'JIM','数学',100);INSERT INTO STUDENTVALUES(STUDENT_SEQUENCE.NEXTVAL,'JIM','语文',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 序列号;

这里写图片描述

0 0
原创粉丝点击