序列
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;