在寫設計文檔時,需要把MySQL中的表結構按要求導出呀袱。MySQL客戶端默認的字段不滿足需求時差导,可通過MySQL的information_schema.COLUMNS表砌函,查詢并按需求導出字段曾撤。
information_schema.COLUMNS表記錄了所有庫中所有表的字段信息娄徊,如下:
字段具體意義如下:
字段 | 備注 |
---|---|
TABLE_CATALOG | def 標記符 |
TABLE_SCHEMA | 表、視圖所在的數(shù)據(jù)庫名 |
TABLE_NAME | 表盾戴、視圖名 |
COLUMN_NAME | 字段名 |
ORDINAL_POSITION | 字段編號寄锐,從1開始往后排 |
COLUMN_DEFAULT | 字段默認值 |
IS_NULLABLE | 字段是否可空 |
DATA_TYPE | 字段數(shù)據(jù)類型 |
CHARACTER_MAXIMUM_LENGTH | 字段的最大字符數(shù);只適用于二進制數(shù)據(jù)(字符尖啡,文本橄仆,圖像數(shù)據(jù)),其他類型數(shù)據(jù)(int衅斩,float盆顾,datetime等)為NULL |
CHARACTER_OCTET_LENGTH | 字段的最大字節(jié)數(shù);只適用于二進制數(shù)據(jù)(字符畏梆,文本您宪,圖像數(shù)據(jù)),其他類型數(shù)據(jù)(int奠涌,float宪巨,datetime等)為NULL;和最大字符數(shù)的數(shù)值有比例關系溜畅,和字符集有關捏卓,比如UTF8類型的表,最大字節(jié)數(shù)是最大字符數(shù)的3倍 |
NUMERIC_PRECISION | 數(shù)字精度 |
NUMERIC_SCALE | 小數(shù)位數(shù) |
DATETIME_PRECISION | datetime類型和SQL-92interval類型數(shù)據(jù)庫的子類型代碼 |
CHARACTER_SET_NAME | 字段字符集名稱 |
COLLATION_NAME | 字符集排序規(guī)則慈格;utf8_general_ci怠晴,是不區(qū)分大小寫一種排序規(guī)則,utf8_general_cs浴捆,是區(qū)分大小寫的排序規(guī)則 |
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為數(shù)據(jù)庫名稱,到時候只需要修改成你要導出表結構的數(shù)據(jù)庫即可
table_schema = 'simulation_platform'
-- task為表名滔金,到時候換成你要導出的表的名稱
-- 如果不寫的話色解,默認會查詢出所有表中的數(shù)據(jù)茂嗓,這樣可能就分不清到底哪些字段是哪張表中的了餐茵,所以還是建議寫上要導出的名名稱
AND table_name = 'task'
輸出如下:
還可新建視圖,保存該SQL述吸,通過客戶端的導出功能忿族,直接輸出Excel或其它格式锣笨。