![3de4038a7c70535452aa9db032511489.png](https://i-blog.csdnimg.cn/blog_migrate/b1976fdbf50eb8ad54fc2071afb8e745.jpeg)
一.序列
1.序列的定义
- 序列是用户创建的数据库对象,序列会产生唯一的整数。序列的一个典型的用途是创建一个主键的值,它对于每一行必须是唯一的。序列由一个Oracle 内部程序产生并增加或减少
- 序列是一个节省时间的对象,因为它可以减少应用程序中产生序列程序的代码量。序列号独立于表被存储和产生,因此,相同的序列可以被多个表使用
2.创建序列
![37dff9d19fdf069cf87842d6745b5c63.png](https://i-blog.csdnimg.cn/blog_migrate/be5f4627952f6db882f607357774a592.jpeg)
INCREMENT BY n :序列增量的步长
START WITH n:要产生的第一个序列数 (如果该子句被省略,序列从 1 开始)
MAXVALUE n:指定序列能产生的最大值
NOMAXVALUE:对于升序序列指定 10^27 为最大值,对于降序序列指定-1 为最大值(默认)
MINVALUE n:指定最小序列值
NOMINVALUE:对于升序序列指定 1 为最小值,对于降序序列指定-(10^26)为最小值(默认)
CYCLE|NOCYCLE:指定序列在达到它的最大或最小值之后,是否继续产生【循环产生从头开始的与原来一样的序列】(NOCYCLE 是默认选项)
CACHE n|NOCACHE:指定 Oracle 服务器预先分配多少值,并且保持在内存中(默认情况下,Oracle 服务器缓冲20个值)
e.g. 创建一个序列名称为:dept_seq,增长间隔为10,从 120 开始,最大值为 9999,不缓存。不循环使用
create sequence dept_seq increment by 10 start with 120 maxvalue 9999 nocache nocycle;
注意:nocache 和nocycle的先后顺序没关系
当然我们也可以通过可视化工具创建序列
![a5df6a84d61539ddc72facfedad17601.png](https://i-blog.csdnimg.cn/blog_migrate/6df54508e4d2a2076d62ebf9265a5515.jpeg)
3.操作序列
3.1查询序列