一、表结构查询语句
sql server数据库
查询数据库名
select db_name()
查询所有表名及描述
select tbs.name [Key],ds.value [Value] from {yourdbname}..sysobjects tbs--yourdbname可省略 left join sys.extended_properties ds on tbs.id=ds.major_id and ds.minor_id=0 where tbs.xtype='U' order by [Key]
查询所有表字段数据类型长度字段描述默认值等信息
SELECT obj.name AS 表名, col.colorder AS 序号, col.name AS 列名, ISNULL(ep.[value], '') AS 列说明, t.name AS 数据类型, col.length AS 长度, ISNULL(COLUMNPROPERTY(col.id, col.name, 'Scale'), 0) AS 小数, CASE WHEN COLUMNPROPERTY(col.id, col.name, 'IsIdentity') = 1 THEN '√' ELSE '' END AS 标识, CASE WHEN EXISTS (SELECT 1 FROM dbo.sysindexes si INNER JOIN dbo.sysindexkeys sik ON si.id = sik.id AND si.indid = sik.indid INNER JOIN dbo.syscolumns sc ON sc.id = sik.id AND sc.colid = sik.colid INNER JOIN dbo.sysobjects so ON so.name = si.name AND so.xtype = 'PK' WHERE sc.id = col.id AND sc.colid = col.colid ) THEN '√' ELSE '' END AS 主键, CASE WHEN col.isnullable = 1 THEN '√' ELSE '' END AS 空值, ISNULL(comm.text, '') AS 默认值 FROM dbo.syscolumns col LEFT JOIN dbo.systypes t ON col.xtype = t.xusertype INNER JOIN dbo.sysobjects obj ON col.id = obj.id AND obj.xtype = 'U' AND obj.status >= 0 ------(xtype = 'U'非用户表) LEFT JOIN dbo.syscomments comm ON col.cdefault = comm.id LEFT JOIN sys.extended_properties ep ON col.id = ep.major_id AND col.colid = ep.minor_id AND ep.name = 'MS_Description' LEFT JOIN sys.extended_properties epTwo ON obj.id = epTwo.major_id AND epTwo.minor_id = 0 AND epTwo.name = 'MS_Description' --WHERE obj.name = 'yourtablename'
mysql数据库
查询数据库名
select database()
查询所有表名及描述
SELECT TABLE_NAME `Key`,TABLE_COMMENT `Value` FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='yourdbname' AND TABLE_TYPE='base table'
查询所有表字段信息
SELECT TABLE_NAME AS '表名', COLUMN_NAME AS '列名', ORDINAL_POSITION AS '序号', COLUMN_DEFAULT AS '默认值', case IS_NULLABLE when 'YES' then '√' else '' end AS '空值', DATA_TYPE AS '数据类型', CHARACTER_MAXIMUM_LENGTH AS '长度', NUMERIC_PRECISION AS '数值最大位数', NUMERIC_SCALE AS '小数', case COLUMN_KEY when 'PRI' then '√' else '' end as '主键', case EXTRA when 'AUTO_INCREMENT' then '√' else '' end AS '标识', COLUMN_COMMENT AS '列说明' FROM information_schema.`COLUMNS` WHERE TABLE_SCHEMA = 'yourdbname' ORDER BY TABLE_NAME,ORDINAL_POSITION
二、工具
以上sql语句可以查看表、字段名称及描述信息,也有人需要用工具将这些信息导出到文件。个人为了学习,使用.net core写了一个小工具。自动生成数据库说明文档(html文件)。有兴趣https://github.com/ghconn/vdesn,使用需要安装.net core sdk 2.2,下载