Oracle学习(五)——————————————序列

什么是序列?

序列就是生成顺序递增/递减的一串数字。

序列作用

用来实现自动的提供唯一的主键值(下面会示范)

创建一个序列

create sequence 序列名

[start with n]

[increment by n]

[minvalue n|nominvalue]

[maxvalue n|nomaxvalue]

[cache n]

[cycle|nocycle]

[order|noorder];

带有[]说明可以省略

start with n,指定序列的起始值。默认情况下,递增序列则默认值为minvalue,递减序列则默认为maxvalue。

increment by n,如果是正数为递增序列,如果是为负数则为递减序列。默认每次增加1。

minvalue n,序列生成的最小值。

maxvalue n,序列生成的最大值。

cache,是否序列号预分配,并存到内存中。

cycle,当序列达到最大值/最小值时,可以复位继续下去。nocycle,当序列达到最大值/最小值,当序列继续增加时,会报错。

order,保证生成的序列值按顺序产生,noorder保证生产的序列值不重复,不保证产生值的顺序性。

序列的使用

student表

在创建时把sno设置为了主键

SQL> select * from student;

       SNO SNAME                                    SSEX           SAGE SDEPT
---------- ---------------------------------------- -------- ---------- ----------------------------------------
         1 张波                                     男               18 软件工程
         2 李增福                                   男               21 预防医学
         3 安霞                                     女               21 临床医学
         4 贺建                                     女               20 应用数学
         5 杨鹏飞                                   男               20 应用数学

创建的序列

SQL> create sequence student_sequence
  2  start with 6
  3  order;

序列已创建。

在student表中插入一个数据

SQL> insert into student values(student_sequence.nextval,'李宇航','男',22,'口腔医学');

已创建 1 行。

查看student中的数据

SQL> select * from student;

       SNO SNAME                                    SSEX           SAGE SDEPT
---------- ---------------------------------------- -------- ---------- ----------------------------------------
         6 李宇航                                   男               22 口腔医学
         1 张波                                     男               18 软件工程
         2 李增福                                   男               21 预防医学
         3 安霞                                     女               21 临床医学
         4 贺建                                     女               20 应用数学
         5 杨鹏飞                                   男               20 应用数学

已选择6行。

在插入一条数据

SQL> insert into student values(student_sequence.nextval,'苏小白','男',22,'中医药');

已创建 1 行。

查看student中的数据

SQL> select * from student;

       SNO SNAME                                    SSEX           SAGE SDEPT
---------- ---------------------------------------- -------- ---------- ----------------------------------------
         6 李宇航                                   男               22 口腔医学
         7 苏小白                                   男               22 中医药
         1 张波                                     男               18 软件工程
         2 李增福                                   男               21 预防医学
         3 安霞                                     女               21 临床医学
         4 贺建                                     女               20 应用数学
         5 杨鹏飞                                   男               20 应用数学

已选择7行。

查看当前序列号

select 序列名.currval from dual;

这可以查到当前序列前一个已经使用的序列号

SQL> select student_sequence.currval from dual;

   CURRVAL
----------
         7

修改序列

alter sequence 序列名 

maxvalue 1000;

修改除了start with 不可以修改其他都可进行修改。

删除序列

drop squence 序列名;

SQL> drop sequence student_sequence;

序列已删除。

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值