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

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

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

d313aa94991945ab09855a89b6890dab.png

第二步,在查询界面中输入以下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’

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

dfe7f02c4eed37833bddcf69a496a23d.png

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

38115cce55361a980b67447be32a0c18.png

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

a0d1430997d938335e5e1470c24e2bb0.png

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

641c125986029b77730d7239477f5540.png

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

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

组合字段的公式。

Logo

一站式 AI 云服务平台

更多推荐