SQL语法-序列

一般情况下,每张数据表都会有一个字段作为数据的唯一区分标志,且该字段的数据不能重复,这个字段叫做数据表的主键,之前在数据表中插入数据需要手动处理,确保主键的唯一性,现在可以通过使用序列实现主键的自增长
基本语法

--删除序列
DROP SEQUENCE 序列名称
--创建序列
CREATE SEQUENCE 序列名称
--使用序列
INSERT INTO myemp(empno, ename, job) VALUES(序列名.nextval,'张三-1','职员');
INSERT INTO myemp(empno, ename, job) VALUES(序列名.nextval,'张三-2','职员');
INSERT INTO myemp(empno, ename, job) VALUES(序列名.nextval,'张三-3','职员');

以上使用序列实现了主键值的自增长,但是是从1开始,实际赋值后运行结果如下图:
在这里插入图片描述
可以为序列指定初始值,并且可以指定步长
在此之前,先删除之前创建好的表
使用DROP TABLE 表名称删除,但这样数据表会被存放在数据库的回收站中,使用PURGE RECYCLEBIN可以清空回收站,也可以使用以下语句直接彻底删除数据表

DROP TABLE 表名称 PURGE;

DEMO 指定序列的开始值和步长

--删除序列
DROP SEQUENCE empno_sq;
--创建序列
CREATE SEQUENCE empno_sq INCREMENT BY 10 START WITH 1001;
--删除数据表
DROP TABLE myemp PURGE;
--复制数据表
CREATE TABLE myemp AS SELECT * FROM emp;
--使用序列
INSERT INTO myemp(empno, ename, job) VALUES(empno_sq.nextval,'张三-1','职员');
INSERT INTO myemp(empno, ename, job) VALUES(empno_sq.nextval,'张三-2','职员');
INSERT INTO myemp(empno, ename, job) VALUES(empno_sq.nextval,'张三-3','职员');

运行结果如下:
在这里插入图片描述
总结:

  • 多张数据表可以使用一个序列(不建议)
  • 以上指定开始值后可能出现错误,系统并没有按照我们指定的开始值,原因是系统默认的,需要切换到超级管理员执行动作如下:
--切换到超级管理员
CONN SYS/超级管理员密码 AS SYSDBA;
--执行命令
ALTER SYSTEM SET deferred_segment_creation=FALSE;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值