序列的创建

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值