标签:a20 开头 with ted creat sele 更改 使用 字段
序列是用于生成唯一,连续序号的对象。序列可以是升序的,也可以是降序的
CREATE SEQUENCE stu_seq
START WITH 1 -- 指定第一个序号从 1 开始
INCREMENT BY 1 -- 指定序号之间的间隔为 1
MAXVALUE 2000 -- 表示序列的最大值为 2000
MINVALUE 1 -- 表示序列的最小值为 1
NOCYCLE -- 在达到最大值后停止生成下一个值
CACHE 10; -- 指定内存中预先分配的序号数
上述参数中,重点解释下CACHE 10,该参数的意思是:例如,现在获取的序列号是6,那么Oracle直接将6-16全部计算出来,存储到内存中,当前先把6返回,当下次再取7或者8等数字的时候,Oracle直接返回,这样效率比较高。所以CACHE就表示在内存预先储存多少个值
小提示:Oracle创建sequence的时候,如果不指定cache,那么默认的cache是20
-- 使用scott登录
SQL> conn scott/tiger@orcl
-- 查询scott用户所属角色
SQL> select u.username,u.granted_role from user_role_privs u;
USERNAME GRANTED_ROLE
------------------------------ ------------------------------
SCOTT CONNECT
SCOTT RESOURCE
-- 查看当前角色下所有的权限
SQL> select * from role_sys_privs;
ROLE PRIVILEGE ADMIN_OPTION
------------------------------ ---------------------------------------- ------------
RESOURCE CREATE SEQUENCE NO
RESOURCE CREATE TRIGGER NO
RESOURCE CREATE CLUSTER NO
RESOURCE CREATE PROCEDURE NO
RESOURCE CREATE TYPE NO
CONNECT CREATE SESSION NO
RESOURCE CREATE OPERATOR NO
RESOURCE CREATE TABLE NO
RESOURCE CREATE INDEXTYPE NO
9 rows selected
--
从上述结果可以可以看出scott用户拥有CREATE SEQUENCE的权限
SQL> select * from user_sequences;
create sequence seq1 start with 1000 increment by -1 maxvalue 1000;
通过序列的伪列来访问序列的值
第一次使用序列中的值的时候,要使用NEXTVAL
实战演练
SQL> select seq1.nextval from dual; -- 第一次执行
NEXTVAL
----------
1000
SQL> select seq1.nextval from dual; -- 第二次执行
NEXTVAL
----------
999
使用ALTER SEQUENCE语句修改序列,不能更改序列的START WITH参数
ALTER SEQUENCE stu_seq MAXVALUE 5000 CYCLE;
使用DROP SEQUENCE语句删除序列
DROP SEQUENCE stu_seq;
现在有学生表,有学生ID,学生名字,现在需要将ID自定义为A202004开头,并且从01、02...逐渐自增,示例如下:
第一个学生:A20200401
第二个学生:A20200402
...
第99个学生:A20200499
示例代码:
SQL> create sequence seq_for_stu start with 1 increment by 1 maxvalue 99;
Sequence created
SQL> create table stu(id varchar(100),name varchar2(100));
Table created
SQL> insert into stu values(‘A202004‘||to_char(seq_for_stu.nextval,‘09MI‘),‘小明‘);
1 row inserted
SQL> insert into stu values(‘A202004‘||to_char(seq_for_stu.nextval,‘09MI‘),‘小红‘);
1 row inserted
SQL> insert into stu values(‘A202004‘||to_char(seq_for_stu.nextval,‘09MI‘),‘小张‘);
1 row inserted
SQL> commit;
Commit complete
SQL> SELECT * FROM stu;
ID NAME
------------------------------------------------ ---------------
A20200401 小明
A20200402 小红
A20200403 小张
标签:a20 开头 with ted creat sele 更改 使用 字段
原文地址:https://www.cnblogs.com/OliverQin/p/12677003.html