Oracle数据对象--序列
2013-03-25 10:59
288 查看
1、创建序列语法
CREATE SEQUENCE sequence
[INCREMENT
BY n] //序列值间隔,默认为1 如果指定的为负数,序列值将递减产生
[START
WITH n] //起始序列值,默认为1
[{MAXVALUE n |
NOMAXVALUE}] //最大序列值 |
最大序列值为10的27次方,降序的最大值为-1
[{MINVALUE n | NOMINVALUE}]
//最小序列值 | 升序最小序列值为1,降序最小序列值为-10的26次方
[{CYCLE |
NOCYCLE}]
//序列值在达到指定最大或最小值之后继续产生序列值(从头再开始),NOCYCLE不再生产(默认值)
[{CACHE n
| NOCACHE}]; //序列被预先分配存储到内存,NOCACHE默认值
2、建立序列
CREATE SEQUENCE dept_deptno
INCREMENT
BY 20
START WITH 50
MAXVALUE 200
NOCACHE
CYCLE
/
3、伪列:NEXTVAL和CURRVAL
NEXTVAL:用于返回序列下一个可获取的值。引用(sequence).NEXTVAL时,一个新的序列值产生并保存到CURRVAL伪列。对于每次引用都产生下一个序列值并返回,对于不同的用户引用也是一样。
CURRVAL:被引用前必须使用NEXTVAL产生一个序列值,用于提取当前用户产生的序列值。
4、查询序列
查询当前序列值
SELECT
dept_deptno.CURRVAL FROM dual;
查询下一个返回的序列值
SELECT
dept_deptno.NEXTVAL FROM dual;
注意:这样也是对NEXTVAL的引用,会产生下一个序列值
如果序列不是保存在内存中的,可以查看数据字典,这样不会产生新的序列值
SELECT
sequence_name, min_value, max_value,
increment_by,last_number
FROM
user_sequences
/
5、使用序列
未使用NEXTVAL时情况
SQL> INSERT INTO
dept1(deptno,dname,loc)
2 VALUES
(dept_deptno.CURRVAL,'IT_DEPT','BEIJING')
3 /
VALUES
(dept_deptno.CURRVAL,'IT_DEPT','BEIJING')
*
ERROR at line 2:
ORA-08002:
sequence DEPT_DEPTNO.CURRVAL is not yet defined in this
session
正确的用法
INSERT INTO dept1(deptno,dname,loc)
VALUES
(dept_deptno.NEXTVAL,'IT_DEPT','BEIJING')
/
1 row created.
INSERT INTO
dept1(deptno,dname,loc)
VALUES
(dept_deptno.NEXTVAL,'HR_DEPT','SHANGHAI')
/
1 row created.
SELECT *
FROM dept1;
DEPTNO DNAME LOC
----------
-------------------- --------------------
10 ACCOUNTING NEW
YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40
OPERATIONS BOSTON
50 IT_DEPT BEIJING
60
HR_DEPT SHANGHAI
6 rows selected.
6、修改序列
ALTER SEQUENCE dept_deptno
INCREMENT
BY 10
MAXVALUE 400
NOCACHE
NOCYCLE
/
Sequence altered.
7、删除序列
DROP SEQUENCE dept_deptno;
Sequence
dropped.
CUUG
更多oracle视频教程请点击:http://crm2.qq.com/page/portalpage/wpa.php?uin=800060152&f=1&ty=1&aty=0&a=&from=6
CREATE SEQUENCE sequence
[INCREMENT
BY n] //序列值间隔,默认为1 如果指定的为负数,序列值将递减产生
[START
WITH n] //起始序列值,默认为1
[{MAXVALUE n |
NOMAXVALUE}] //最大序列值 |
最大序列值为10的27次方,降序的最大值为-1
[{MINVALUE n | NOMINVALUE}]
//最小序列值 | 升序最小序列值为1,降序最小序列值为-10的26次方
[{CYCLE |
NOCYCLE}]
//序列值在达到指定最大或最小值之后继续产生序列值(从头再开始),NOCYCLE不再生产(默认值)
[{CACHE n
| NOCACHE}]; //序列被预先分配存储到内存,NOCACHE默认值
2、建立序列
CREATE SEQUENCE dept_deptno
INCREMENT
BY 20
START WITH 50
MAXVALUE 200
NOCACHE
CYCLE
/
3、伪列:NEXTVAL和CURRVAL
NEXTVAL:用于返回序列下一个可获取的值。引用(sequence).NEXTVAL时,一个新的序列值产生并保存到CURRVAL伪列。对于每次引用都产生下一个序列值并返回,对于不同的用户引用也是一样。
CURRVAL:被引用前必须使用NEXTVAL产生一个序列值,用于提取当前用户产生的序列值。
4、查询序列
查询当前序列值
SELECT
dept_deptno.CURRVAL FROM dual;
查询下一个返回的序列值
SELECT
dept_deptno.NEXTVAL FROM dual;
注意:这样也是对NEXTVAL的引用,会产生下一个序列值
如果序列不是保存在内存中的,可以查看数据字典,这样不会产生新的序列值
SELECT
sequence_name, min_value, max_value,
increment_by,last_number
FROM
user_sequences
/
5、使用序列
未使用NEXTVAL时情况
SQL> INSERT INTO
dept1(deptno,dname,loc)
2 VALUES
(dept_deptno.CURRVAL,'IT_DEPT','BEIJING')
3 /
VALUES
(dept_deptno.CURRVAL,'IT_DEPT','BEIJING')
*
ERROR at line 2:
ORA-08002:
sequence DEPT_DEPTNO.CURRVAL is not yet defined in this
session
正确的用法
INSERT INTO dept1(deptno,dname,loc)
VALUES
(dept_deptno.NEXTVAL,'IT_DEPT','BEIJING')
/
1 row created.
INSERT INTO
dept1(deptno,dname,loc)
VALUES
(dept_deptno.NEXTVAL,'HR_DEPT','SHANGHAI')
/
1 row created.
SELECT *
FROM dept1;
DEPTNO DNAME LOC
----------
-------------------- --------------------
10 ACCOUNTING NEW
YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40
OPERATIONS BOSTON
50 IT_DEPT BEIJING
60
HR_DEPT SHANGHAI
6 rows selected.
6、修改序列
ALTER SEQUENCE dept_deptno
INCREMENT
BY 10
MAXVALUE 400
NOCACHE
NOCYCLE
/
Sequence altered.
7、删除序列
DROP SEQUENCE dept_deptno;
Sequence
dropped.
CUUG
更多oracle视频教程请点击:http://crm2.qq.com/page/portalpage/wpa.php?uin=800060152&f=1&ty=1&aty=0&a=&from=6
相关文章推荐
- Oracle数据库(Oracle存储结构、Oracle运行机制、日期相关的函数、序列、大对象数据类型、表的修改与约束、事务)
- Oracle其他数据对象 –- 序列
- Oracle 用户、角色、权限(系统权限、对象权限)的数据字典表
- ORACLE 常用的SQL语法和数据对象
- Oracle 11g系列:数据表对象
- oracle 11gR2 创建无数据对象临时不分配segment
- 6.4、视图、序列、同义词--Oracle模式对象
- oracle优化------缓存对象与数据
- 笔记之Oracle 数据字典视图:v$fixed_table里包含了三类对象:X$对象、基于X$表的GV$和V$视图
- Oracle数据对象--Oracle视图
- [导入]ORACLE 常用的SQL语法和数据对象
- Oracle插入数据并获取自增长序列ID方法
- ORACLE 常用的SQL语法和数据对象
- Oracle常见数据库对象—序列(10级学员 宋立兴课堂笔记)
- ORACLE 常用的SQL语法和数据对象
- 展示JDBC存取ORACLE大型数据对象CLOB几种情况的示范类
- PHP 5 数据对象 (PDO) 抽象层与 Oracle
- Oracle 查询表 视图 序列 表数据条数等信息查询
- oracle优化------缓存对象与数据
- 在Oracle中存储与管理大对象数据类型