使用Navicat等可视化数据库工具以Excel格式导出MySQL表结构

最近一直在写项目的接口和设计文档,需要将数据库中的表结构以Excel格式导出,通过在网上的搜索,结合自己的实际使用经验,总结方法如下:

本文以Navicat为例进行讲解,其他工具类似。

第一步,使用Navicat连接数据库,并打开查询界面,新建一个空的查询:

第二步,在查询界面中输入以下SQL语句:

SELECT
COLUMN_NAME 列名,
COLUMN_TYPE 数据类型,
IS_NULLABLE 允许空,
COLUMN_DEFAULT 默认值,
COLUMN_KEY 约束,
COLUMN_COMMENT 备注
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE– database_name为数据库名称,到时候只需要修改成你要导出表结构的数据库即可
table_schema = ‘database_name’
AND — table_name为表名,到时候换成你要导出的表的名称
— 如果不写的话,默认会查询出所有表中的数据,这样可能就分不清到底哪些字段是哪张表中的了,所以还是建议写上要导出的名名称
table_name = ‘table_name’

第三步,单击运行,即可以看到我们已经拿到了数据库结构:

第四步,全选查询结果,单击鼠标右键,在弹出的菜单中,依次单击“复制为”,“制表符分隔值(字段名和数据)”:

第五步,打开Excel,粘贴刚才复制的内容,然后可以按照自己的需要对格式进行调整并保存,至此,完成MySQL表结构导出成Excel格式的操作。

上述操作方法,本质上其实是通过MySQL的information_schema数据库中的COLUMNS表查询数据库中表的字段信息,COLUMNS表中记录了MySQL所有库中所有表的字段信息,COLUMNS表的结构如下图所示:

下面对每一个字段所存储的内容进行说明:

TABLE_CATALOG
MySQL官方文档中说,这个字段值永远是def,但没写这个字段是干嘛用的。网上有把这个叫表限定符的,有叫登记目录的。作用疑似是和其他种类的数据库做区分。

TABLE_SCHEMA
表格所属的库。

TABLE_NAME
表名

COLUMN_NAME
字段名

ORDINAL_POSITION
字段标识。

其实就是字段编号,从1开始往后排。

COLUMN_DEFAULT
字段默认值。

IS_NULLABLE
字段是否可以为NULL。该列记录的值是YES或者NO。

DATA_TYPE
数据类型。里面的值是字符串,比如varchar,float,int。

CHARACTER_MAXIMUM_LENGTH
字段的最大字符数。假如字段设置为varchar(50),那么这一列记录的值就是50。该列只适用于二进制数据,字符,文本,图像数据。其他类型数据比如int,float,datetime等,在该列显示为NULL。

CHARACTER_OCTET_LENGTH
字段的最大字节数。和最大字符数一样,只适用于二进制数据,字符,文本,图像数据,其他类型显示为NULL。和最大字符数的数值有比例关系,和字符集有关。比如UTF8类型的表,最大字节数就是最大字符数的3倍。

NUMERIC_PRECISION
数字精度。适用于各种数字类型比如int,float之类的。如果字段设置为int(10),那么在该列保存的数值是9,少一位,还没有研究原因。如果字段设置为float(10,3),那么在该列报错的数值是10。非数字类型显示为在该列NULL。

NUMERIC_SCALE
小数位数。和数字精度一样,适用于各种数字类型比如int,float之类。如果字段设置为int(10),那么在该列保存的数值是0,代表没有小数。如果字段设置为float(10,3),那么在该列报错的数值是3。非数字类型显示为在该列NULL。

DATETIME_PRECISION
datetime类型和SQL-92interval类型数据库的子类型代码。我本地datetime类型的字段在该列显示为0。其他类型显示为NULL。

CHARACTER_SET_NAME
字段字符集名称。比如utf8。

COLLATION_NAME
字符集排序规则。比如utf8_general_ci,是不区分大小写一种排序规则。utf8_general_cs,是区分大小写的排序规则。

COLUMN_TYPE
字段类型。比如float(9,3),varchar(50)。

COLUMN_KEY
索引类型。可包含的值有PRI,代表主键,UNI,代表唯一键,MUL,可重复。

EXTRA
其他信息。比如主键的auto_increment。

PRIVILEGES
权限。多个权限用逗号隔开,比如 select,insert,update,references

COLUMN_COMMENT
字段注释

GENERATION_EXPRESSION
组合字段的公式。

本文主要参考以下两篇文章完成:
https://jingyan.baidu.com/album/8ebacdf07fcdfb49f75cd541.html?picindex=2
https://blog.csdn.net/lkforce/article/details/79557482

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据