oracle创建序列

oracle创建序列

00-查看当前用户创建的序列

SELECT * FROM user_sequences;

在这里插入图片描述

01-创建序列

--01-创建序列
/*
语法:
CREATE SEQUENCE 序列名称
START WITH 开始位置
INCREMENT BY 增长频次
MAXVALUE 最大值| NOMAXVALUE --最大值/无最大值
MINVALUE 最小值| NOMINVALUE --最小值/无最小值
CYCLE | NOCYCLE --是否循环
CACHE 缓存数量| NOCACHE --是否缓存

*/
CREATE SEQUENCE seq_xl
START WITH 20240000
INCREMENT BY 1
NOMAXVALUE
NOMINVALUE
NOCYCLE
NOCACHE;

--使用序列
select seq_xl.nextval from dual;
--查看当前使用的序列
select seq_xl.currval from dual;

在这里插入图片描述

02-创建序列方法二

PL/SQL Developer
在这里插入图片描述
效果
在这里插入图片描述
查看创建序列语法
在这里插入图片描述

03-序列使用

SELECT * FROM a1;

INSERT INTO a1 VALUES(SEQ_XL.Nextval,'乒乓球');

SELECT * FROM a1;

在这里插入图片描述

04-删除序列

PL/SQL Developer
在这里插入图片描述

SELECT * FROM User_Sequences;

DROP SEQUENCE SEQ_XL_ID;

SELECT * FROM User_Sequences;

在这里插入图片描述

Oracle 数据库中,序列(Sequence)用于生成唯一数值,通常用作表的主键值。由于 Oracle 没有自增字段(如 SQL Server 中的 `IDENTITY`),因此需要通过创建序列来实现类似功能。 ### 创建序列的语法如下: ```sql CREATE SEQUENCE sequence_name START WITH start_value INCREMENT BY increment_value MAXVALUE max_value | NOMAXVALUE MINVALUE min_value | NOMINVALUE CYCLE | NOCYCLE CACHE cache_value | NOCACHE; ``` #### 参数说明: - **sequence_name**:要创建序列名称。 - **START WITH**:指定序列的初始值,默认为 1。 - **INCREMENT BY**:定义序列的增长步长,正值表示递增,负值表示递减,默认为 1。 - **MAXVALUE**:设置序列的最大值;若使用 `NOMAXVALUE`,则表示没有最大限制(默认上限为 10^27)[^1]。 - **MINVALUE**:设置序列的最小值;若使用 `NOMINVALUE`,则表示没有最小限制(默认下限为 1 或 -10^26 对于负步长)[^1]。 - **CYCLE**:当序列达到最大或最小值后是否循环;`NOCYCLE` 表示不循环(默认行为)。 - **CACHE**:定义缓存中预分配的序列号数量以提高性能;`NOCACHE` 表示不缓存。 ### 示例:创建一个简单的递增序列 ```sql CREATE SEQUENCE emp_seq START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE; ``` 此语句将创建名为 `emp_seq` 的序列,从 1 开始,每次增加 1,不缓存也不循环。 ### 使用序列 创建完成后,可以通过以下方式使用序列值: - **NEXTVAL**:获取序列的下一个值。 - **CURRVAL**:获取当前的序列值(必须先调用过 `NEXTVAL` 才能使用)。 例如,在插入数据时使用序列: ```sql INSERT INTO employees (id, name) VALUES (emp_seq.NEXTVAL, 'John Doe'); ``` 查询当前序列值: ```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'; ``` 该查询将返回序列 `emp_seq` 的基本信息,包括最小值、最大值和增长步长[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值