一、前言
1.1 desc
可以查看某列是否是自增的
desc city;
1.2 show create table
查看建表语句也没有更多的信息
show create table city;
CREATE TABLE `city` (
`ID` int NOT NULL AUTO_INCREMENT,
`Name` char(35) NOT NULL DEFAULT '',
`CountryCode` char(3) NOT NULL DEFAULT '',
`District` char(20) NOT NULL DEFAULT '',
`Population` int NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`),
KEY `CountryCode` (`CountryCode`),
CONSTRAINT `city_ibfk_1` FOREIGN KEY (`CountryCode`) REFERENCES `country` (`Code`)
) ENGINE=InnoDB AUTO_INCREMENT=4080 DEFAULT CHARSET=latin1
二、元数据和视图表Schema
show databases;
红色箭头标记的,是安装mysql8后自动产生的两个个视图表,使用information_schema的视图查看功能,可以看到全局数据库或数据表的元数据信息,探究全局层面的元数据
关注的视图表字段说明:
序号 | 字段信息 | 解释说明 |
01 | TABLE_SCHEMA | 表示数据表所属库的名称信息 |
02 | TABLE_NAME | 表示数据库中所有数据表名称 |
03 | ENGINE | 表示数据库服务中的引擎信息 |
04 | TABLE_ROWS | 表示数据库相应数据表的行数 |
05 | AVG_ROW_LENGTH | 表示数据表中每行的平均长度 |
06 | INDEX_LENGTH | 表示数据表中索引信息的长度 |
07 | DATA_FREE | 表示数据库服务碎片数量信息 |
08 | CREATE_TIME | 表示数据表创建的时间戳信息 |
09 | UPDATE_TIME | 表示数据表修改的时间戳信息 |
10 | TABLE_COMMENT | 表示数据表对应所有注释信息 |
三、使用视图表查看自增详情
SELECT
AUTO_INCREMENT AS '起始值',
TABLE_NAME AS '表名'
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'your_database_name' -- 替换为你的数据库名
AND TABLE_NAME = 'your_table_name'; -- 替换为你的表名
SELECT
AUTO_INCREMENT AS '起始值',
TABLE_NAME AS '表名'
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = 'world'
AND TABLE_NAME = 'city';
四、使用视图表统计所有的库和表情况
select table_schema,count(*),group_concat(table_name)
from information_schema.tables
where table_schema
not in ('mysql','sys','performance_schema','information_schema')
group by table_schema;
排除了mysql8自带的库,效果如下
领导让我统计数据库中的使用情况就方便很多了。
还可以统计每个表的磁盘占用情况。
select table_schema,
sum(table_rows*avg_row_length+index_length)/1024/1024 '占用字节MB'
from information_schema.tables
where table_schema
not in ('mysql','sys','performance_schema','information_schema')
group by table_schema;