Oracle--序列

序列

  Oracle中在增加一条数据时,为了实现自增长,需要使用序列。

创建数字, 应用在 id列, 这一列,是数字, 唯一的, 使用序列来产生,不需要人工添加,  后一个值 是在前一个值的基础上加增量(默认1)

创建序列:

create sequence 序列名
        [INCREMENT BY n]            //每次增长值, 默认加1
         [START WITH n]                //起始值  默认从1
        [{MAXVALUE n| NOMAXVALUE}]        //最大值  
        [{MINVALUE n| NOMINVALUE}]        //最小值  默认1

例:

create sequence myseq
     minvalue 1
     maxvalue 1000
     start with 1
     increment by 1
     cache 20;

-- 一般直接创建
create sequence  seq_stuno;

序列的使用:

1.nextval ,让序列产生一个数值

--序列的属性:  获取下一个值  nextval   序列名.nextval;
-- 每调用一次, 这个序列产生一个数字, 下一个数字是在前一个数字的基础+ 1
select seq_stuno.nextval from dual;

--在表插入数据的时候,给id列赋值 
insert into tb_student values(seq_stuno.nextval,'李四',1);

2. currval当前正在使用的序列值(不会让序列产生值),必须在序列使用(nextval)之后才有

--查看当前产生的值  currval 属性, 不能产生值, 只是查看当前序列产生的值
select  seq_stuno.currval from dual;

3.删除序列,删除序列不会删除序列已产生的值

drop sequence myseq;
--经验: 一个序列可以被多张表一起使用,id值不会连续,
-- ***推荐每一张表都有自己的序列  ***
insert into tb_class values(seq_stuno.nextval,'二年级一班');
create sequence seq_cid  START WITH 8  ;
select seq_cid.nextval from dual;