序列

 

1. 按对象类型分组查看数据库对象 dba_objects

SQL>SELECT d.object_type,count(*)
FROM  dba_objects d
GROUP BY d.object_type
HAVING count(*)>100
ORDER BY count(*) DESC;

 

常见的数据库对象
    同义词(synonym)
    表(TABLE)
    视图(VIEW)
    序列(SEQUENCE)
    索引(INDEX)
    还有约束(constraints)、分区表(table partition)常用函数(FUNCTION),存储过程(procedure),物化视图,外部表和JOB、触发器(trigger)等。 

2、查表的创建时间(只能多表查)

SQL>SELECT DT.table_name,
       DT.tablespace_name,
       DT.owner,
       DO.created
FROM DBA_TABLES DT,DBA_OBJECTS DO
WHERE DT.TABLE_NAME=DO.OBJECT_NAME
AND DT.owner=DO.owner
ORDER BY DO.created desc ;

 

3、序列操作(增删改查)

创建序列:CREATE SEQUENCE sequence

SQL>CREATE SEQUENCE dept_deptid_seq
INCREMENT BY 10    ---以每次10的速度增长
START WITH 120     ---从120开始增长
MAXVALUE 9999      ---最大值9999
Nocache            ---不缓存
NOCYCLE;           ---不循环

 

查询序列:NEXTVAL 和 CURRVAL 两个伪列实现

SQL>select * from dba_sequences d where d.sequence_name='dept_deptid_seq';

 

SQL>select dept_deptid_seq.NEXTVAL from dual;  ---注意新建序列查询时必须先查nextval,再查currval
select dept_deptid_seq.CURRVAL from dual;

 

修改序列:ALTER SEQUENCE sequence

SQL>CREATE SEQUENCE dept_deptid_seq
INCREMENT BY 10    ---以每次20的速度增长
START WITH 120     ---从150开始增长
MAXVALUE 9999      ---最大值9999
cache 100           ---缓存设为100
NOCYCLE;           ---不循环

 

删除序列:DROP SEQUENCE sequence

4、序列的用法

假定一个称为dept_deptid_seq的序列已经被创建用来产生新的雇员号

创建一个表 xxx,某列设置主键

CREATE TABLE xxx(ID NUMBER PRIMARY KEY)

往主键里插入序列(执行3次同样的插入命令后查看)

INSERT INTO xxx VALUES(dept_deptid_seq.nextval);

查看

SELECT * FROM xxt;

5、注意事项

1>注意新建序列查询时必须先查nextval,再查currval

2>当序列达到最大值后,如果是循环的,不管从几开始的,都从1开始。

 

 

posted @ 2020-12-05 18:42  Miracle2019  阅读(99)  评论(0编辑  收藏  举报