108.Oracle数据库SQL开发之 序列
来源:互联网 发布:网络错误代码-7 编辑:程序博客网 时间:2024/05/21 14:12
108.Oracle数据库SQL开发之 序列
欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/50043051
序列是一种数据库项,它生成一个整数序列。序列所生成的整数通常可以用来填充数字类型的主键列。
1. 创建序列
使用CREATE SEQUENCE语句可以用来创建序列。
语法如下:
CREATE SEQUENCE sequence_name
[START WITH start_num]
[INCREMENT BY increment_num]
……
例如:
store@PDB1> create sequence s_test;
Sequence created.
其实数字start_num和增量increment_num都被设置为默认值1.
store@PDB1> create sequence s_test2 start with 10increment by 5 minvalue 10 maxvalue 20 cycle cache 2 order;
Sequence created.
2. 获取有关序列的信息
从user_sequences视图中更可以获得有关序列的信息
store@PDB1> column sequence_name format a13
store@PDB1> select * from user_sequences order bysequence_name;
SEQUENCE_NAME MIN_VALUE MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER PARTITION_COUNT S K
------------- ---------- ---------------------- - - ---------- ----------- --------------- - -
S_TEST 1 1.0000E+28 1 N N 20 1 N N
S_TEST2 10 20 5 Y Y 2 10 N N
3. 使用序列
序列生成一系列数字。一个序列中包含两个伪列,分别是currval和nextval.
store@PDB1> select s_test.nextval from dual;
NEXTVAL
----------
1
store@PDB1> select s_test.currval from dual;
CURRVAL
----------
1
store@PDB1> select s_test.nextval,s_test.currvalfrom dual;
NEXTVAL CURRVAL
---------- ----------
2 2
store@PDB1> select s_test2.nextval from dual;
NEXTVAL
----------
10
store@PDB1> select s_test2.nextval from dual;
NEXTVAL
----------
15
4. 使用序列填充主键
当表的主键是整数时,通常使用序列来生成主键。
如下:
store@PDB1> create table order_status2 ( idINTEGER CONSTRAINT order_status2_pk primary key,statusvarchar2(10),last_modified date default sysdate);
Table created.
创建一个序列
store@PDB1> create sequence s_order_status2nocache;
Sequence created.
在使用序列填充主键列时,通常应该使用NOCACHE选项,这样可以避免序列产生不连续的情况。使用NOCACHE会降低性能。如果能够容忍主键值不连续,那么就考虑使用CACHE。
插入如下:
store@PDB1> insert intoorder_status2(id,status,last_modified )
values (s_order_status2.nextval,'PLACED','01-JAN-2006');
1 row created.
store@PDB1> insert intoorder_status2(id,status,last_modified )
values (s_order_status2.nextval,'PENDING','01-FEB-2006');
1 row created.
查看如下:
store@PDB1> select * from order_status2;
IDSTATUS LAST_MODI
---------- ---------- ---------
1 PLACED 01-JAN-06
2 PENDING 01-FEB-06
5. 修改序列
ALTER SEQUENCE语句可以用来修改序列。修改序列时,可以修改的序列内容有如下限制:
l 不能修改序列的初值
l 序列的最小值不能大于当前值
l 序列的最大值不能小于当前值
store@PDB1> alter sequence s_test increment by 2;
Sequence altered.
使用如下:
store@PDB1> select s_test.nextval from dual;
NEXTVAL
----------
4
store@PDB1> select s_test.nextval from dual;
NEXTVAL
----------
6
6. 删除序列
DROP SEQUENCE可以用来删除序列,如下:
DROP SEQUENCE s_test3;
- 108.Oracle数据库SQL开发之 序列
- Oracle数据库开发之序列
- Oracle数据库之序列
- ORACLE数据库之序列
- 109.Oracle数据库SQL开发之 索引
- 2.Oracle数据库SQL开发之 SQL DEVELOPER使用
- 13.Oracle数据库SQL开发之 SQL操作符
- 1.Oracle数据库SQL开发指南之开篇
- 3.Oracle数据库SQL开发之 创建store的schema
- 4.Oracle数据库SQL开发之 添加、删除、修改行
- 7.Oracle数据库SQL开发之 算术运算
- 8.Oracle数据库SQL开发之 使用列别名
- 10.Oracle数据库SQL开发之 理解空值
- 11.Oracle数据库SQL开发之 禁止显示重复行
- 12.Oracle数据库SQL开发之 比较值
- 14.Oracle数据库SQL开发之 使用逻辑操作符
- 15.Oracle数据库SQL开发之 理解操作符优先级
- 16.Oracle数据库SQL开发之 使用ORDERBY进行排序
- rk3288 camera cif分析
- 107.Oracle数据库SQL开发之 表——截断、删除表
- JS截取字符串substr 和 substring方法的区别
- CCNA学习笔记四 动态路由简介、OSPF动态路由配置
- 编程艺术【转】阅后有感
- 108.Oracle数据库SQL开发之 序列
- BlotDB数据库例子
- 10020---Java WEB实现URL重写的优缺点及如何实现
- Java中参数传递机制
- myos loadtest
- 直线生成算法——数值微分法(Digital Differential Analyzer, DDA)
- 109.Oracle数据库SQL开发之 索引
- 1.2.4 一种能够累加数据的抽象数据类型
- 黑马程序员—Java基础—java基础语法:数据结构,运算符,选择结构,循环结构