oracle序列号、
创建即将使用的表
create table supplier
(s_codde number(6),
sname varchar2(25),
contact varchar2(15),
phone varchar2(15),
fax varchar2(15));
序列号的特点
- 可以由多个用户共享的数据库对象.
- 序列号生产机器,专为表中的数据自动产生序列号.
- 由oracle内部例程产生和维护.
- 独立于使用它的表.
- 通常是用来产生主键
- 可以取代生产序列号的应用程序.
- 如果让它常驻内存,可以提高访问序列号的效率.
创建序列号的语法
- 序列号的名字::序列号产生器的名字, 也即是该序列的名字
- START WITH n:定义了所产生的第一个序列号码,这里 n 为整数。如果该字句省略,那么序列就从1开始
- INCREMENT BY n : 定义了序列号增加的步长(序列号之间的间隔,当前序列号与下一个序列号之间的差),如果该字句省略,序列号增加步长为1.
- MAXVALUE n :定义了该序列号可产生的序列号的最大值
- NOMAXVALUE : 说明升序的序列号的最大值为 10的27次方。而降序的序列号的最大值为 -1 (这也是默认值)。
- MINVALUE :定义了可产生序列号的最小值。
- NOMINVALUE : 说明升序序列号的最小值为1,而降序的序列号的最小值为负10的26次方(这也是默认值)。
- CACHE n :说明将有n个序列号码被oracle 服务器预分配和保存在内存中。
- NOCACHE:说明没有序列号被oracle服务器预分配和保存在内存当中。
- CACHE20:这是默认值。不需要说明。
- CYCLE n:说明在序列号达到最大或最小值后,将继续产生序列号。
- NOCYCLE:说明在序列号达到最大或最小值之后,将不再产生序列号(这也是默认值)。
使用
创建序列号
create sequence supplier_s_codestart with 2000INCREMENT by 10maxvalue 100000nocachenocycle;
该语句意思为:从2000开始,步长为 10 最大值为 100000, 没有预分配,最大值之后不在产生序列号
查看序列号信息
SELECT * FROM user_sequences;
如果想查看当前序列号的值,与序列号下一次的值,可以利用SELECT 语句 加2个位列来查询。NEXTVAL 以及 CURRVAL
- NEXTVAL:返回序列号下一次可获得的值
- CURRVAL:返回序列号当前的值
使用序列号插入数据
INSERT INTO supplier(s_codde, sname, contact, phone, fax)VALUES(supplier_s_code.nextval, '仙客来百货','张根发', 4444944, 4444844);
提示插入成功,那么现在可以使用 CURRVAL 来获取序列当前的值了。
SELECT supplier_s_code.currval FROM dual
CREATE SEQUENCE ord_ordno START WITH 1 INCREMENT BY 1 MAXVALUE 10000 NOCYCLE
通过查询序列或发现,该序列号与上一个序列号之间有不同之处,
上一个序列号因为使用了 NOCACHE 所以oracle为分配缓存任何序列号值,而这次建立的序列号在建立的时候为使用 NOCACHE 所以oracle默认缓存了20个序列值。
- 第一次引用这个序列时,oracle计算出 n 个序列号码,并将它们放入内存当中。
- 每一个要求下一个序列号码的请求,都将从内存中的序列号码中得到。
- 当内存中的最后一个序列号码用完之后,假如又收到下一个获取序列号请求时,oracle服务器再次计算出 n 个序列号并将它们放入内存当中。
NEXTVAL 和 CURRVAL伪列的使用规则。
使用规则
- 序列必须先定义才能使用 NEXTVAL,CURRVAL。
- 使用伪列 NEXTVAL 时会产生下一个新的序列号码,并将该序列号码放入 CURRVAL 伪列当中。
- 使用伪列 CURRVAL 可以获取当前序列的系列号码,使用之前必须在当前会话当中使用过 NEXTVAL 伪列产生过一个序列值。
使用场景
可使用场景
- 查询语句的 SELECT 子句中,但不包括子查询的 SELECT 子句。
- 在 UPDATE 语句的 SET 子句当中。
- 在 INSERT 语句中的子查询的 SELECT 列表中。
- 在 INSERT 语句的 VALUES 子句中。
不能使用的场景
- 视图的 SELECT 子句中,
- 在 SELECT 语句的子查询中。
- 在 UPDATE 语句的子查询当中。
- 在 DELETE 语句的子查询中。
- 在包含 DISTINCT 关键字的查询 SELECT 语句中。
- 在包含 ORDER BY 子句的查询 SELECT 语句中。
- 在包含 GROUP BY 子句的查询 SELECT 语句中。
- 在包含 HAVING 子句的查询 SELECT 语句中。
- 在包含 DEFAULT 表达式的 CREATE TABLE 语句中。
- 在包含 DEFAULT 表达式的 ALTER TABLE 语句中。
序列的修改
- 必须要有 ALTER ANY SEQUENCE 系统权限。
- 不能修改 START WITH 选项,如果一定要修改,只能删掉序列,重新创建。
- ALTER SEQUENCE 只能影响以后的序列号码。
- 修改后的 MAXVALUE 不能小于序列号当前的值。比如当县序列号的值为 1000 ,那么久不能修改 MAXVALUE 的值为 999。
删除序列号
同义词
SELECT * FROM supplier
有了同义词之后可以这样
SELECT * FROM s
创建同义词
- PUBLIC:使用了该字段的话,那么表明所有用户都可以访问这个同义词
- 对象名:创建的同义词基于的对象名。比如我们要为 supplier 表创建同义词,那么对象名就是该表名。
CREATE SYNONYM s FOR supplier;
查询同义词信息
CREATE SYNONYM s FOR supplier;
通过同义词来查询真是的表数据
SELECT * FROM s
可以看到 通过同义词,我们查询到了真是的 supplier 表中的数据。
删除同义词
oracle序列号、相关推荐
- oracle序列号的使用
oracle序列号的使用 1.查询下一个序列号 select SEQ_USER.nextval from dual 2.在插入新数据时,生成唯一的id值 insert into user(id,nam ...
- oracle序列号查询最大值,Oracle sequence值到了最大值的处理
序列是oracle提供的用于生成一系列唯一数字的数据库对象,序列会自动生成顺序递增的序列号,以实现自动提供唯一的主键值,系列可以在多个用户并发环境中使用,并且可以为所有用户生成不重复的顺序数字,而不需 ...
- oracle 序列号同步,关于序列同步的问题
在使用oracle数据库时,当给一个表设置自增字段时,我们经常会使用到序列+触发器来完成.但当你需要对数据库进行导入导出时,序列很容易出问题. 当你将数据库导出后,导入到另一个数据时,你会发现另一个数 ...
- 查看 oracle 序列号 用户名,查看oracle用户执行的sql语句历史记录
一时失误,删除了PL/SQL窗口数据的历史,然后半个半个星期写的代码全部白费,但是想起来之前执行过,所以可以通过查询历史记录找回.以下为找回代码: 平时用得少,保存一下以后查看. select * f ...
- Oracle序列号详解
例1:创建序列:CREATE SEQUENCE ABC INCREMENT BY 1 START WITH 1 MAXVALUE 9999999999 NOCYCLE NOCACHE; 语法详解CRE ...
- oracle中的CURRVAL和NEXTVAL用法(sequence是序列号生成器)
1.什么是sequence?其作用是什么? 在Oracle数据库中,什么是序列呢?其中的作用是什么呢?其实sequence是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字 ...
- plan explorer mysql_plan explorer支持oracle吗
展开全部 1.SQL语句的执行62616964757a686964616fe58685e5aeb931333361326365计划 使用EXPLAIN PLAN语句来确定Oracle数据库下指定SQL ...
- lsdyna如何设置set中的node_list_详解MySQL数据库如何实现类似Oracle的序列?
概述 众所周知,Oracle一般使用序列(Sequence)来处理主键字段,而MySQL则提供了自增长(increment)来实现类似的目的. 不过小编在实际使用过程中发现,MySQL的自增长有诸多的 ...
- (转)oracle中的CURRVAL和NEXTVAL用法
转自:http://blog.csdn.net/qianyiyiding/article/details/51592689 1.什么是sequence?其作用是什么? 在Oracle数据库中,什么是序 ...
最新文章
- C++编程思想重点笔记(上)
- Linux快速格式化T级硬盘并挂载
- 旧文重发:做人、做事,做架构师——架构师能力模型解析
- 恶心的C语言strtok函数
- linux gcc常用编译选项总结
- gcc,cc,g++,CC的区别
- uva 11572 ——Unique Snowflakes
- python中popen的用法_python中的subprocess.Popen()使用
- 使用Visual Studio.net调试javascript最方便的方法
- 微信开发的时候自定义菜单
- 英语学术论文简短语句摘抄
- 流年似水 启航2019
- MyBatis crud练习
- win10 + ubantu双系统 彻底删除Ubantu
- 华文慕课计算机组成结构第二章课后习题解析
- 根据E-R图设计数据库表
- nginx反向代理实现二级域名转一级域名
- 最近 Github 上爆火的 Chrome 生产力神器 Omni 是什么鬼?
- 解决开发qq音乐singer-detail组件时子路由跳转失败问题
- back track 5 / BT5 默认用户名密码
热门文章
- 飞鸟如何去爱,才能爱上水里的鱼?
- 模拟磁盘调度 课程设计(操作系统 C语言)
- 2020年日历_2020年日历表打印版下载|2020年日历表 打印版 下载 - 巴士下载站
- mysql的字符串等于函数吗_MySQL函数的字符串函数
- i7 10875h和i7 9750h对比差距大吗
- java 监听客户端的退出_Java socket 服务端如何监控客户端异常关闭?
- Hikvison对接NVR实现WEB无插件开发包实现前端视频预览(html、vue、nginx代理)
- Relief特征提取算法实战
- Java回顾-String/StringBuilder/StringBuffer
- 江浙沪地区计算机考研高效排名,江浙沪地区,哪所大学的法硕容易考上?