Oracle 之序列

概念:序列是oracle提供的一个产生唯一数值型的机制。通常用于表的主键值,序列只能保证唯一,不能保证连续。

创建序列:

    语法:CREATE SEQUENCE<sequencen_name>

                [INCREMENT BY n]

                [START WITH n]

                [MAXVALUE n] [MINVALUE n]

                [CYCLE|NOCYCLE]

                [CYCHE n|NOCACHE]

说明:INCREMENT BY n --表示序列每次增长的幅度;默认值为1.

            START WITH n --表示序列开始时的序列号。默认值为1.

            MAXVALUE n --表示序列可以生成的最大值(升序).

            MINVALUE n --表示序列可以生成的最小值(降序).

            CYCLE --表示序列到达最大值后,在重新开始生成序列.默认值为 NOCYCLE。

            CACHE n--允许更快的生成序列.预先生成n个序列值到内存(如果没有使用完,那下次序列的值从内存最大值之后开   始;所以n不应该设置太大)

示例:

    创建递增序列:

        Create sequence seq_test

        Increment by 1

        Start with 1

        Maxvalue 1000

        nocycle;

    创建递减序列

        Create sequence seq_test2

        increment by -1

        start with 5

        max value 5

        min value 1

        nocycle;

序列使用:

    1:NEXTVAL 返回序列下一个值;第一次访问时,返回序列的初始值,后继每次调用时,按步长增加的值返回

    语法:select <sequence_name>.nextval from dual;

    示例:select seq_test.nextval from dual;

    2:CURRENT 返回序列的当前值。注意在刚建立序列后,序列的CURRENT值为NULL,所以不能直接使用。使用过NEXTVAL访问序列后才能使用

    语法:查看序列的当前值

    select <sequence_name>.currval from dual;

    示例:select seq_test.nextval from dual;

              select seq_test.currval from dual;

删除序列:

    语法:DROP SEQUENCE<sequence_name>

    示例:Drop sequence seq_test;

序列与sys_guid 都可以作为主键值。

select sys_guid() from dual;


    

 

         







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值