博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Oracle--序列详解(创建、修改、删除和使用)
阅读量:2443 次
发布时间:2019-05-10

本文共 2282 字,大约阅读时间需要 7 分钟。

序列

序列(sequence)是一种数据库对象,可以为表中的行自动生成序列号,利用它可生成唯一的整数,产生一组等间隔的数值(类型为数字Number),主要用于生成唯一、连续的序号。序列是一种共享式的对象,多个用户可以共同使用序列中的序号。一般序列所生成的整数通常可以用来填充数字类型的主键列,这样当向表中插入数据时,主键列就使用了序列中的序号,从而保证主键的列值不会重复。用这种方法可以替代在应用程序中产生主键值的方法,可以获得更可靠的主键值。

创建序列

一个序列的是由特殊的Oracle程序自动生成的,因此避免了在应用层实现序列而引起的性能瓶颈。序列号是一个Oracle整数,最多可以有38个数字。创建序列时,需要定义的信息包括序列名、上升或下降、序列号之间的间距和其它信息。

语法如下

CREATE SEQUENCE sequence_name[START WITH start_num][INCREMENT BY increment_num][{MAXVALUE maximum_num | NOMAXVALUE}][{MINVALUE minimum_num | NOMINVALUE}][{
CYCLE | NOCYCLE}][{CACHE cache_num | NOCACHE}][{
ORDER | NOORDER}];

其中各语法选项含义如下:

  • sequnce_name: 指定序列名
  • start_num: 指定序列从哪个整数开始,该值默认为1
  • increment_num: 指定该序列每次增加的整数增量,值默认为1。increment_num的绝对值必须小于maximum_num与minimum_num之差。
  • maximum_num: 指定该序列的最大整数。maximum_num必须大于或等于start_num,而且maximum_num必须大于minimum_num。
  • NOMAXVALUE: 指定升序序列的最大值为1027,降序序列的最大值为-1。NOMAXVALUE为默认值。
  • minimum_num: 指定该序列的最小整数。minimum_num必须小于或等于start_num,而且minimum_num必须小于maximum_num。
  • NOMINVALUE: 指定升序序列的最小值为1,降序序列的最小值为-1026。NOMINVALUE为默认值。
  • CYCLE: 指定该序列即使已经达到最大值或最小值也继续生成整数。当升序序列达到最大值时,下一个生成的值是最小值。当降序序列达到最小值时,下一个生成的值是最大值。
  • NOCYCLE: 指定该序列在达到最大值或最小值之后就不能再生成整数了。NOCYCLE是默认值。
  • cache_num: 指定要保留在内存中整数的个数。默认要缓存的整数位20个。可以缓存的整数最少为2个;可以缓存的整数个数最多为:CELL(maximum_num - minimum_num) / ABS(increment_num)。
  • NOCACHE: 指定不缓存任何整数。这可以阻止数据库为序列预分配值,从而避免序列产生不连续的情况,但这会降低性能。序列不连续的情况之所以会发生,是因为在关闭数据库时所缓存的值将全部丢失。如果省略CACHE和NOCACHE,则数据库默认缓存的整数位20个。
  • ORDER: 确保按照请求次序生成整数。当使用Real Application Clusters(RAC)时一般使用ORDER选项,Real Application Clusters由数据库管理员安装和管理。Real Application Clusters是共享相同内存的多个数据库服务器,它们可以提高性能。
  • NOORDER: 不确保按照请求次序生成整数。NOORDER为默认值。

使用默认值创建一个序列s_seq1

在这里插入图片描述

创建序列s_seq2,开始值为100,增幅是2,最大值是1000,序列中的序号不在内存中进行缓冲

在这里插入图片描述
序列的信息可以从数据字典user_sequences中获得,如下:
在这里插入图片描述
使用SELECT语句查看序列s_seq2的最小值、最大值、增幅等信息:
在这里插入图片描述

修改序列

ALTER SEQUENCE语句可以用来修改序列。在修改序列时,可以修改的序列内容有如下限制:

  • 不能修改序列的初值
  • 序列的最小值不能大于当前值
  • 序列的最大值不能小于当前值

==修改序列S_SEQ2的最小值、最大值、增幅,并使其中的序号可循环使用:

在这里插入图片描述

删除序列

对于不再使用的序列,应该及时地将其删除。

DROP SEQUENCE可以用来删除序列。

删除序列S_SEQ1

在这里插入图片描述

使用序列

对用户而言,序列中的可用资源是其中包含的序号。用户可以通过SELECT命令获得可用的序号,也可以将序号应用于DML语句和表达式中。如果要使用其他用户的序列号,则必须具有对该序列的SELECT权限。

序列提供了两个伪列,即NEXTVAL和CURRVAL,用来访问序列中的序号

  • NEXTVAL: 返回序列生成的下一个值。
  • CURRVAL: 返回序列的当前值。

需要注意的是,在第一次引用CURRVAL之前,必须引用过一个序列的NEXTVAL,用于初始化序列的值,否则会出现错误提示。

使用序列S_SEQ1为表sys_user表插入一条数据,代码如下:

create table sys_user(userId number primary key,userName varchar2(20) not null,userPWD varchar2(20) not null);

在这里插入图片描述

转载地址:http://ikpqb.baihongyu.com/

你可能感兴趣的文章
什么是“ parentalcontrolsd”,为什么它在我的Mac上运行?
查看>>
如何通过iPhone或Android手机制作自己的QR码
查看>>
如何使用Synology NAS下载文件(并避免在夜间开启计算机)
查看>>
如何为Microsoft Office安装和使用加载项
查看>>
如何查看其他设备登录到您的Google帐户
查看>>
plex 乱码_如何优化电影和电视节目以流畅地播放Plex
查看>>
iphone获取imei_如何为您的iPhone或iPad查找序列号或IMEI
查看>>
linux中为用户添加权限_如何在Linux中为“ cd”命令定义基本目录
查看>>
使用Facebook的“今天”来清理您的Facebook过去
查看>>
谷歌 订阅日历_如何使用iCalShare查找和订阅几乎所有内容的日历
查看>>
如何使Apple Watch屏幕保持更长的时间
查看>>
windows 右键快捷键_了解Windows 8中的新快捷键
查看>>
即时配置文件_如何即时转到OS X中的位置和文件夹
查看>>
在Windows 7、8.x,10或Vista中免费调整分区大小
查看>>
onedrive共享文件_如何在Windows 10中从OneDrive共享文件和文件夹
查看>>
安卓6.0对系统隐私_如何在Android 5.0中固定屏幕以提高安全性和隐私性
查看>>
windows锁定文件夹_如何在Windows中锁定文件以阻止删除或覆盖?
查看>>
如何根据您的位置自动更改默认打印机
查看>>
8.1禁用所有应用通知_如何在Windows 8中禁用烤面包机通知
查看>>
opera浏览器缓存文件夹_在Opera中更改文件类型的操作
查看>>