Oracle序列

Oracle序列

序列: 是一个能够生成唯一值的数据库对象。
使用序列可以实现主键的自增长。

--1)在实际开发中,一个序列就对应这一张表的主键列。
--2)虽然序列可以保证唯一性,但是并不保证序列是连续的。
--因为序列是可以设置步长且可以进行过修改的.
create sequence 序列名
[start with n]  --序列的开始值,默认为1
[increment by n] --序列的步长,默认为1
[minvalue n]  --最小值,默认为1
[maxvalue n] --最大值,没有限制
[nocycle|cycle] –是否循环生成序列,默认nocycle
[cache n];  --预先生成n个序列值保存缓存中,默认值为20
--创建序列:
create sequence seq_test1;

--获取序列的值:
/*
查看当前值:序列名称.currval         
新创建的序列:查看当前的值之前,必须先执行一次nextval

生成并返回下一个序列值:序列名称.nextval       
每执行一次,这个值都会加一
*/

--会报错 --查看当前的值之前,必须先执行一次nextval
select seq_test1.currval from dual;


--新创建的序列:要先执行一次nextval才能查询当前值
select seq_test1.nextval from dual;

select seq_test1.currval from dual;



--使用序列实现表主键的自增长: 
--先用create语句创建出序列,然后用insert into语句根据表主键的字段将序列插入.

--插入
--使用序列实现主键的自增长:
insert into emp (empno,ename) 
values (seq_test1.nextval,'aaa');
commit;

select * from emp;


--序列的完整语法:了解
/*
create sequence 序列名称
start with 3     :初始值
increment by 3   :步长
maxvalue 20  :最大值
cycle     :开启循环
cache 5 ; 缓存5个
*/

create sequence seq_test2
start with 3
increment by 3
maxvalue 20
cycle  
cache 5; 


--循环回来都是从1开始
select seq_test2.nextval from dual;

修改序列

alter sequence 序列名
[increment by n] --序列的步长,默认为1
[minvalue n]  --最小值,默认为1
[maxvalue n] --最大值,没有限制
[nocycle|cycle] --是否循环生成序列,默认nocycle
[cache n];  --预先生成n个序列值保存缓存中,默认值为20
--不能够修改序列的开始值。

--修改序列
alter sequence seq_emp_empno
increment by 2
minvalue 50
maxvalue 2000
cycle
cache 50;

删除序列

drop sequence 序列名;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值