工作中遇到了需要查询一个表的大小,使用命令如下
select concat(round(sum(DATA_LENGTH/1024/1024),2),'MB') as data from information_schema.TABLES
where table_schema='数据库名' and table_name='表名';
sum(expression),expression可为字段或者公式
round(x,d),用于对数据进行四舍五入,x表示要操作的数,d表示要保留的位数
concat(s1,s2,s3,...),将多个字符串拼接成一个字符串
DATA_LENGTH是字节数,所以通过/1024去转换成MB、GB等
information_schema数据库,这个数据库中装的是mysql的元数据,包括数据库信息、数据库中表的信息等,后续有使用到information_schema再深入学习
这里保留个疑问,为什么要对DATA_LENGTH/1024/1024出来的结果进行sum处理,难道是同一个表有可能会查询出多条结果吗?如果在tables里面,一个表就只有一条记录,那么就不需要对结果进行sum了啊。还是说我的理解有问题,此处保留,日后寻找答案