序列的使用:
在每张数据表都有一个字段作为数据的唯一区分标志,而且该字段的数据不能重复,这个字段叫作数据表的主键
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;"