2018-07-12 14:07:44
序列
序列
1、创建序列
create sequence 序列名
[increment by n] ---步长
[start with n] ---序列的起始值 序列创建后第一次使用的第一个值
[minvalue n] ---序列的最小值
[maxvalue n] ---序列的最小值
[cycle] ---序列的设置循环取值标志
[cache n] ---序列缓存的个数
---所有属性都为默认值
create sequence myseq;
---设置属性为指定值的序列
create sequence seq
increment by 5
start with 10
minvalue 5
maxvalue 50
cycle
cache 5
两个属性:
currval:取序列当前值
nextval:序列的下一个值
语法:序列名.属性名
注意:必须先用nextval生成第一个序列值才可以使用该序列
select myseq.nextval from dual;
select myseq.currval from dual;
create table aaa(
id number(5) primary key
);
insert into aaa values (seq.nextval) ;
select * from aaa;
2、修改序列
1、创建序列
alter sequence 序列名
[increment by n] ---步长
---[start with n] ---序列的起始值 序列创建后第一次使用的第一个值
[minvalue n] ---比原来的大
[maxvalue n] ---比原来的大
[cycle]
[cache n]
3、删除序列
drop sequence 序列名;
drop sequence seq;
insert into aaa values (seq.nextval) ;
select * from aaa;
---练习
1.创建一个序列,该序列起始值从1开始,无最大值,增量是1,不循环。
create sequence myseq
increment by 1
start with 1
2.查询序列的当前值及下一个值
select myseq.nextval from dual;
select myseq.currval from dual;
3.使用第1题所建的序列,向部门表中插入两条记录,部门编号使用序列值,
部门名称分别为:Education、Market,城市分别为:DALLAS、WASHTON
insert into dept values(myseq.nextval,'Education','DALLAS');
insert into dept values(myseq.nextval,'Market','WASHTON');