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

MySQL查询数据库中所有表名表结构及注释

生成数据库文档在后面!!! 

select t.TABLE_COMMENT -- 数据表注释
, c.TABLE_NAME -- 表名称
, c.COLUMN_COMMENT -- 数据项
, c.COLUMN_NAME -- 英文名称
, '' -- 字段描述
, upper(c.DATA_TYPE) as DATA_TYPE -- 数据类型
, c.CHARACTER_MAXIMUM_LENGTH -- 数据长度
, '' -- 是否字典项
, '' -- 字典内容
, (case
when c.IS_NULLABLE = 'YES' then '是'
when c.IS_NULLABLE = 'NO' then '否'
else c.IS_NULLABLE
end) as IS_NULLABLE -- 是否为空
, (
case
when c.COLUMN_KEY = 'PRI' then '是'
when c.COLUMN_KEY is null or c.COLUMN_KEY = '' then '是'
else c.COLUMN_KEY
end
) as COLUMN_KEY-- 是否主键
, c.COLUMN_DEFAULT-- 默认值
from information_schema.COLUMNS c,
information_schema.TABLES t
where c.TABLE_NAME = t.TABLE_NAME
and c.TABLE_SCHEMA not in ('information_schema', 'sys', 'performance_schema', 'mysql')
order by t.TABLE_COMMENT
;

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

  1. 笛卡尔积:您的查询使用了逗号分隔的表名(information_schema.COLUMNS c, information_schema.TABLES t),这会导致两个表之间的笛卡尔积,除非您通过WHERE子句或其他方式明确指定连接条件。在您的例子中,您确实在WHERE子句中指定了c.TABLE_NAME = t.TABLE_NAME作为连接条件,但这仍然可能导致性能问题,因为不是标准的JOIN语法。
  2. JOIN语法:建议使用显式的JOIN语法来连接表,因为它更清晰且更容易维护。
  3. 表注释t.TABLE_COMMENT可能是从TABLES视图中获取的,但是您没有确保TABLES视图中的TABLE_COMMENT是针对与COLUMNS中相同的TABLE_SCHEMA的。
  4. 字段描述:您为“字段描述”预留了两个空字符串占位符,但您可能希望从某个地方获取实际的描述。
  5. CASE表达式:您的CASE表达式用于确定IS_NULLABLECOLUMN_KEY的值,但有一个潜在的问题:当COLUMN_KEYNULL或空字符串时,您将其设置为'是',这可能不是您想要的结果。通常,主键字段不会是'是'。

 简洁版:

SELECT   
    t.TABLE_COMMENT AS 数据表注释,  
    c.TABLE_NAME AS 表名称,  
    c.COLUMN_COMMENT AS 数据项,  
    c.COLUMN_NAME AS 英文名称,  
    '' AS 字段描述, -- 这里可以替换为实际的字段描述来源  
    UPPER(c.DATA_TYPE) AS DATA_TYPE,  
    c.CHARACTER_MAXIMUM_LENGTH AS 数据长度,  
    '' AS 是否字典项, -- 这里可以替换为实际的字典项来源  
    '' AS 字典内容, -- 这里可以替换为实际的字典内容来源  
    CASE   
        WHEN c.IS_NULLABLE = 'YES' THEN '是'  
        WHEN c.IS_NULLABLE = 'NO' THEN '否'  
        ELSE c.IS_NULLABLE  
    END AS IS_NULLABLE,  
    CASE   
        WHEN c.COLUMN_KEY = 'PRI' THEN '是'  
        WHEN c.COLUMN_KEY IN ('MUL', 'UNI') THEN '其他键' -- 例如:唯一键或多键  
        ELSE '否'  
    END AS COLUMN_KEY,  
    c.COLUMN_DEFAULT AS 默认值  
FROM   
    information_schema.COLUMNS c  
JOIN   
    information_schema.TABLES t ON c.TABLE_NAME = t.TABLE_NAME AND c.TABLE_SCHEMA = t.TABLE_SCHEMA  
WHERE   
    c.TABLE_SCHEMA NOT IN ('information_schema', 'sys', 'performance_schema', 'mysql')  
ORDER BY   
    t.TABLE_COMMENT;

生成数据库文档!!!
screw: 简洁好用的数据库表结构文档工具,支持MySQL/MariaDB/SqlServer/Oracle/PostgreSQL/TIDB/CacheDB 数据库。 - Gitee.com

使用方法:
1、在pom文件中添加插件

<build>
      
            <plugin>
                <groupId>cn.smallbun.screw</groupId>
                <artifactId>screw-maven-plugin</artifactId>
                <version>1.0.4</version>
                <dependencies>
                    <!-- HikariCP -->
                    <dependency>
                        <groupId>com.zaxxer</groupId>
                        <artifactId>HikariCP</artifactId>
                        <version>3.4.5</version>
                    </dependency>
                    <!--mysql driver-->
                    <dependency>
                        <groupId>mysql</groupId>
                        <artifactId>mysql-connector-java</artifactId>
                        <version>8.0.20</version>
                    </dependency>
                </dependencies>
                <configuration>
                    <!--username-->
                    <username>root</username>
                    <!--password-->
                    <password>#n4rj</password>
                    <!--driver-->
                    <driverClassName>com.mysql.cj.jdbc.Driver</driverClassName>
                    <!--jdbc url-->
                    <jdbcUrl>jdbc:mysql://1.1.1.1:3456/tlink_sdgf</jdbcUrl>
                    <!--生成文件类型、HTML-->
                    <fileType>WORD</fileType>
                    <!--打开文件输出目录-->
                    <openOutputDir>false</openOutputDir>
                    <!--生成模板-->
                    <produceType>freemarker</produceType>
                    <!--文档名称 为空时:将采用[数据库名称-描述-版本号]作为文档名称-->
                    <fileName>测试文档名称</fileName>
                    <!--描述-->
                    <description>数据库文档生成</description>
                    <!--版本-->
                    <version>${project.version}</version>
                    <!--标题-->
                    <title>数据库文档</title>
                </configuration>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

 2、点开maven找到该pom文件下面的插件双击run

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/705474.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

为什么要用AI大模型?

前言 2021 年 8 月份&#xff0c;李飞飞和 100 多位学者联名发表一份 200 多页的研究报告《On the Opportunities and Risk of Foundation Models》&#xff0c;深度地综述了当前大规模预训练模型面临的机遇和挑战。 语言模型已经深刻变革了自然语言处理领域的研究和实践。近…

20240613每日前端-------vue3实现聊天室(二)

看效果图&#xff1a; 今天具体讲下&#xff0c;聊天消息框的布局&#xff1a; 消息框大致分为两块&#xff1a; 别人发来的消息自己发出的消息 元素如下&#xff1a; 头像消息发送人发送时间 html代码设计如下&#xff1a; 整体先用一个div作为外边框&#xff0c;观察上面…

告别“人治”时代,物业运维平台能否成为行业新标准?

随着数字化时代的飞速发展&#xff0c;智能化、数字化已经遍及所有的行业。物业服务企业也不例外&#xff0c;你是否还在想象物业运维工作依旧停留在手动报修、纸质记录的古老时代&#xff1f;那么&#xff0c;你就OUT了&#xff0c;物业运维平台已经悄然崛起&#xff0c;正在以…

RuoYi: 企业级快速开发平台

目录 前言1 项目介绍1.1 简介1.2 特性 2 技术选型3 功能方面4 代码解释4.1 控制器层示例4.2 服务层示例4.3 数据访问层示例 4 推荐理由4.1 高效开发4.2 灵活性和扩展性4.3 完善的功能和安全性4.4 活跃的开源社区 结语 前言 在现代企业级应用开发中&#xff0c;高效、稳定、安全…

java(JVM)

JVM Java的JVM&#xff08;Java虚拟机&#xff09;是运行Java程序的关键部件。它不直接理解或执行Java源代码&#xff0c;而是与Java编译器生成的字节码&#xff08;Bytecode&#xff09;进行交互。下面是对Java JVM更详尽的解释&#xff1a; 1.字节码&#xff1a; 当你使用J…

SolidWorks对设计电脑硬件配置要求是怎么样的

SolidWorks&#xff0c;作为达索系统&#xff08;Dassault Systemes&#xff09;旗下的子公司&#xff0c;一直以其出色的机械设计软件解决方案而著称。它是基于Parasolid内核开发&#xff0c;是单核三维设计软件&#xff0c;面上使用比较多的版本有SolidWorks2022、SolidWorks…

13大最佳工程项目管理系统软件盘点

国内外主流的13款工程项目管理系统软件&#xff1a;Worktile、中建软件、泛微建筑项目管理软件、LiquidPlanner、Wrike、建文软件、广联达、Microsoft Project、泛普软件、Procore、Buildertrend、Fieldwire、Autodesk Construction Cloud。 在快速变化的工程领域&#xff0c;有…

java采集微信公众号数据

需求背景: 最新需要调用微信公众号api 去微信公众号采集 发布文章数据。 &#xff08;本片文章的意义&#xff1a;根据自己开发的方案来提供思路&#xff0c;当然那不会提供代码。代码是最没有 含金量的东西。&#xff09; 1:遇到的坑:首先 想到的是调用 https://api.weixin…

github 本地仓库上传及报错处理

一.本地文件上传 这里为上传部分&#xff0c;关于gitbash安装配置&#xff0c;读者可自行搜索&#xff0c;由于已经安装完成&#xff0c;未进行截图保存&#xff0c;这里便不做赘述。 1.登录git账号并创建一个仓库 点击仓库打开后会看到这个仓库的网址链接&#xff08;这个链…

Mac安装jadx并配置环境

jadx官网&#xff1a;GitHub - skylot/jadx: Dex to Java decompiler 第一种&#xff1a; 安装jadx命令&#xff1a; brew install jadx 启动jadx-gui命令&#xff1a; jadx-gui 可能遇到的问题&#xff1a; Downloading https://formulae.brew.sh/api/formula.jws.json** h…

Python-程序流程控制

目录 1. 分支语句 1.1 if 1.2 if-else 1.3 if-elif-else 2. 循环语句 2.1 while 2.2 for 3.跳转语句 3.1 break 3.2 continue 1. 分支语句 1.1 if aint(input("请输入成绩")) if a>100:print ("牛逼") if a<60:print("不牛逼")1.2 if-e…

《软件定义安全》之八:软件定义安全案例

第8章 软件定义安全案例 1.国外案例 1.1 Fortinet&#xff1a;传统安全公司的软件定义方案 Fortinet的软件定义安全架构强调与数据中心的结合&#xff0c;旨在将安全转型为软件定义的模式&#xff0c;使安全运维能够与数据中心的其他部分一样灵活、弹性。在Fortinet看来&…

【最新鸿蒙应开发】——HarmonyOS沙箱目录

鸿蒙应用沙箱目录 1. 应用沙箱概念 应用沙箱是一种以安全防护为目的的隔离机制&#xff0c;避免数据受到恶意路径穿越访问。在这种沙箱的保护机制下&#xff0c;应用可见的目录范围即为应用沙箱目录。 对于每个应用&#xff0c;系统会在内部存储空间映射出一个专属的应用沙箱…

使用神卓互联来访问单位内部web【内网穿透神器】

在现代工作环境中&#xff0c;有时我们需要从外部访问单位内部的 web 资源&#xff0c;而神卓互联这款内网穿透神器就能完美地满足这一需求。 使用神卓互联来访问单位内部 web 其实并不复杂&#xff0c;以下是大致的使用步骤和配置方法。 首先&#xff0c;我们需要在单位内部的…

pointnet

train_classification.py 把第91行修改为自己的路径&#xff0c;就可以运行了 test_cla.py&#xff0c;需要训练完才能运行测试&#xff0c;我没训练完&#xff0c;所以报错显示我没有best.pth文件 网盘里面是我运行的训练和测试的视频&#xff0c;以及源代码&#xff0c;数…

YOLOv10在RK3588上的测试(进行中...)

1.代码源 国内镜像站在gitcode。这个镜像站也基本上包含了github上常用项目的镜像。然后它的主发布源在这里&#xff1a; GitCode - 全球开发者的开源社区,开源代码托管平台 yolov10是清华主导做的... 然后&#xff0c;在维护列表里看到了这个&#xff1a; 2024年05月31日&am…

【深度优先搜索 广度优先搜索】297. 二叉树的序列化与反序列化

本文涉及知识点 深度优先搜索 广度优先搜索 深度优先搜索汇总 图论知识汇总 LeetCode297. 二叉树的序列化与反序列化 序列化是将一个数据结构或者对象转换为连续的比特位的操作&#xff0c;进而可以将转换后的数据存储在一个文件或者内存中&#xff0c;同时也可以通过网络传…

Day 16:3040. 相同分数的最大操作数目II

Leetcode 相同分数的最大操作数目II 给你一个整数数组 nums &#xff0c;如果 nums 至少 包含 2 个元素&#xff0c;你可以执行以下操作中的 任意 一个&#xff1a; 选择 nums 中最前面两个元素并且删除它们。选择 nums 中最后两个元素并且删除它们。选择 nums 中第一个和最后一…

1058 选择题(测试点1)

solution 把题目设置为结构体&#xff0c;记录题目的总分&#xff0c;做错该题的人数&#xff0c;题目编号&#xff08;从1开始&#xff09;&#xff0c;正确答案。对于输入的学生答案提取每道题的回答&#xff0c;与答案对比是否相等&#xff0c;若相等则该同学的分数加上这一…

PHP和Mysql前后端交互效果实现

一、连接数据库基本函数 mysqli_connect(); 作用&#xff1a;创建数据库连接&#xff0c;打开一个新的mysql的连接。传参顺序&#xff1a;数据库地址、数据库账号、数据库密码 <?phpecho mysqli_connect("localhost",root,root) ?> /*结果&#xff1a;F…