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

news2024/11/9 9:29:35

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文件夹下面就是生成的文档

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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…

2002-2023年款别克君威 君威GS维修手册和电路图资料更新

经过整理&#xff0c;2002-2023年款别克君威 君威GS全系列已经更新至汽修帮手资料库内&#xff0c;覆盖市面上99%车型&#xff0c;包括维修手册、电路图、新车特征、车身钣金维修数据、全车拆装、扭力、发动机大修、发动机正时、保养、电路图、针脚定义、模块传感器、保险丝盒图…

公司面试题总结(五)

25.谈一谈箭头函数与普通函数的区别&#xff0c;箭头函数主要解决什么问题&#xff1f; 箭头函数与普通函数的区别&#xff1a; ⚫ 语法简洁性&#xff1a; ◼ 箭头函数使用>符号定义&#xff0c;省略了 function 关键字&#xff0c;使得语法更为紧凑。 ◼ 对于单行函…

如何更新 iOS 18 Beta 版本?具体步骤总结

如何更新 iOS 18 Beta 想必有一些用户已经迫不及待的想要知道怎么更新 iOS 18 Beta 版本了吧&#xff0c;下面就给大家总结了具体的操作步骤&#xff1a; 在更新 iOS 18 Beta 版本之前记得我们需要将手机的数据进行备份&#xff0c;大家可以自行选用备份软件比如 iCloud 等。…

mtk低压充电关机充电关机动画显示

lk下充电&#xff1a; 在启动时读取电压小于BATTERY_LOWVOL_THRESOLD便会到lk循环充电&#xff0c;这里的BATTERY_LOWVOL_THRESOLD是3.45v 1、mtk_battery.c&#xff1a; 通过fg计算电池充电电流&#xff0c;电池温度等2、mtk_charger_intf.c&#xff1a; 在mtk_charger_init…

jsl+rs???企业信用系统,秒了~

文章目录 写在前面流程分析521412 加速乐第一次请求第二次请求第三次请求 瑞数看看效果秒了~ 本文仅供参考学习使用&#xff0c;不得用于非法盈利&#xff0c;如有侵权&#xff0c;请联系作者删 写在前面 好久没更新了&#xff0c;送给有缘人 目标网站&#xff1a;aHR0cHM6Ly9…

周四 A股震荡走低,行情总结

文章正文 周四&#xff0c;A股全日震荡走低&#xff0c;上证指数收跌0.28%&#xff0c;深成指跌近0.创业板指跌0.09%。猪肉、有色金属、中药、磷化工、煤炭、房地产、白酒行业跌幅靠前。科特估概念股掀起20cm涨停潮&#xff0c;半导体、机器人、消费电子、光伏、虚拟电厂概念股…

C++ ─── STL 以及string

前言&#xff1a;什么是STL STL(standard template libaray-标准模板库)&#xff1a;是C标准库的重要组成部分&#xff0c;不仅是一个可复用的组件库&#xff0c;而且 是一个包罗数据结构与算法的软件框架 STL的六大组件 1. 为什么学习string类&#xff1f; 1.1 C语言中的字符…

CUDA和Pytorch安装记录

1、关键点&#xff1a; 显卡算力 < cuda runtime version < cuda driver version 显卡算力&#xff1a;根据显卡型号查表获得。https://en.wikipedia.org/wiki/CUDA cuda runtime version&#xff1a;GPU的编程平台版本。 cuda driver version&#xff1a;显卡驱动版本。…

Linux网络编程:高级IO

目录 前言&#xff1a; 初识五种IO模型 初识高级IO 同步IO和异步IO 1.再谈五种IO模型 1.1.阻塞IO 1.2.非阻塞IO 1.3.信号驱动IO 1.4.IO多路复用 1.5.异步IO 前言&#xff1a; 在我们过去的学习中&#xff0c;我们对于IO的认识局限于input、output&#xff0c;也就是输…

美图公司AI短片创作工具MOKI工具震撼发布:自动生成助力创作者高效产出

美图公司在2024年6月12日举办的第三届美图影像节上&#xff0c;正式发布了全新的AI短片创作工具MOKI。这款工具以其独特的功能和高效的创作流程&#xff0c;为视频创作领域注入了新的活力。 MOKI的核心功能在于其能够自动生成分镜图&#xff0c;并将其转换为视频素材。用户只需…

Dorkish:一款针对OSINT和网络侦查任务的Chrome扩展

关于Dorkish Dorkish是一款功能强大的Chrome扩展工具&#xff0c;该工具可以为广大研究人员在执行OSINT和网络侦查任务期间提供强大帮助。 一般来说&#xff0c;广大研究人员在执行网络侦查或进行OSINT信息收集任务过程中&#xff0c;通常会使用到Google Dorking和Shodan&…

基于JSP的超市管理系统

你好呀&#xff0c;我是计算机学长猫哥&#xff01;如果有相关需求&#xff0c;文末可以找到我的联系方式。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;JSP MyBatis 工具&#xff1a;IDEA/Eclipse、Navicat、Maven 系统展示 员工管理界面图 管…

[vue2]深入理解vuex

本节内容 概述初始化仓库定义数据访问数据修改数据处理异步派生数据模块拆分案例-购物车 概述 vuex是一个vue的状态管理工具, 状态就是数据 场景 某个状态在很多个组件使用 (个人信息)多个组件 共同维护 一份数据 (购物车) 优势 数据集中式管理数据响应式变化 初始化仓库 …

30字以内免费翻译维吾尔语,汉维翻译工具推荐,维吾尔文字母OCR识别神器《维汉翻译通》App!

维吾尔文OCR文字识别 《维汉翻译通》App内置的OCR技术&#xff0c;能够快速识别图片中的文字和字母&#xff0c;无论是路标、菜单还是书籍&#xff0c;都能迅速转换为用户所需的语言&#xff0c;让语言障碍不再是问题。针对维吾尔语更是进行了专门的优化&#xff0c;即便是手写…

【Ardiuno】实验ESP32单片机自动配置Wifi功能(图文)

这里小飞鱼按照ESP32的示例代码&#xff0c;实验一下wifi的自动配置功能。所谓的自动配置&#xff0c;就是不用提前将wifi的名称和密码写到程序里&#xff0c;这样可以保证程序在烧录上传后&#xff0c;可以通过手机端的软件来进行配置&#xff0c;可以避免反复修改代码&#x…

事件、方法实现 on_radioGreen_clicked ,on_chkBoxUnder_clicked,Qfont,QPalette

Vertical Layout 、Horizontal Layout 实验窗体自适应布局 接上篇界面布局&#xff0c; 实验checkBox、radioBox 的事件槽&#xff0c; 使用Qfont组件变更纯文本框QPlainTextEdit中字体的下划线、加粗、斜体效果 使用调色板组QPalette变更纯文本框QPlainTextEdit中文本颜色 UI…

Qt全局快捷键QGlobalHotKey的自研之路

这两天对Qt的快捷键格外感兴趣。 前两天在使用QHotKey的过程中&#xff0c;发现不能定义小键盘键盘码&#xff0c;自己二次修改了该库之后已经可以设置小键盘快捷键了。文章在这里&#xff1a;Qt第三方库QHotKey设置小键盘数字快捷键。 昨天突发奇想&#xff1a;目前所有的快…

20240613解决飞凌的OK3588-C的核心板的USB3.0接口不读U盘的问题

20240613解决飞凌的OK3588-C的核心板的USB3.0接口不读U盘的问题 2024/6/13 15:21 缘起&#xff0c;由于USB3.0的CC芯片在飞凌的OK3588-C的开发板的底板上&#xff0c;一切正常。 如果你单独使用核心板&#xff0c;很容易出现这个问题【省成本没有使用CC芯片】&#xff1a;不读U…

VScode中连接并使用docker容器

前提条件&#xff1a; 1.在windows下安装Docker Desktop(方法可见下面的教程) Docker Desktop 安装使用教程-CSDN博客 2.在vscode安装3个必备的插件 3.先在ubuntu中把docker构建然后运行 4.打开vscode&#xff0c;按下图顺序操作 调试好之后上传到git上&#xff0c;然后后面…