提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
序列
前言
提示:这里可以添加本文要记录的大概内容:
12c中的自动增长(约束)
在建表时创建
generated by default as identity
create table student(sid number(3) generated by default as identity,sname varchar2(10));
默认情况下,oracle数据表中自增的初始值是1,每新增一条记录,字段值会自动加1.
一个数据表只能有一个字段使用自增约束,且该字段必须为主键的一部分
可以设置初始值和步长值
可以把身份列设置为主键: Create table 表名(字段名1 数据类型 generated by default as identity primary key,字段名2 数据类型……) 设置为主键后,不允许重复
可以省略by default,此时不允许手动插入数据
一、序列的概念
是数据库对象。
用于产生一系列唯一的数字值
序列号的生成独立于表
同一序列生成器可用于一个或多个表
经常用来产生主键值
二、创建序列
用create sequence语句创建序列
CREATE SEQUENCE 序列名
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}];
创建一个名称为dept_seq的序列,可以给dept表的主键提供值。
create sequence dept_seq
increment by 10
stary with 50
maxvalue 100 cycle nocache;
三、查看序列
使用视图user_sequences可以查到序列信息。
desc user_sequences;
select sequence_name,min_value,max_value,cache_size from user_sequences;
四、使用序列
1.NEXTVAL与CURRVAL伪列
NEXTVAL 返回下一个有效的序列值.
每执行一次会返回一个新的数值。
CURRVAL返回当前的序列值.
2.创建表时,指定默认值为序列值
create table student(sid number default seq_1.nextval,sname varchar2(10));
3.修改表时,指定默认值为序列值
alter table student modify sid number default seq1_.nextval;
4.通过插入记录使用序列
insert into dept values(myseq.nextval,‘MARKETING’,‘SHANDONG’);
五、修改序列
可以修改增量值,最大值,最小值,循环选项,缓存选项
alter sequence dept_deptno
increment by 1
maxvalue 999999
nocache
nocycle;
不可以修改初始值
六、删除序列
使用drop sequence 语句删除序列
drop sequence dept_seq;
七、练习
create sequence seq1;
create sequence seq3 start with 5 increment by 5 maxvalue 100 cycle cache 10;
select seq1.nextval from dual;
select seq1.currval from dual;
create table stu(sid number default dept_seq.nextval,sname varchar2(20));
insert into stu(sname) values(‘dd’);
select * from stu;