MySQL查询数据库中所有表名表结构及注释以及生成数据库文档 ...

打印 上一主题 下一主题

主题 587|帖子 587|积分 1761

MySQL查询数据库中所有表名表结构及注释
生成数据库文档在后面!!! 
  1. select t.TABLE_COMMENT -- 数据表注释
  2. , c.TABLE_NAME -- 表名称
  3. , c.COLUMN_COMMENT -- 数据项
  4. , c.COLUMN_NAME -- 英文名称
  5. , '' -- 字段描述
  6. , upper(c.DATA_TYPE) as DATA_TYPE -- 数据类型
  7. , c.CHARACTER_MAXIMUM_LENGTH -- 数据长度
  8. , '' -- 是否字典项
  9. , '' -- 字典内容
  10. , (case
  11. when c.IS_NULLABLE = 'YES' then '是'
  12. when c.IS_NULLABLE = 'NO' then '否'
  13. else c.IS_NULLABLE
  14. end) as IS_NULLABLE -- 是否为空
  15. , (
  16. case
  17. when c.COLUMN_KEY = 'PRI' then '是'
  18. when c.COLUMN_KEY is null or c.COLUMN_KEY = '' then '是'
  19. else c.COLUMN_KEY
  20. end
  21. ) as COLUMN_KEY-- 是否主键
  22. , c.COLUMN_DEFAULT-- 默认值
  23. from information_schema.COLUMNS c,
  24. information_schema.TABLES t
  25. where c.TABLE_NAME = t.TABLE_NAME
  26. and c.TABLE_SCHEMA not in ('information_schema', 'sys', 'performance_schema', 'mysql')
  27. order by t.TABLE_COMMENT
  28. ;
复制代码

从information_schema.COLUMNS和information_schema.TABLES这两个体系视图中检索数据表及其列的详细信息。

  • 笛卡尔积:您的查询使用了逗号分隔的表名(information_schema.COLUMNS c, information_schema.TABLES t),这会导致两个表之间的笛卡尔积,除非您通过WHERE子句或其他方式明确指定连接条件。在您的例子中,您确实在WHERE子句中指定了c.TABLE_NAME = t.TABLE_NAME作为连接条件,但这仍旧可能导致性能题目,由于不是标准的JOIN语法。
  • JOIN语法:建议使用显式的JOIN语法来连接表,由于它更清楚且更容易维护。
  • 表注释:t.TABLE_COMMENT可能是从TABLES视图中获取的,但是您没有确保TABLES视图中的TABLE_COMMENT是针对与COLUMNS中雷同的TABLE_SCHEMA的。
  • 字段形貌:您为“字段形貌”预留了两个空字符串占位符,但您可能希望从某个地方获取实际的形貌。
  • CASE表达式:您的CASE表达式用于确定IS_NULLABLE和COLUMN_KEY的值,但有一个潜伏的题目:当COLUMN_KEY为NULL或空字符串时,您将其设置为'是',这可能不是您想要的结果。通常,主键字段不会是'是'。
 简洁版:
  1. SELECT   
  2.     t.TABLE_COMMENT AS 数据表注释,  
  3.     c.TABLE_NAME AS 表名称,  
  4.     c.COLUMN_COMMENT AS 数据项,  
  5.     c.COLUMN_NAME AS 英文名称,  
  6.     '' AS 字段描述, -- 这里可以替换为实际的字段描述来源  
  7.     UPPER(c.DATA_TYPE) AS DATA_TYPE,  
  8.     c.CHARACTER_MAXIMUM_LENGTH AS 数据长度,  
  9.     '' AS 是否字典项, -- 这里可以替换为实际的字典项来源  
  10.     '' AS 字典内容, -- 这里可以替换为实际的字典内容来源  
  11.     CASE   
  12.         WHEN c.IS_NULLABLE = 'YES' THEN '是'  
  13.         WHEN c.IS_NULLABLE = 'NO' THEN '否'  
  14.         ELSE c.IS_NULLABLE  
  15.     END AS IS_NULLABLE,  
  16.     CASE   
  17.         WHEN c.COLUMN_KEY = 'PRI' THEN '是'  
  18.         WHEN c.COLUMN_KEY IN ('MUL', 'UNI') THEN '其他键' -- 例如:唯一键或多键  
  19.         ELSE '否'  
  20.     END AS COLUMN_KEY,  
  21.     c.COLUMN_DEFAULT AS 默认值  
  22. FROM   
  23.     information_schema.COLUMNS c  
  24. JOIN   
  25.     information_schema.TABLES t ON c.TABLE_NAME = t.TABLE_NAME AND c.TABLE_SCHEMA = t.TABLE_SCHEMA  
  26. WHERE   
  27.     c.TABLE_SCHEMA NOT IN ('information_schema', 'sys', 'performance_schema', 'mysql')  
  28. ORDER BY   
  29.     t.TABLE_COMMENT;
复制代码

生成数据库文档!!!
screw: 简洁好用的数据库表结构文档工具,支持MySQL/MariaDB/SqlServer/Oracle/PostgreSQL/TIDB/CacheDB 数据库。 - Gitee.com
使用方法:
1、在pom文件中添加插件
  1. <build>
  2.       
  3.             <plugin>
  4.                 <groupId>cn.smallbun.screw</groupId>
  5.                 <artifactId>screw-maven-plugin</artifactId>
  6.                 <version>1.0.4</version>
  7.                 <dependencies>
  8.                     <!-- HikariCP -->
  9.                     <dependency>
  10.                         <groupId>com.zaxxer</groupId>
  11.                         <artifactId>HikariCP</artifactId>
  12.                         <version>3.4.5</version>
  13.                     </dependency>
  14.                     <!--mysql driver-->
  15.                     <dependency>
  16.                         <groupId>mysql</groupId>
  17.                         <artifactId>mysql-connector-java</artifactId>
  18.                         <version>8.0.20</version>
  19.                     </dependency>
  20.                 </dependencies>
  21.                 <configuration>
  22.                     <!--username-->
  23.                     <username>root</username>
  24.                     <!--password-->
  25.                     <password>#n4rj</password>
  26.                     <!--driver-->
  27.                     <driverClassName>com.mysql.cj.jdbc.Driver</driverClassName>
  28.                     <!--jdbc url-->
  29.                     <jdbcUrl>jdbc:mysql://1.1.1.1:3456/tlink_sdgf</jdbcUrl>
  30.                     <!--生成文件类型、HTML-->
  31.                     <fileType>WORD</fileType>
  32.                     <!--打开文件输出目录-->
  33.                     <openOutputDir>false</openOutputDir>
  34.                     <!--生成模板-->
  35.                     <produceType>freemarker</produceType>
  36.                     <!--文档名称 为空时:将采用[数据库名称-描述-版本号]作为文档名称-->
  37.                     <fileName>测试文档名称</fileName>
  38.                     <!--描述-->
  39.                     <description>数据库文档生成</description>
  40.                     <!--版本-->
  41.                     <version>${project.version}</version>
  42.                     <!--标题-->
  43.                     <title>数据库文档</title>
  44.                 </configuration>
  45.                 <executions>
  46.                     <execution>
  47.                         <phase>compile</phase>
  48.                         <goals>
  49.                             <goal>run</goal>
  50.                         </goals>
  51.                     </execution>
  52.                 </executions>
  53.             </plugin>
  54.         </plugins>
  55.     </build>
复制代码
 2、点开maven找到该pom文件下面的插件双击run


3、成功之后在该pom文件的模块下面生成了一个doc文件夹下面就是生成的文档



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曹旭辉

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表