最近接到一个需求,就是整理现有系统的库表清单和字段清单用于交付
一个系统那么多表和字段,这工作量可不小啊
作为一个技术人当然不甘于这样认输,果断查找是否可以通过sql查出,最后还是找到了
一、前言
说明
在mysql中,information_schema这个数据库中保存了mysql服务器所有数据库的信息。
包括数据库名,数据库的表,表字段的数据类型等。
简而言之,若想知道mysql中有哪些库,哪些表,表里面有哪些字段以及他们的注释,都可以从information_schema中获取。
二、查看数据所有表名及注释
可以根据文档要求来列出查询条件
文档要求:
库注释,库ip,库名,库类型都可以手动填,最后两个需要导出
select
t.TABLE_COMMENT,
t.TABLE_NAME
from
information_schema.tables t
where
t.TABLE_TYPE = 'BASE TABLE'
and TABLE_schema = '数据库名'
三、查看数据库所有表及字段的注释
文档要求:
表注释,表名,字段注释,字段名,字段类型都可以查出,
关联字段和字典项:字典项一般包含在字段注释里,可以忽略不填,关联字段涉及多表联查,可以酌情填写
SELECT a.TABLE_COMMENT AS 表注释, a.TABLE_NAME AS 表名, b.ordinal_position, b.COLUMN_name AS 字段名, b.COLUMN_type AS 字段类型, b.is_nullable AS 是否允许为空, b.column_key AS 是否为主键, b.COLUMN_comment AS 字段注释 FROM information_schema.TABLES a LEFT JOIN information_schema.COLUMNS b ON a.table_name = b.TABLE_NAME AND a.table_schema = b.table_schema WHERE a.table_schema = '数据库名' -- AND b.TABLE_NAME = '表名' ORDER BY a.TABLE_NAME,b.ordinal_position
有其他需求,可以查看information_schema.TABLES 和 information_schema.COLUMNS 表里面的字段,按需求列出查询项
四、查看指定表的字段及注释
select b.ordinal_position, b.COLUMN_name, b.COLUMN_type, b.COLUMN_comment, b.is_nullable, b.column_key from information_schema.TABLES a LEFT JOIN information_schema.COLUMNS b ON a.table_name = b.TABLE_NAME AND a.table_schema = b.table_schema where a.table_schema = '数据库名' AND b.TABLE_NAME = '表名'
参考文档: