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