序列、同义词的创建与使用

序列概念:
序列是一数据库对象,利用它可生成唯一的整数。一般使用序列自动地生成主码值。一个序列的值是由特殊的Oracle程序自动生成,因此序列避免了在应用层实现序列而引起的性能瓶颈。
Oracle序列允许同时生成多个序列号,而每一个序列号是唯一的。当一个序列号生成时,序列是递增,独立于事务的提交或回滚。允许设计缺省序列,不需指定任何子句。该序列为上升序列,由1开始,增量为1,没有上限。
索引使用方面:
当你需要一个自动增长的id或别的什么主键的时候,你可以用一个序列来解决问题。

序列特性:
1.主要用于提供主键值
2.自动提供唯一的数值
3.共享对象
4.将序列值装入内存可以提高访问效率

创建序列必须需要以下两点:
1.具有创建序列的权限 create sequence 或 create any sequence
2.创建序列的语法

create sequence创建序列
创建序列格式:
create sequence sequence –创建序列名称
increment by n --递增的序列值是n 如果n是正数就递增,如果是负数就递减 默认是1
start with n --从哪个值开始,递增默认是minvalue 递减是maxvalue
maxvalue n/ nomaxvalue n–最大值
minvalue n/nominvalue n–最小值
cycle /nocycle --是否需要循环
cache /nocache --是否分配并存入到内存中

例子:
在这里插入图片描述
查询序列
查询数据字典视图 user_sequences获取序列定义信息
如果指定nocache 选项,则列last_number 显示序列中下一个有效的值
查询序列格式:
select序列名, 最小值, 最大值,每次增长的数值,下一个数值from序列字典;
例子:
在这里插入图片描述
nextval和 currval伪列
nextval返回序列中下一个有效的值,任何用户都可以引用
例子:
在这里插入图片描述
currval中存放序列的当前值
currval应在 nextval之前指定 ,否则会报currval尚未在此会话中定义的错误。
序列dept_deptid_seq的当前值
例子:
在这里插入图片描述
使用序列
将序列值装入内存可提高访问效率
序列在下列情况下出现裂缝:
回滚
系统异常
多个表同时使用同一序列
如果不将序列的值装入内存(nocache), 可使用表 user_sequences 查看序列当前的有效值

修改序列
修改序列的增量, 最大值, 最小值, 循环选项, 或是否装入内存
修改序列需要注意以下三点:
1.必须是序列的拥有者或对序列有alter权限
2.只有将来的序列值会被改变
3.改变序列的初始值只能通过删除序列之后重建序列的方法实现

修改序列格式:
alter sequence sequence
increment by n --递增的序列值是n 如果n是正数就递增,如果是负数就递减 默认是1
start with n --从哪个值开始,递增默认是minvalue 递减是maxvalue
maxvalue n/ nomaxvalue n–最大值
minvalue n/nominvalue n–最小值
cycle /nocycle --是否需要循环
cache /nocache --是否分配并存入到内存中
例子:
在这里插入图片描述
删除序列
使用 drop sequence 语句删除序列
删除之后,序列不能再次被引用
格式:drop sequence序列名;
例子:
在这里插入图片描述
同义词
概念:
1.同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性
2.与视图类似,同义词并不占用实际存储空间,只有在数据字典中保存了同义词的定义
3.在Oracle数据库中的大部分数据库对象,如表、视图、同义词、序列、存储过程、包等等,
数据库管理员都可以根据实际情况为他们定义同义词
作用:
使用同义词访问相同的对象:
方便访问其它用户的对象
缩短对象名字的长度

create synonym创建同义词
格式:create synonym 同义词 for 表/视图/同义词/序列/存储过程/包;
为序列seqEmp创建同义词例子:
在这里插入图片描述
drop synonym删除同义词
格式:drop synonym同义词;
例子:
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值