Oracle 序列 sequence

一、序列

(一)序列定义

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

(二)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','语文',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 序列号;

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值