📜  SQL |序列

📅  最后修改于: 2022-05-13 01:55:10.369000             🧑  作者: Mango

SQL |序列

序列是一组整数 1, 2, 3, … 由一些数据库系统生成和支持,以按需生成唯一值。

  • 序列是用户定义的模式绑定对象,它生成一系列数值。
  • 序列在许多数据库中经常使用,因为许多应用程序要求表中的每一行都包含唯一值,而序列提供了一种生成它们的简单方法。
  • 数值序列按定义的时间间隔按升序或降序生成,并且可以配置为在超过 max_value 时重新启动。

句法:

CREATE SEQUENCE sequence_name
START WITH initial_value
INCREMENT BY increment_value
MINVALUE minimum value
MAXVALUE maximum value
CYCLE|NOCYCLE ;

sequence_name: Name of the sequence.

initial_value: starting value from where the sequence starts. 
Initial_value should be greater than or equal 
to minimum value and less than equal to maximum value.

increment_value: Value by which sequence will increment itself. 
Increment_value can be positive or negative.

minimum_value: Minimum value of the sequence.
maximum_value: Maximum value of the sequence.

cycle: When sequence reaches its set_limit 
it starts from beginning.

nocycle: An exception will be thrown 
if sequence exceeds its max_value.

例子

以下是按升序创建序列的序列查询。

  • 示例 1:
    CREATE SEQUENCE sequence_1
    start with 1
    increment by 1
    minvalue 0
    maxvalue 100
    cycle;
    

    上面的查询将创建一个名为sequence_1的序列。序列将从 1 开始并递增 1,最大值为 100。序列将在超过 100 后从起始值重复自身。

  • 示例 2:
    以下是按降序创建序列的序列查询。
    CREATE SEQUENCE sequence_2
    start with 100
    increment by -1
    minvalue 1
    maxvalue 100
    cycle;
    

    上面的查询将创建一个名为sequence_2的序列。序列将从 100 开始,应小于或等于最大值,并将增加 -1,最小值为 1。

  • 使用序列的示例:创建一个名为 students 的表,其列为 id 和 name。
    CREATE TABLE students
    ( 
    ID number(10),
    NAME char(20)
    );
    

    现在将值插入表中

    INSERT into students VALUES(sequence_1.nextval,'Ramesh');
    INSERT into students VALUES(sequence_1.nextval,'Suresh');
    

    其中sequence_1.nextval将在sequence_1 中定义的序列中的id 列中插入id。
    输出:

    ______________________
    | ID  |      NAME      |
    ------------------------
    |  1  |     Ramesh     |
    |  2  |     Suresh     |            
     ----------------------