一、序列(sequence)
序列是Oracle中特有的对象, 用于生成一个自动递增的数列. 通常被用来作为主键的值.
二、 创建序列
a) 语法
create sequence seq_name [increment by n start with n maxvalue n|nomaxvalue // 10^27 or -1 minvalue n|nominvalue cycle|nocycle cache n|nocache] |
- Ø increment by, 代表每次增长的步长, 默认是1, 可以是负数, 表示每次递减;
- Ø start with, 从哪个值开始, 默认是1;
- Ø maxvalue, 序列能到达的最大值, 默认值是nomaxvalue, 此时正数最大值是10^27, 负数最大值是-1;
- Ø minvalue, 序列能到达的最小值, 默认值是nominvalue, 此时正数的最小值是1, 负数的最小值是-10^26;
- Ø cycle|nocycle, 表示是否循环. 如果是cycle, 达到最大值是会重新从头开始, 如果是nocycle, 最大值后会报错.
- Ø cache n|nocache, 表示高速缓存, 可以优化序列, 缓存的默认值是20. nocache表示没有缓存.
b) 创建学生序列
create sequence seq_student; |
三、 序列的使用
3.1 nextval(序列的下一个值)
查看序列的下一个值
select seq_student.nextval from dual; |
3.2 currval(序列的当前值)
查看序列的当前值
select seq_student.currval from dual; |
3.3 在插入数据时使用序列
insert into student values (seq_student.nextval, '小红', '女', 19, sysdate, 'hong@sxt.com', 102); |
四、 删除序列
drop sequence seq_student; |
五、 修改序列:alter sequence xxxx
1 alter sequence student_id -- 序列名 也可以更改 2 minvalue 1 3 maxvalue 99999 4 start with 1 5 increment by 1 6 cycle -- 到99999后,从头开始 7 nocache;
注:
1、如果想要改变start的值,必须 drop sequence 再重建一个序列
2、如果想要改变minvalue的值,必须删除序列后再重新建立序列化。不可以修改序列化的minvalue。