数据字典是DBA需要维护的重要内容。有人喜欢用excel维护,我更喜欢直接在数据库上维护。下面文章主要介绍MySQL生成数据字典的原理和实例,以及导出Mysql数据字典的方法。有需要的朋友可以参考一下。
目录
生成原理生成示例列表字段扩展:附件:1分钟导出的MySQL数据字典汇总
生成原理
在MySQL中,有一个名为information_schema的内置数据库。它保存了由MySQL服务器维护的所有其他数据库的信息。例如数据库的名称、数据库的表、表列的数据类型和访问权限限制。我们通过查询这个数据库的COLUMNS表(这个表提供了所有其他表的列信息)得到我们需要的表结构信息,然后导出为数据字典。
生成实例
Navicat执行以下SQL的查询(如果需要其他字段,请参考以下列表格字段扩展):
挑选
COLUMN_NAME作为“字段名”,
COLUMN_TYPE为“字段类型”,
(情况当IS _ NULLABLE= YES THEN YES ELSE no END)为 NULLABLE ,
(当COLUMN _ KEY= PRI THEN yes ELSE no END时的情况)作为主键,
COLUMN_DEFAULT作为“默认值”,
COLUMN_COMMENT作为“注释”
从
信息_模式。列
在哪里
TABLE_SCHEMA=数据库
而TABLE _ NAME= table
通过navicat工具导出(如下图所示的按钮,然后自己选择要导出的内容);
COLUMNS表字段拓展:
列描述COLUMN_NAME字段名称COLUMN_TYPE字段类型TABLE_CATALOG表限定符。IS_NULLABLE列的空值。如果该列允许NULL,则该列返回YES。否则,不返回。COLUMN_KEY字段主键COLUMN_DEFAULT默认值COLUMN_COMMENT注释ORDINAL_POSITION字段在表中的顺序(从1开始)TABLE_NAME数据表_SCHEMA数据库名称DATA_TYPE数据类型DATETIME _ PRECISIONdatetime日期时间和SQL-92interval数据类型的子类型代码。对于其他数据类型,将返回NULL。EXTRA extra信息Generation _ expression numeric _ precision近似数字数据、精确数字数据、整数数据或货币数据的精度。否则,返回NULL。NUMERIC_SCALE近似于数字数据、精确数字数据、整数数据或货币数据的小数位数。否则,返回NULL。privileges Character _ Maximum _ Length以字符为单位的最大长度,适用于二进制数据、字符数据或文本和图像数据。否则,返回NULL。CHARACTER_OCTET_LENGTH以字节为单位的最大长度,适用于二进制数据、字符数据或文本和图像数据。否则,返回NULL。CHARACTER_SET_NAME如果列是字符数据或文本数据类型,则为字符集返回一个唯一的名称。否则,返回NULL。COLLATION_NAME collation,如果列是字符数据或文本数据类型,则返回排序顺序的唯一名称。否则,返回NULL。
附:1分钟导出MySQL的数据字典
利用mysql的information_schema中的COLUMNS表和navicat中的export功能快速导出数据字典,看看这个表的表结构。
创建临时表“列”(
` table _ catalog ` varchar(512)NOT NULL DEFAULT ,
` table _ schema ` varchar(64)NOT NULL DEFAULT ,
` table _ name ` varchar(64)NOT NULL DEFAULT ,
` column _ name ` varchar(64)NOT NULL DEFAULT ,
` ordinal _ position ` bigint(21)unsigned NOT NULL默认值为 0 ,
` COLUMN_DEFAULT` longtext,
` is _ nullable ` varchar(3)NOT NULL DEFAULT ,
` data _ type ` varchar(64)NOT NULL DEFAULT ,
` character _ MAXIMUM _ length ` bigint(21)无符号缺省NULL,
` character _ OCTET _ length ` bigint(21)无符号缺省NULL,
` numeric _ precision bigint(21)无符号缺省NULL,
` NUMERIC_SCALE` bigint(21)无符号默认值NULL,
` DATETIME_PRECISION` bigint(21)无符号默认NULL,
` CHARACTER_SET_NAME` varchar(32)默认为NULL,
` COLLATION_NAME` varchar(32)默认为NULL,
` COLUMN_TYPE` longtext NOT NULL,
` column _ key ` varchar(3)NOT NULL DEFAULT ,
` extra varchar(30)NOT NULL DEFAULT ,
` privileges ` varchar(80)NOT NULL DEFAULT ,
` column _ comment ` varchar(1024)NOT NULL DEFAULT
)ENGINE=MyISAM默认字符集=utf8
比如我需要导出圭凡库和测试库的数据字典信息:
select TABLE_SCHEMA,TABLE_NAME,COLUMN_TYPE,COLUMN _ COMMENT from information _ SCHEMA . columns其中TABLE_SCHEMA=guifan 或TABLE_SCHEMA=test
在查询结果页面的右上角,有一个带导出功能的按钮。点击它可以选择多种导出格式,如下图所示。
按照提示进行导出。
好了,这就是我想要的数据字典。
总结
关于Mysql生成数据字典的原理和例子的这篇文章就到这里了。有关Mysql生成的数据字典的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!