欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Mysql生成數(shù)據(jù)字典的原理與實(shí)例

 更新時(shí)間:2022年03月24日 09:40:37   作者:WvemiC9  
數(shù)據(jù)字典是一名DBA需要維護(hù)的重要內(nèi)容,有人喜歡用excel來維護(hù),本人更喜歡直接在數(shù)據(jù)庫上進(jìn)行維護(hù),下面這篇文章主要給大家介紹了關(guān)于Mysql生成數(shù)據(jù)字典的原理與實(shí)例,以及導(dǎo)出MySQL的數(shù)據(jù)字典的方法,需要的朋友可以參考下

生成原理

在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_PRECISIONdatetime 及 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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論