14.Oracle 同义词Synonym和序列Sequence

Oracle 同义词Synonym和序列Sequence

  • Synonym 它是用来简化用户对其它数据对象(表、函数、存储过程、视图等)的命名引用
-- 创建同义词对象
create synonym emp for scott.emp;

-- 等同于select * from scott.emp;
select * from emp;

同义词是用户自己的数据对象,不能和已有的表、视图、函数等数据对象重名!

-- 查看已有的同义词
select * from user_synonyms;
-- 删除同义词
drop synonym emp;

  • Sequence 它是一个数据对象,用于存储和定义自增值
create sequence seq_student;

-- 查询并消耗了序列中的下一个自增值
select seq_student.nextval from dual;

注意:不要使用nextval来查看下一个自增序列值,因为查看后,当你调用insert时,nextval值又会递增!

select seq_student.currval from dual;
-- 注意:创建完序列后,currval无效(要先nextval执行一次)
-- 指定从1000开始每次递增2
create sequence seq_student
    start with 1000
    increment by 2;

循环序列(从最小到最大值之间循环自增)

肯定不适用于做主键!!!

create sequence seq_student
    maxvalue 1000
    cache 50
    -- 如果没有设置缓冲,那么每次请求序列时,都会查询序列对象的下一个值
    -- 如果设置缓冲,那么数据库会一次性预先分配指定数量的序列值,避免频繁的查询序列对象(优化执行)
    -- 从缓冲/内存中读取预先分配的序列肯定要比查数据库来的快
    cycle;

删除序列

drop sequence seq_student;

查看序列数据字典

select * from user_sequences where sequence_name = 'SEQ_STUDENT';

修改序列

alter sequence seq_student
    maxvalue 10000			-- 因为没有指定cycle,因此一旦超过maxvalue报错
    increment by 2;
select seq_student.nextval, seq_student.nextval, seq_student.nextval from dual;
-- 在同一个select语句中,多次调用nextval都是相同的值!

序列可以递减

create sequence seq_test maxvalue 1000 increment by -1;

select seq_test.nextval from dual;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值