在写设计文档时,需要把MySQL中的表结构按要求导出。MySQL客户端默认的字段不满足需求时,可通过MySQL的information_schema.COLUMNS表,查询并按需求导出字段。
information_schema.COLUMNS表记录了所有库中所有表的字段信息,如下:
字段具体意义如下:
字段 | 备注 |
---|---|
TABLE_CATALOG | def 标记符 |
TABLE_SCHEMA | 表、视图所在的数据库名 |
TABLE_NAME | 表、视图名 |
COLUMN_NAME | 字段名 |
ORDINAL_POSITION | 字段编号,从1开始往后排 |
COLUMN_DEFAULT | 字段默认值 |
IS_NULLABLE | 字段是否可空 |
DATA_TYPE | 字段数据类型 |
CHARACTER_MAXIMUM_LENGTH | 字段的最大字符数;只适用于二进制数据(字符,文本,图像数据),其他类型数据(int,float,datetime等)为NULL |
CHARACTER_OCTET_LENGTH | 字段的最大字节数;只适用于二进制数据(字符,文本,图像数据),其他类型数据(int,float,datetime等)为NULL;和最大字符数的数值有比例关系,和字符集有关,比如UTF8类型的表,最大字节数是最大字符数的3倍 |
NUMERIC_PRECISION | 数字精度 |
NUMERIC_SCALE | 小数位数 |
DATETIME_PRECISION | datetime类型和SQL-92interval类型数据库的子类型代码 |
CHARACTER_SET_NAME | 字段字符集名称 |
COLLATION_NAME | 字符集排序规则;utf8_general_ci,是不区分大小写一种排序规则,utf8_general_cs,是区分大小写的排序规则 |
COLUMN_TYPE | 字段类型 |
COLUMN_KEY | 索引类型(PRI-主键,UNI-唯一键,MUL-可重复) |
EXTRA | 附加信息,比如 主键的auto_increment |
PRIVILEGES | 权限(多个权限用逗号隔开-select,insert,update,references) |
COLUMN_COMMENT | 字段注释 |
可按照上述字段信息提取相应表的表结构,SQL如下:
SELECT
COLUMN_NAME 字段名称,
COLUMN_TYPE 字段类型,
COLUMN_DEFAULT 默认值,
CHARACTER_MAXIMUM_LENGTH AS 最大长度,
(
CASE
WHEN is_nullable = 'NO' THEN
'否'
ELSE
'是'
END
) AS 是否可空,
(
CASE
WHEN column_key = 'PRI' THEN
'是'
ELSE
'否'
END
) AS 是否主键,
COLUMN_COMMENT 描述
FROM
INFORMATION_SCHEMA. COLUMNS
WHERE
-- simulation_platform为数据库名称,到时候只需要修改成你要导出表结构的数据库即可
table_schema = 'simulation_platform'
-- task为表名,到时候换成你要导出的表的名称
-- 如果不写的话,默认会查询出所有表中的数据,这样可能就分不清到底哪些字段是哪张表中的了,所以还是建议写上要导出的名名称
AND table_name = 'task'
输出如下:
还可新建视图,保存该SQL,通过客户端的导出功能,直接输出Excel或其它格式。