Oracle序列

一,序列的作用与创建
作用:可以自动的按照既定的规则实现数据的编号操作
创建语法:
create sequence 序列名称
    [increment by 步长] --每次增长的大小
    [start with 开始值]
    [maxvalue 最大值|nomaxvalue]
    [minvalue 最小值|nominvalue]
    [cycle|nocycle]    --循环
    [cache 缓存大小|nocache]; --cache保存的是个数
    
1,默认序列:所有选项均是默认值,最小值是0,最大值表示无限大
语法:
create sequence 序列名称
要使用一个已经创建完成的序列,则可以使用序列中提供的两个伪列进行操作:
序列名称.currval:表示取得当前序列已经增长的结果,重复调用多次后序列内容不会有任何变化,同时当前序列的大小(last_number)不会改变;
序列名称.nextval:表示取得一个序列的下一次增长值,每次调用一次,序列都会自动增长;
注意:对于给出的伪列,一定是先使用nextval,之后才能使用currval,也就是只有在执行了nextval之后序列才能真正进入到了可用状态。如果设置了缓存,当数据库出现问题,那么有可能这些缓存的数据就会消失了,如果再次使用,就可能出现跳号问题。

2,删除序列
语法:
drop sequence 序列名称

3,创建特殊功能的序列
循环序列:让序列内容在1,3,5,7,9之间循环
create sequence myseq
    increment by 2
    start with 1
    maxvalue 10
    minvalue 1
    cycle
    cache 3;
注意cache值必须小于cycle所有值,cache默认为20,此处cycle只有五个值
修改序列:
alter sequence 序列名称
    [increment by 步长] 
    [maxvalue 最大值|nomaxvalue]
    [minvalue 最小值|nominvalue]
    [cycle|nocycle]    --循环
    [cache 缓存大小|nocache]; 
    
4,自动序列(Oracle12c)
create table 表名称(
    列名称   类型    generated by default as identity([increment by 步长]
                                [start with 开始值]
                                [maxvalue 最大值|nomaxvalue]
                                [minvalue 最小值|nominvalue]
                                [cycle|nocycle]    --循环
                                [cache 缓存大小|nocache]),
    
    列名称   类型,...
);
 

Oracle据库中,序列Sequence)是一种用于生成唯一值的据库对象,通常用于为表的主键列提供自增功能。由于Oracle不支持自增列,因此序列是实现主键自增的主要手段之一。以下是关于序列的创建使用方法的详细介绍: ### 创建序列 创建序列使用`CREATE SEQUENCE`语句,可以指定多个参来控制序列的行为。以下是一个创建序列的示例: ```sql CREATE SEQUENCE emp_seq MINVALUE 1 MAXVALUE 9999999999999999999999999 START WITH 1 INCREMENT BY 1 CACHE 20; ``` - `MINVALUE`:指定序列的最小值。 - `MAXVALUE`:指定序列的最大值。 - `START WITH`:指定序列的起始值。 - `INCREMENT BY`:指定每次生成的步长,可以是正或负。 - `CACHE`:指定缓存序列量,以提高性能[^3]。 ### 使用序列 创建序列后,可以通过以下两种方式获取序列的值: - `NEXTVAL`:生成序列的下一个值。 - `CURRVAL`:获取当前的序列值。 在插入据时,可以使用`NEXTVAL`来生成主键值。例如: ```sql INSERT INTO employees (id, name) VALUES (emp_seq.NEXTVAL, 'John Doe'); ``` 在查询当前序列值时,可以使用`CURRVAL`: ```sql SELECT emp_seq.CURRVAL FROM dual; ``` ### 查询序列信息 可以通过查询`USER_SEQUENCES`视图来查看序列的相关信息,例如最小值、最大值、增量等: ```sql SELECT sequence_name, min_value, max_value, increment_by FROM user_sequences WHERE lower(sequence_name) = 'emp_seq'; ``` 这将返回指定序列的详细信息[^4]。 ### 管理序列 序列可以通过`ALTER SEQUENCE`语句进行修改,例如更改步长或最大值: ```sql ALTER SEQUENCE emp_seq INCREMENT BY 2; ``` 如果不再需要某个序列,可以使用`DROP SEQUENCE`语句删除它: ```sql DROP SEQUENCE emp_seq; ``` 通过这些操作,可以有效地创建、使用管理Oracle据库中的序列,以满足不同应用场景的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值