mysql实现postgres中pg_size_pretty函数

背景

之前写了一篇关于查询PostgreSql数据库中表基础信息的文章,
其中关于表数据长度用到了一个pg_size_pretty函数
(可以将结果格式化成一种人类易读的格式,根据情况使用字节、kB、MB、GB 或者 TB),
记录下如何在mysql中实现类似效果。

获取表数据长度

查询bigdata-app这个库中所有数据长度

SELECT
	TABLE_NAME,
	CASE
		WHEN DATA_LENGTH > 1 << 30 THEN
		CONCAT(ROUND( DATA_LENGTH / ( 1 << 30 ), 2 ),' GB')
		WHEN DATA_LENGTH > 1 << 20 THEN
		CONCAT(ROUND( DATA_LENGTH / ( 1 << 20 ), 2 ),' MB')
		WHEN DATA_LENGTH > 1 << 10 THEN
		CONCAT(ROUND( DATA_LENGTH / ( 1 << 10 ), 2 ),' kB')
		ELSE CONCAT(DATA_LENGTH,' bytes')
	END len
FROM
	information_schema.`TABLES` 
WHERE
	TABLE_SCHEMA = 'bigdata-app';

查询表数据长度

获取表详细信息

包括表名称,所属数据库,表占用空间大小,注释,创建时间等信息。

SELECT
	TABLE_NAME,
	TABLE_SCHEMA,
	CASE
		WHEN DATA_LENGTH > 1 << 30 THEN
		CONCAT(ROUND( DATA_LENGTH / ( 1 << 30 ), 2 ),' GB')
		WHEN DATA_LENGTH > 1 << 20 THEN
		CONCAT(ROUND( DATA_LENGTH / ( 1 << 20 ), 2 ),' MB')
		WHEN DATA_LENGTH > 1 << 10 THEN
		CONCAT(ROUND( DATA_LENGTH / ( 1 << 10 ), 2 ),' kB')
		ELSE CONCAT(DATA_LENGTH,' bytes')
	END,
	TABLE_COMMENT,
	CREATE_TIME 
FROM
	information_schema.`TABLES` 
WHERE
	TABLE_SCHEMA = 'bigdata-app';

表详细信息

获取表字段详细信息

包括字段名称,注释,类型,长度,是否为主键等信息。

SELECT
	COLUMN_NAME,
	COLUMN_COMMENT,
	DATA_TYPE,
	REPLACE ( REPLACE ( SUBSTR( COLUMN_TYPE, POSITION( '(' IN COLUMN_TYPE )), '(', '' ), ')', '' ),
IF
	( COLUMN_KEY = 'PRI', 1, 0 ) 
FROM
	information_schema.`COLUMNS` 
WHERE
	TABLE_SCHEMA = 'bigdata-app' 
	AND table_name = 'app_ds_connect';

表字段详细信息

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值