Mysql生成數(shù)據(jù)字典的原理與實(shí)例
生成原理
在MySQL中,有個(gè)自帶的數(shù)據(jù)庫,名為information_schema。其中保存著關(guān)于MySQL服務(wù)器所維護(hù)的所有其他數(shù)據(jù)庫的信息。如數(shù)據(jù)庫名,數(shù)據(jù)庫的表,表欄的數(shù)據(jù)類型與訪問權(quán) 限等。我們通過查詢這個(gè)數(shù)據(jù)庫的COLUMNS表(此表提供了其他所有表中的列信息)信息,來獲取我們需要的表結(jié)構(gòu)信息,從而將其導(dǎo)出為數(shù)據(jù)字典。
生成實(shí)例
navicat 執(zhí)行以下SQL的查詢(如果需要其他字段,請參考下面COLUMNS表字段拓展):
SELECT
COLUMN_NAME AS '字段名',
COLUMN_TYPE AS '字段類型',
( CASE WHEN IS_NULLABLE = 'YES' THEN '是' ELSE '否' END ) AS '是否可空',
( CASE WHEN COLUMN_KEY = 'PRI' THEN '是' ELSE '否' END ) AS '是否主鍵',
COLUMN_DEFAULT AS '默認(rèn)值',
COLUMN_COMMENT AS '注釋'
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_SCHEMA = '數(shù)據(jù)庫'
AND TABLE_NAME = '表';通過navicat工具進(jìn)行導(dǎo)出(如下圖的按鈕,之后自行選擇要導(dǎo)出的內(nèi)容);

COLUMNS表字段拓展:
| 列名 | 描述 |
|---|---|
| COLUMN_NAME | 字段名 |
| COLUMN_TYPE | 字段類型 |
| TABLE_CATALOG | 表限定符。 |
| IS_NULLABLE | 列的為空性。如果列允許 NULL,那么該列返回 YES。否則,返回 NO。 |
| COLUMN_KEY | 字段主鍵 |
| COLUMN_DEFAULT | 默認(rèn)值 |
| COLUMN_COMMENT | 注釋 |
| ORDINAL_POSITION | 字段在表的順序(從1開始) |
| TABLE_NAME | 數(shù)據(jù)表名 |
| TABLE_SCHEMA | 數(shù)據(jù)庫名 |
| DATA_TYPE | 數(shù)據(jù)類型 |
| DATETIME_PRECISION | datetime 及 SQL-92 interval 數(shù)據(jù)類型的子類型代碼。對于其它數(shù)據(jù)類型,返回 NULL。 |
| EXTRA | 額外信息 |
| GENERATION_EXPRESSION | |
| NUMERIC_PRECISION | 近似數(shù)字?jǐn)?shù)據(jù)、精確數(shù)字?jǐn)?shù)據(jù)、整型數(shù)據(jù)或貨幣數(shù)據(jù)的精度。否則,返回 NULL。 |
| NUMERIC_SCALE | 近似數(shù)字?jǐn)?shù)據(jù)、精確數(shù)字?jǐn)?shù)據(jù)、整數(shù)數(shù)據(jù)或貨幣數(shù)據(jù)的小數(shù)位數(shù)。否則,返回 NULL。 |
| PRIVILEGES | |
| CHARACTER_MAXIMUM_LENGTH | 以字符為單位的最大長度,適于二進(jìn)制數(shù)據(jù)、字符數(shù)據(jù),或者文本和圖像數(shù)據(jù)。否則,返回NULL。 |
| CHARACTER_OCTET_LENGTH | 以字節(jié)為單位的最大長度,適于二進(jìn)制數(shù)據(jù)、字符數(shù)據(jù),或者文本和圖像數(shù)據(jù)。否則,返回 NULL。 |
| CHARACTER_SET_NAME | 如果該列是字符數(shù)據(jù)或 text數(shù)據(jù)類型,那么為字符集返回唯一的名稱。否則,返回 NULL。 |
| COLLATION_NAME | 排序規(guī)則,如果列是字符數(shù)據(jù)或 text數(shù)據(jù)類型,那么為排序次序返回唯一的名稱。否則,返回 NULL。 |
附:1分鐘導(dǎo)出MySQL的數(shù)據(jù)字典
利用mysql的information_schema中的COLUMNS表和navicat中的導(dǎo)出功能實(shí)現(xiàn)快速導(dǎo)出數(shù)據(jù)字典,來看一下該表的表結(jié)構(gòu)
CREATE TEMPORARY TABLE `COLUMNS` ( `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 DEFAULT '0', `COLUMN_DEFAULT` longtext, `IS_NULLABLE` varchar(3) NOT NULL DEFAULT '', `DATA_TYPE` varchar(64) NOT NULL DEFAULT '', `CHARACTER_MAXIMUM_LENGTH` bigint(21)unsigned DEFAULT NULL, `CHARACTER_OCTET_LENGTH` bigint(21) unsigned DEFAULT NULL, `NUMERIC_PRECISION` bigint(21) unsigned DEFAULT NULL, `NUMERIC_SCALE` bigint(21) unsigned DEFAULTNULL, `DATETIME_PRECISION` bigint(21) unsigned DEFAULT NULL, `CHARACTER_SET_NAME` varchar(32) DEFAULT NULL, `COLLATION_NAME` varchar(32) DEFAULT 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 DEFAULT CHARSET=utf8;
例如我需要導(dǎo)出guifan庫和test庫的數(shù)據(jù)字典信息:
select TABLE_SCHEMA,TABLE_NAME,COLUMN_TYPE,COLUMN_COMMENT frominformation_schema.columns where TABLE_SCHEMA='guifan' or TABLE_SCHEMA='test'
在查詢結(jié)果頁面的右上角,有一個(gè)導(dǎo)出功能的按鈕,點(diǎn)一下可以選擇多種導(dǎo)出的格式,如下圖所示

按提示操作導(dǎo)出
OK,這就是我想要的數(shù)據(jù)字典

總結(jié)
到此這篇關(guān)于Mysql生成數(shù)據(jù)字典的原理與實(shí)例的文章就介紹到這了,更多相關(guān)Mysql生成數(shù)據(jù)字典內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MySQL 8.0數(shù)據(jù)字典的初始化與啟動流程
- Mysql?json類型字段Java+Mybatis數(shù)據(jù)字典功能的實(shí)踐方式
- 詳解PyMySQL插入字典類型的數(shù)據(jù)
- Python保存dict字典類型數(shù)據(jù)到Mysql并自動創(chuàng)建表與列
- 解析MySQL8.0新特性——事務(wù)性數(shù)據(jù)字典與原子DDL
- Python3自動生成MySQL數(shù)據(jù)字典的markdown文本的實(shí)現(xiàn)
- php生成mysql的數(shù)據(jù)字典
- MySQL 8.0數(shù)據(jù)字典緩存管理機(jī)制解析
相關(guān)文章
MySQL9.1.0實(shí)現(xiàn)最基礎(chǔ)主從復(fù)制的步驟
本文主要介紹了使用Docker實(shí)現(xiàn)MySQL的主從復(fù)制,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-02-02
linux下mysql5.7.19(tar.gz)安裝圖文教程
這篇文章主要為大家詳細(xì)介紹了linux下mysql5.7.19tar.gz安裝圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
MySQL數(shù)據(jù)更新操作的兩種辦法(數(shù)據(jù)可視化工具和SQL語句)
MySQL是最常用的數(shù)據(jù)庫,在數(shù)據(jù)庫操作中,基本都是增刪改查操作,簡稱CRUD,下面這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)更新操作的兩種辦法,需要的朋友可以參考下2023-03-03
mysql創(chuàng)建本地用戶及賦予數(shù)據(jù)庫權(quán)限的方法示例
這篇文章主要介紹了mysql創(chuàng)建本地用戶及賦予數(shù)據(jù)庫權(quán)限的相關(guān)資料,文中的介紹的非常詳細(xì),相信對大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。2017-04-04
MySQL 5.5 range分區(qū)增加刪除處理的方法示例
這篇文章主要給大家介紹了關(guān)于MySQL 5.5 range分區(qū)增加刪除處理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。2017-06-06
Mysql select in 按id排序?qū)崿F(xiàn)方法
有時(shí)候我們在后臺選擇了一系列的id,我們想安裝填寫id的順序進(jìn)行排序,那么就需要下面的order by方法,測試通過2013-03-03
MySQL 5.6下table_open_cache參數(shù)優(yōu)化合理配置詳解
這篇文章主要介紹了MySQL 5.6下table_open_cache參數(shù)合理配置詳解,需要的朋友可以參考下2018-03-03

