SQL 序列

创建序列的语法

create sequence 序列名称
[incremnet by 步长]
[start with 开始值]
[maxvalue 最大值 | nomaxvalue]
[minvalue 最小值 | nominvalue]
[cycle|nocycle][cache 缓存大小|nocach
创建序列
create sequence myseq;
查看序列
select * from user_sequences;
删除序列
drop sequence myseq;
序列操作:
通过nextval属性操作序列
select myseq.nextval from dual;
通过currval属性操作序列
select myseq.currval from dual;
当用户每次重复调用mysql.nextval操作序列的时候,序列都会自动地增长,而且增长的步长(INCREMENT_BY设置)为1,而当用户只调用myseq.currval操作序列时,无论调用多少次,都只会返回当前最后一次增长的序列值,不会进行增长
序列的属性
sequence_name:序列名称。
min_value:此序列开始的默认最小值(默认是0max_value:此序列开始的默认最大值(默认是99…99<27个>)
increment_by:序列每次增长的步长(默认是1)
cycle_flag:循环标记,y表示循环;n表示非循环。
cache_size:序列操作的缓存量(默认是20)。
last_number:最后一次操作的数值。
序列的使用:
member表的数据库创建脚本
范例:member表的数据库创建脚本
drop table member purge ;
create table member
(mid number ,name varchar2(50) not null ,constraint pk_mid primary key(mid));
通过数据字典查看member表是否已经成功创建
select * from tab ;
序列的使用
范例:编写数据插入语句,向member表中增加记录
insert into member (mid,name) values(myseq.nextval,‘vdata’) ;
范例:检索全部member表数据
select * from member;
序列的删除
范例:删除myseq序列
drop sequence myseq ;
范例:查询全部的序列
select * from user_ sequences;
序列的使用进阶:
1.设置序列的增长步长incremnet by:
范例:创建一个新的序列,让其每次的增长步长3
drop sequence myseq ;
create sequence myseq increment by 3 ;
范例:通过user_sequences数据字典查询序列是否已经成功创建
select sequence_name,increment_by from user_sequences ;
范例:调用nextval属性,操作序列(本语句将执行三次)
select myseq.nextval from dual ;
序列的使用进阶:
2.设置序列的初始值start with:
范例:创建序列,让其初始值设置为30,每次增长步长为2
drop sequence myseq ;
create sequence myseqincrement by 2 START with 30;

范例:操作myseq序列,调用三次nextval属性观察结果
select myseq.nextval from dual;

3.设置序列的缓存cache|nocache:
范例:创建序列,缓存设置为100
drop sequence myseq ;
create sequence myseq cache 100 ;
范例:通过user_sequences数据字典表,查询序列信息
select cache_ size,last_number from user_sequences;

序列的使用进阶:
3.设置序列的缓存cache|nocache:
范例:创建序列,不使用缓存

drop sequence myseq ;
create sequence myseq nocache ;
范例:通过user_sequences数据字典表,查询序列信息
select cache_ size,last_number from user_sequences;

序列的使用进阶:
4.设置循环序列:
CREATE sequence 序列名称[maxvalue 最大值 | nomaxvalue]
[minvalue 最小值 | nominvalue]
[cycle|NOCYCL

序列的使用进阶:
4.设置循环序列:
范例20:创建循环序列,让序列的内容在1、3、5、7、9之间循环
drop sequence myseq ;
create sequence myseqstart with 1INCREMENT by 2 MAXVALUE 9 MINVALUE 1 CYCLECACHE 3 ;
范例21:通过user_sequeces数据字典查询序列信息
select sequence_name,max_value,min_value,increment_by,cache_size from
user_sequences ;

序列的修改
alter sequence 序列名
[incremnet by 步长]
[start with 开始值]
[maxvalue 最大值 | nomaxvalue]
[minvalue 最小值 | nominvalue]
[cycle|nocycle][cache 缓存大小|nocach

序列的修改:
范例:创建一个基本序列
drop sequence myseq ;
create sequence myseq ;
范例:通过user_sequences数据字典查看所有序列
select * from user_ sequences;
序列的修改:
将每次增长的步长修改为10。将序列的最大值修改为98765.缓存修改为10
alter sequence myseq increment by 10 MAXVALUE 98765 CACHE 100 ;
范例:通过user_sequences数据字典查看所有序列
select * from user_ sequences

注意:不建议修改数据库对

系统重启后;myseq.nextnall 步长*默认内存+初始值
oracle重启后:myseq.nextnall 步长+上次值
start with
下个循环开始初始值始终唯一(若最小值设置了以最小值开始)

猜你喜欢

转载自blog.csdn.net/weixin_43274226/article/details/83281313