序列的创建和使用

本文介绍了如何在Oracle中使用序列来实现数据表主键的自动增长,详细讲解了创建序列的基本语法,包括指定开始值和增长步长。通过设置,序列可以从指定数值开始,并按特定步长递增,简化了主键维护的操作。

序列的使用:

在每张数据表都有一个字段作为数据的唯一区分标志,而且该字段的数据不能重复,这个字段叫作数据表的主键

INSERT INTO myemp(empno,ename,job) 
VALUES(1001,'张三-1','职员');
INSERT INTO myemp(empno,ename,job) 
VALUES(1001,'张三-2','职员');
INSERT INTO myemp(empno,ename,job) 
VALUES(1001,'张三-3','职员');

以上需要手动修改主键值,此时操作会变得麻烦,可以使用Oracle的序列实现主键的自增长,要使用序列集需要先创建序列,基本的语法:

--删除序列
DROP SEQUENCE 序列名称;

--创建序列
CREATE SEQUENCE 序列名称;

--使用序列
INSERT INTO myenp(empno,ename,job) 
VALUES(序列名.nextval,'张三-1','职员');

--删除序列
DROP SEQUENCE empno_sequence;

--创建序列
CREATE SEQUENCE empno_sequence;

--使用序列
INSERT INTO myenp(empno,ename,job) 
VALUES(empno_sequence.nextval,'张三-1','职员');

INSERT INTO myenp(empno,ename,job) 
VALUES(empno_sequence.nextval,'张三-2','职员');

INSERT INTO myenp(empno,ename,job) 
VALUES(empno_sequence.nextval,'张三-3','职员');

以上使用序列实现了主键值的自动增长,但是是从1开始增长,我们也可以指定从需要的数字开始增长,需要在创建序列的时候指定开始值

删除数据表:
DROP TABLE 表名称;
此时表删除了但是还在回收站

查看回收站:
SHOW RECYCLEBIN;

清空回收站:
PUBGE RECYCLEBIN;

那么如何让删除数据表的时候直接从回收站也同时删除呢?

彻底删除数据表:
DROP TABLE 表名称 PURGE;

指定序列的开始值:

--删除序列
DROP SEQUENCE empno_sequence;

--创建序列
CREATE SEQUENCE empno_sequence START WITH 1001;

--删除数据表
DROP TABLE myemp PURGE;

--复制数据表
CREATE TABLE myemp AS SELECT * FROM emp;

--使用序列
INSERT INTO myenp(empno,ename,job) 
VALUES(empno_sequence.nextval,'张三-1','职员');
INSERT INTO myenp(empno,ename,job) 
VALUES(empno_sequence.nextval,'张三-2','职员');
INSERT INTO myenp(empno,ename,job) 
VALUES(empno_sequence.nextval,'张三-3','职员');

除了可以指定开始值之外还可以指定每条数据增长的步长

指定步长:

--删除序列
DROP SEQUENCE empno_sequence;

--创建序列
CREATE SEQUENCE empno_sequence 
INCREMENT BY 10 START WITH 1001;

--删除数据表
DROP TABLE myemp PURGE;

--复制数据表
CREATE TABLE myemp AS SELECT * FROM emp;

--使用序列
INSERT INTO myenp(empno,ename,job) 
VALUES(empno_sequence.nextval,'张三-1','职员');
INSERT INTO myenp(empno,ename,job) 
VALUES(empno_sequence.nextval,'张三-2','职员');
INSERT INTO myenp(empno,ename,job) 
VALUES(empno_sequence.nextval,'张三-3','职员');

以上的开始值不是我们自己指定,这是系统的默认原因,切换到SYS用户下执行
“ALTER SYSTEM SET deferred_segment_creation=FALSE;”

切换到超级管理员用户下:
CONN SYS/CHANGE_ON_INSTALL AS SYSDBA;

执行命令:
"ALTER SYSTEM SET deferred_segment_creation=FALSE;"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值