Postgresql

  1. SELECT * FROM pg_description;
  2. SELECT * FROM pg_class
  3. -- 1、查询某Schema下的每张表的记录数:
  4. SELECT
  5. relname AS TABLE_NAME,
  6. CAST ( obj_description ( relfilenode, 'pg_class' ) AS VARCHAR ) AS COMMENT,
  7. ROUND( reltuples :: DECIMAL ) AS row_counter,
  8. relpages AS 磁盘大小,
  9. relkind AS 表类型
  10. FROM
  11. pg_class
  12. WHERE
  13. relkind = 'r'
  14. AND relnamespace = ( SELECT oid FROM pg_namespace WHERE nspname = 'public' )
  15. ORDER BY
  16. row_counter DESC;
  17. -- r =普通表, i =索引,S =序列,v =视图,m =物化视图, c =复合类型,t = TOAST表,f =外部表
  18. -- 2、查询表名和表注释
  19. SELECT
  20. relname AS tabname,
  21. CAST ( obj_description ( relfilenode, 'pg_class' ) AS VARCHAR ) AS COMMENT
  22. FROM
  23. pg_class C
  24. WHERE
  25. relname = 'table_name';
  26. -- 2、查询字段名、字段类型及字段长度和字段注释
  27. SELECT A
  28. .attnum,
  29. A.attname,
  30. concat_ws ( '', T.typname, SUBSTRING ( format_type ( A.atttypid, A.atttypmod ) FROM '\(.*\)' ) ) AS TYPE,
  31. d.description
  32. FROM
  33. pg_class C,
  34. pg_attribute A,
  35. pg_type T,
  36. pg_description d
  37. WHERE
  38. C.relname = 'scjdgl_ztjbxx'
  39. AND A.attnum > 0
  40. AND A.attrelid = C.oid
  41. AND A.atttypid = T.oid
  42. AND d.objoid = A.attrelid
  43. AND d.objsubid = A.attnum
  44. -- 3、查询表的大小
  45. select pg_size_pretty(pg_relation_size('table_name'));
  46. -- 5、查出所有表按大小排序并分离dataindex
  47. SELECT
  48. table_name,
  49. pg_size_pretty(table_size) AS table_size,
  50. pg_size_pretty(indexes_size) AS indexes_size,
  51. pg_size_pretty(total_size) AS total_size
  52. FROM (
  53. SELECT
  54. table_name,
  55. pg_table_size(table_name) AS table_size,
  56. pg_indexes_size(table_name) AS indexes_size,
  57. pg_total_relation_size(table_name) AS total_size
  58. FROM (
  59. SELECT ('"' || table_schema || '"."' || table_name || '"') AS table_name
  60. FROM information_schema.tables
  61. ) AS all_tables
  62. ORDER BY total_size DESC
  63. ) AS pretty_sizes
  64. -- 6、统计各数据库占用的磁盘大小
  65. SELECT d.datname AS Name, pg_catalog.pg_get_userbyid(d.datdba) AS Owner,
  66. CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')
  67. THEN pg_catalog.pg_size_pretty(pg_catalog.pg_database_size(d.datname))
  68. ELSE 'No Access'
  69. END AS SIZE
  70. FROM pg_catalog.pg_database d
  71. ORDER BY
  72. CASE WHEN pg_catalog.has_database_privilege(d.datname, 'CONNECT')
  73. THEN pg_catalog.pg_database_size(d.datname)
  74. ELSE NULL
  75. END DESC -- nulls first
  76. LIMIT 20
  77. /* 表名 字段 注释 类型*/
  78. SELECT C
  79. .relname 表名,
  80. CAST ( obj_description ( relfilenode, 'pg_class' ) AS VARCHAR ) 名称,
  81. A.attname 字段,
  82. d.description 字段备注,
  83. concat_ws ( '', T.typname, SUBSTRING ( format_type ( A.atttypid, A.atttypmod ) FROM '\(.*\)' ) ) AS 列类型
  84. FROM
  85. pg_class C,
  86. pg_attribute A,
  87. pg_type T,
  88. pg_description d
  89. WHERE
  90. A.attnum > 0
  91. AND A.attrelid = C.oid
  92. AND A.atttypid = T.oid
  93. AND d.objoid = A.attrelid
  94. AND d.objsubid = A.attnum
  95. AND C.relname IN ( SELECT tablename FROM pg_tables WHERE schemaname = 'public' AND POSITION ( '_2' IN tablename ) = 0 )
  96. ORDER BY
  97. C.relname,
  98. A.attnum
  99. /* 查询表名和表注释 */
  100. SELECT relname,obj_description(oid)
  101. FROM pg_class
  102. WHERE relkind = 'r' AND relname NOT LIKE'pg_%'
  103. AND relname NOT LIKE'sql_%'

MySql


/* 根据库名获取所有表的信息 */
SELECT
    *
FROM
    information_schema.`TABLES`
WHERE
    TABLE_SCHEMA = 'pdp_in';

/* 根据库名获取所有表名称和表说明 */
SELECT
    TABLE_NAME,
    TABLE_COMMENT
FROM
    information_schema.`TABLES`
WHERE
    TABLE_SCHEMA = 'pdp_in';

/* 根据库名获取所有的字段信息 */
SELECT
    TABLE_SCHEMA AS '库名',
    TABLE_NAME AS '表名',
    COLUMN_NAME AS '列名',
    ORDINAL_POSITION AS '列的排列顺序',
    COLUMN_DEFAULT AS '默认值',
    IS_NULLABLE AS '是否为空',
    DATA_TYPE AS '数据类型',
    CHARACTER_MAXIMUM_LENGTH AS '字符最大长度',
    NUMERIC_PRECISION AS '数值精度(最大位数)',
    NUMERIC_SCALE AS '小数精度',
    COLUMN_TYPE AS 列类型,
    COLUMN_KEY 'KEY',
    EXTRA AS '额外说明',
    COLUMN_COMMENT AS '注释'
FROM
    information_schema.`COLUMNS`
WHERE
    TABLE_SCHEMA = 'pdp_in'
ORDER BY
    TABLE_NAME,
    ORDINAL_POSITION;

/* 根据库名获取所有的库和表字段的基本信息 */
SELECT
    C.TABLE_SCHEMA AS '库名',
    T.TABLE_NAME AS '表名',
    T.TABLE_COMMENT AS '表注释',
    C.COLUMN_NAME AS '列名',
    C.COLUMN_COMMENT AS '列注释',
    C.ORDINAL_POSITION AS '列的排列顺序',
    C.COLUMN_DEFAULT AS '默认值',
    C.IS_NULLABLE AS '是否为空',
    C.DATA_TYPE AS '数据类型',
    C.CHARACTER_MAXIMUM_LENGTH AS '字符最大长度',
    C.NUMERIC_PRECISION AS '数值精度(最大位数)',
    C.NUMERIC_SCALE AS '小数精度',
    C.COLUMN_TYPE AS 列类型,
    C.COLUMN_KEY 'KEY',
    C.EXTRA AS '额外说明'
FROM
    information_schema.`TABLES` T
LEFT JOIN information_schema.`COLUMNS` C ON T.TABLE_NAME = C.TABLE_NAME
AND T.TABLE_SCHEMA = C.TABLE_SCHEMA
WHERE
    T.TABLE_SCHEMA = 'pdp_in' 
ORDER BY
    C.TABLE_NAME,
    C.ORDINAL_POSITION;


-- 1. 查看所有数据库容量大小
SELECT
    table_schema AS '数据库',
    sum( table_rows ) AS '记录数',
    sum(
    TRUNCATE ( data_length / 1024 / 1024, 2 )) AS '数据容量(MB)',
    sum(
    TRUNCATE ( index_length / 1024 / 1024, 2 )) AS '索引容量(MB)' 
FROM
    information_schema.TABLES 
GROUP BY
    table_schema 
ORDER BY
    sum( data_length ) DESC,
    sum( index_length ) DESC;

--  2. 查看所有数据库各表容量大小
SELECT
    table_schema AS '数据库',
    table_name AS '表名',
    table_rows AS '记录数',
    TABLE_COMMENT,
    TRUNCATE ( data_length / 1024 / 1024, 2 ) AS '数据容量(MB)',
    TRUNCATE ( index_length / 1024 / 1024, 2 ) AS '索引容量(MB)',
--     DATA_LENGTH,
--     AVG_ROW_LENGTH,
    UPDATE_TIME
FROM
    information_schema.TABLES
WHERE table_schema = 'pdp_in'
ORDER BY
    data_length DESC,
    index_length DESC;

-- 一共有多少个字段
select count(*) from information_schema.COLUMNS where TABLE_SCHEMA='pdp_in'