Oracle数据库 表数据的统计语句汇总

1.查找空表 

select TABLE_NAME from user_tables where num_rows=0 ORDER BY TABLE_NAME;

(用num_rows查找空表的前提是表的统计信息是实时的)

更新统计信息的方法:Oracle num_rows统计表的行数有延迟的解决方法_耶尔*的博客-CSDN博客
2.查看表大小

select SEGMENT_NAME as TABLE_NAME,BYTES/1024/1024 as 大小MB 
from USER_SEGMENTS 
where SEGMENT_TYPE='TABLE'
order by BYTES desc;

查看当前用户占用的总储存空间:

select sum(BYTES/1024/1024/1024) as 大小GB 
from USER_SEGMENTS 

3.查看数据库中的所有用户和用户下表的数量

select distinct owner from all_objects
--或
SELECT * FROM ALL_USERS 

select owner,count(1) cnt from all_tables group by owner order by cnt desc;

    查看当前用户的权限:

select * from user_role_privs;

4.查看当前连接的数据库实例

sqplus连接某一实例(本机上的)

sqlplus /@orcl as sysdba;

select name from v$database;

5.查看表的创建时间和最后修改时间

SELECT CREATED,LAST_DDL_TIME from user_objects where object_name=upper('表名');

6.查表得主键或其他约束

SELECT *
FROM user_cons_columns 
WHERE constraint_name IN (select constraint_name from user_constraints WHERE constraint_type ='P') --筛选主键约束

7.查表数据的插入时间

(oracle的伪列ORA_ROWSCN存放了行插入的时间)

select SCN_TO_TIMESTAMP(ORA_ROWSCN),t.* from COMPARE_CITY_PY_ALL t

关于此方法获取时间的其他问题,参考文章 关于获取oracle中数据变更的时间戳的探索(待更新)-阿里云开发者社区

8.释放表空间

1.开启允许行移动, 此操作后允许rowid改变。

执行语句:alter table 你的表名 enable row movement;

2.回收空间。

执行语句:alter table 你的表名 shrink space;

 9)查看一台服务器上数据库的版本

select * from v$version

10)查表的索引所在列

select a.INDEX_NAME,b.COLUMN_NAME
from user_indexes a,user_ind_columns b
where a.INDEX_NAME = b.INDEX_NAME 
 and a.TABLE_NAME = 'BASE_USERLOG' ;

你可能感兴趣的:(sql,数据库,oracle,1024程序员节)