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开始。