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.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或空字符串时,您将其设置为'是',这可能不是您想要的结果。通常,主键字段不会是'是'。
简洁版:
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文件夹下面就是生成的文档


相关文章:
MySQL查询数据库中所有表名表结构及注释以及生成数据库文档
MySQL查询数据库中所有表名表结构及注释 生成数据库文档在后面!!! select t.TABLE_COMMENT -- 数据表注释 , c.TABLE_NAME -- 表名称 , c.COLUMN_COMMENT -- 数据项 , c.COLUMN_NAME -- 英文名称 , -- 字段描述 , upper(c.DATA_TYPE) as …...
Redis缓存穿透、缓存雪崩和缓存击穿的解决方案
Redis缓存穿透、缓存雪崩和缓存击穿的解决方案 引言 Redis作为当前非常流行的内存数据结构存储系统,以其高性能和灵活性被广泛应用于缓存、消息队列、排行榜等多种场景。然而,在实际使用过程中,可能会遇到缓存穿透、缓存雪崩和缓存击穿等问…...
如何解决javadoc一直找不到路径的问题?
目录 一、什么是javadoc二、javadoc为什么会找不到路径三、如何解决javadoc一直找不到路径的问题 一、什么是javadoc Javadoc是一种用于生成Java源代码文档的工具,它可以帮助开发者生成易于阅读和理解的文档。Javadoc通过解析Java源代码中的注释,提取其…...
redis 笔记2之哨兵
文章目录 一、哨兵1.1 简介1.2 实操1.2.1 sentinel.conf1.2.2 问题1.2.3 哨兵执行流程和选举原理1.2.4 使用建议 一、哨兵 1.1 简介 上篇说了复制,有个缺点就是主机宕机之后,从机只会原地待命,并不能升级为主机,这就不能保证对外…...
LVS+Keepalived NGINX+Keepalived 高可用群集实战部署
Keepalived及其工作原理 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。 VRRP协议(虚拟路由冗余协议) 是针对路由器的一种备份解决方案由多台路由器组成一个热备组,通过共用的…...
Mybatis做批量操作
动态标签foreach,做过批量操作,但是foreach只能处理记录数不多的批量操作,数据量大了后,先不说效率,能不能成功操作都是问题,所以这里讲一讲Mybatis正确的批量操作方法: 在获取opensession对象…...
Python | 中心极限定理介绍及实现
统计学是数据科学项目的重要组成部分。每当我们想从数据集的样本中对数据集的总体进行任何推断,从数据集中收集信息,或者对数据集的参数进行任何假设时,我们都会使用统计工具。 中心极限定理 定义:中心极限定理,通俗…...
探索Napier:Kotlin Multiplatform的日志记录库
探索Napier:Kotlin Multiplatform的日志记录库 在现代软件开发中,日志记录是不可或缺的部分,它帮助开发者追踪应用的行为和调试问题。对于Kotlin Multiplatform项目而言,能够在多个平台上统一日志记录的方法显得尤为重要。Napier…...
MySQL基础——SQL语句
目录 1.SQL通用语法 2.SQL分类 3 DDL 3.1数据库操作 3.1.1查询 3.1.2创建 3.1.3删除 3.1.4使用 3.2表操作 3.2.1查询 3.2.2创建 3.2.3数据类型 3.2.4表修改(alter打头) 3.2.5表删除(drop/truncate打头) 3.3 DDL总结…...
比特币通用API服务
Bitcoin 通用API服务 exlectrs: API后台服务(Rust语言编写) https://github.com/Blockstream/electrs.git 使用electr作为后台的区块链浏览器:https://github.com/Blockstream/esplora.git https://github.com/Blockstream/electrs https://github.com/romanz/electrs/blo…...
Spock mock私有方法
mock私有方法 被测试的方法是MiddleGroundAppListBO类下的getPromptIdKeyAppPromptInfoMap方法 private Map<Long, AppPromptInfoModel> getPromptIdKeyAppPromptInfoMap(String cubeAppIdentity) {List<AppPromptInfoDO> promptByApp knowledgeCubeQueryR…...
网络协议四
一、云中网络 物理机的劣势: 1)一旦需要扩容 CPU、内存、硬盘,都需要去机房手动弄,非常麻烦 2)采购的机器往往动不动几百 G 的内存,而每个应用往往可能只需要 4 核 8G 3)一台机器,…...
大数据入门实践一:mac安装Hadoop,Hbase,FLume
一、安装Hadoop 安装hadoop参考此文,关键点是安装JDK和Hadoop的配置,为避免引用文章变收费,我把关键信息摘录如下: jdk安装和配置就不说了(我本机安装了1.8/15/17/21,以17为主),hadoop安装过程…...
openGauss 6.0.0 一主二备集群安装及使用zcbus实现Oracle到openGauss的数据同步
一、前言 openGauss 6.0.0-RC1是openGauss 2024年3月发布的创新版本,该版本生命周期为0.5年。根据openGauss官网介绍,6.0.0-RC1与之前的版本特性功能保持兼容,另外,在和之前版本兼容的基础上增加了很多新功能,比如分区表性能优化…...
0118__C语言——float.h文件
C语言——float.h文件_c float.h-CSDN博客...
settings和toolchains.xml 区别用法配置
在 IntelliJ IDEA 中配置 Maven 项目时,settings.xml 和 toolchains.xml 的使用场景有所不同。以下是具体的使用情景和配置方法: 1. 使用 settings.xml 使用场景 全局或用户级别的配置:包括设置本地仓库位置、远程仓库、代理服务器、认证信…...
leetcode打卡#day43 携带研究材料(第六期模拟笔试)、416. 分割等和子集
携带研究材料(第六期模拟笔试) #include<iostream> #include<algorithm> #include<vector>using namespace std;int getMaxValue(vector<int>& weights, vector<int>& values, int n, int m) {vector<vector&…...
MPLS的配置
1、IP可达--- 使用路由协议全网可达 2、配置 MPLS ——LDP [r2]mpls lsr-id 2.2.2.2 必须先定义 mpls 的router-id,要为本地设备的真实ip地址,且邻居可达,因为该地址将用于建立 TCP 会话,建议使用环回地址 [r2]mpls 再开…...
【机器学习】机器学习与教育科技在个性化教学中的融合应用与性能优化新探索
文章目录 引言机器学习与教育科技的基本概念机器学习概述监督学习无监督学习强化学习 教育科技概述学生学习行为分析个性化学习路径推荐智能化教育评估 机器学习与教育科技的融合应用实时学习数据分析数据预处理特征工程 学生成绩预测与优化模型训练模型评估 个性化学习路径推荐…...
C++:十大排序
目录 时间复杂度分析 选择排序 引言 算法思想 动图展示 代码实现 (升序) 优化 代码实现 分析 冒泡排序 引言 算法思想 动图展示 代码实现 插入排序 引言 算法思想 动图展示 代码实现 计数排序 引言 算法思想 动图展示 代码实现 桶排序 引言 算法思…...
神经信号干扰器:让脑机监控读取错误数据
在软件测试领域,精准的数据采集与分析是保障产品质量的核心。随着脑机接口(BCI)技术在测试工具中的广泛应用,神经信号监控已成为提升缺陷检出率和决策效率的关键手段。然而,神经信号干扰器的出现,正悄然威胁…...
基于ChatTTS的自定义PT文件文字转语音实战指南
最近在做一个需要语音播报的项目,之前用了一些现成的TTS服务,效果是还行,但总感觉声音不够“对味儿”,要么太机械,要么风格不是我想要的。后来发现了ChatTTS这个开源项目,它支持用自己的数据训练模型&#…...
python-学生选课成绩系统vue
目录系统架构设计前端实现模块后端API设计数据库表结构关键技术点测试与部署扩展性考虑项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作系统架构设计 采用前后端分离架构: 前端:Vue 3 TypeScript Ele…...
卡梅德生物技术快报|重金属铬制备单克隆抗体:全实验流程与技术要点详解
在生物检测试剂研发领域,制备单克隆抗体是开发免疫分析方法的核心工作,重金属铬作为食品与环境中常见的污染物,其高特异性单克隆抗体的制备对实现铬残留快速检测至关重要。本文基于最新的实验研究,从试剂准备、抗原合成、细胞融合…...
【事务】Spring Framework核心——事务管理:ACID特性、隔离级别、传播行为、@Transactional底层原理、失效场景
文章目录事务管理一、事务核心基石:ACID四大特性二、事务并发问题与隔离级别2.1 并发事务引发的3大核心读异常2.2 SQL标准4大隔离级别2.3 核心补充:MVCC与隔离级别的关联三、Spring事务传播行为3.1 第一类:支持当前事务(优先加入已…...
RVC变声模型在IDEA开发环境中的调试技巧
RVC变声模型在IDE开发环境中的调试技巧 调试AI模型项目,尤其是像RVC(Retrieval-based Voice Conversion)这种涉及音频处理和深度学习的项目,常常让人头疼。你可能会遇到各种问题:代码在本地跑不通、张量形状对不上、模…...
开源IT资产管理系统Snipe-IT:从混乱到有序的数字化转型之路
开源IT资产管理系统Snipe-IT:从混乱到有序的数字化转型之路 【免费下载链接】snipe-it A free open source IT asset/license management system 项目地址: https://gitcode.com/GitHub_Trending/sn/snipe-it 在企业数字化进程中,IT资产如同散落的…...
YOLOv8实战:TaskAlignedAssigner在目标检测中的动态样本匹配技巧
YOLOv8实战:TaskAlignedAssigner在目标检测中的动态样本匹配技巧 目标检测作为计算机视觉领域的核心任务之一,其性能提升的关键在于如何更有效地匹配预测框与真实标注。YOLOv8引入的TaskAlignedAssigner通过创新的动态匹配策略,显著提升了检测…...
ai辅助开发对比:github copilot与快马多模型在学生项目中的表现
最近在折腾学生项目时,发现AI编程助手的选择越来越多。作为通过GitHub学生认证的开发者,原本一直用Copilot当主力工具,但偶然接触到InsCode(快马)平台的多模型支持后,突然想做个系统性对比。于是花了周末时间搭建了个AI辅助开发评…...
零基础也能玩转!10分钟掌握OpenWrt+Docker关键配置:内核优化与cgroup实战指南
1. OpenWrt与Docker的黄金组合:为什么值得尝试? 第一次在OpenWrt上跑Docker容器时,我盯着那个只有256MB内存的路由器发呆了五分钟。这种"小马拉大车"的玩法听起来像天方夜谭,但实测下来发现——只要配置得当,…...
