今天在看若依系统时,看到了代码生成功能部分,里面的列表显示了配置数据库中的各个表信息(包括表名,表注释,表创建时间等)。之前没见过这种场景,我带着疑问“呦呵,这是什么玩意,怎么实现的?”,然后在代码里噼里啪啦一顿找,终于看到了SQL实现,就是下边这个样子
看到information_schema.tables时,想了一下,没见过,但不重要,把控制台打印的SQL日志拷贝运行了一下,输出结果是这样的,我看到输出,“诶呦,这小玩意儿还挺好使”,然后在网上了解了一下大佬对information_schema.tables的解读,以此写下随笔,当做笔记。
information_schema.tables存储了数据表的元数据信息,主要用于查看数据库的表信息(包括视图)
其中table_information代表你要查询的表信息,database_name是要查询的数据库名称,没有where部分的话,默认是查询当前SQL连接下所有数据库的表信息
select [table_information1,table_information2,...] from information_schema.tables where table_schema = [database_name]
例:
select table_name, table_comment, create_time from information_schema.tables where table_schema = my_database
该语句表示查询my_database数据库下所有表的表名,表注释,表创建时间。
可以查询到的表信息有以下可选值:
字段 | 含义 |
---|---|
Table_catalog | 数据表登记目录 |
字段 | 含义 |
Table_catalog | 数据表登记目录 |
Table_schema | 数据表所属的数据库名 |
Table_name | 表名称 |
Table_type | 表类型[system view/base table] |
Engine | 使用的数据库引擎[MyISAM/CSV/InnoDB] |
Version | 版本,默认值10 |
Row_format | 行格式[Compact/Dynamic/Fixed] |
Table_rows | 表里所存多少行数据 |
Avg_row_length | 平均行长度 |
Data_length | 数据长度 |
Max_data_length | 最大数据长度 |
Index_length | 索引长度 |
Data_free | 空间碎片 |
Auto_increment | 做自增主键的自动增量当前值 |
Create_time | 表的创建时间 |
Update_time | 表的更新时间 |
Check_time | 表的检查时间 |
Table_collation | 表的字符校验编码集 |
Checksum | 校验和 |
Create_options | 创建选项 |
Table_comment | 表的注释、备注 |
如有错误,欢迎指正!