数据库中表、字段等相关信息(oracle、mysql、达梦)查询
作者:mmseoamin日期:2023-12-05
  1. oracle数据库:

查询所有用户

select * from all_users 
-- where USERNAME like 'sys_%' 

查询所有表信息,可根据用户查询

SELECT * FROM all_tables 
--WHERE OWNER = '' ORDER BY TABLE_NAME;

统计某个用户下表数量、表记录数据量

SELECT count(table_name),sum(num_rows) FROM all_tables WHERE OWNER = ''

统计表数据量大小(M)

select c.segment_name,b.TABLE_NAME, c.bytes,round(c.bytes / 1024 / 1024, 2 )|| 'M' from 
(SELECT table_name FROM all_tables 
WHERE OWNER = '' ORDER BY TABLE_NAME
 ) b
LEFT JOIN user_segments c on c.segment_name = b.TABLE_NAME and segment_type = 'TABLE'

2.mysql数据库:

查询所有表信息

select * 
from 
information_schema.tables 
where 
table_schema='当前数据库'
#table_rows是记录数

或者只想看表名可以用

show tables

查询字段注释为空的信息

select
column_name,
column_comment,
table_name 
from information_schema.columns
where table_schema = '当前数据库'
and (column_comment  is null or column_comment ='') 

查看单表的字段注释信息

show full columns from 表名;

查询表数据长度大小

SELECT
table_comment,
table_name,
    concat( round(DATA_LENGTH / 1024 / 1024, 2 ), 'M' ) 
FROM
    information_schema.TABLES 
WHERE
    table_schema = '当前数据库' 
    

3、达梦数据库:

查询某个模式下表信息

select * from sys.dba_tables where owner = '模式名'
--或者
select * from all_tables where owner = '模式名'

达梦处理CLOB类型:

dbms_lob.substr(clobcolumn,4000),对CLOB字段进行截取;

达梦处理TEXT类型:

convert(varchar(5000),TEXT字段) ,对TEXT类型进行处理

去除heji中非数字小数点部分:

SELECT
  heji,
   REGEXP_REPLACE(heji, '[^0-9\.]+', '') AS stripped_column
FROM
  "test"."test";

4、prostgreSQL

查询表数据量,估计值,不准确,准确数据只是一个表一个表统计

(统计信息收集器随时大致跟踪有多少行是“事件的”(未被删除或被以后的更新废弃)。在繁重的事件下,此值可能会略有偏差,但通常是一个不错的估计值,还可以显示有多少行已失效)

SELECT schemaname,relname,n_live_tup 
  FROM pg_stat_user_tables 
ORDER BY n_live_tup DESC;