当前位置: 首页 > article >正文

Mysql查询表的结构信息 把列名 数据类型 等变成列数据(适用于生成数据库表结构文档) (三)

本文是前两篇的续篇,其实就是第一篇的升级优化。

Mysql查询表的结构信息 把列名 数据类型 等变成列数据(适用于生成数据库表结构文档) (一)

Mysql查询表的结构信息 把列名 数据类型 等变成列数据(适用于生成数据库表结构文档) (二)

第一篇讲的是 单表的,那么这篇我们来讲全表的 ,因为表太多,不可能一个一个的去写对吧,当然也可以用代码去循环,总之没有直接sql 快。

话不多说,开整!

1. 查询所有表及对应的字段

SET @row_number = 0;

SELECT   
    (@row_number:=@row_number + 1) AS 序号,  
    t.TABLE_NAME AS 表名,
    t.TABLE_COMMENT AS 表备注,
    c.COLUMN_NAME AS 列名,   
    c.COLUMN_TYPE AS 数据类型,
    c.COLUMN_COMMENT AS 说明,  
    CASE c.IS_NULLABLE 
        WHEN 'NO' THEN '否'
        ELSE '是'
    END 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 = 'xxxxxxxxxx' -- 替换为你的数据库名  
    AND t.TABLE_TYPE = 'BASE TABLE' -- 选择基本表  固定类型 ,看具体需求 
ORDER BY   
    c.TABLE_NAME, c.ORDINAL_POSITION; -- 按照列在表中的位置排序

如果想要按表名分组,列信息放在一个单元格内也行:

SET @row_number = 0;

SELECT 
    t.TABLE_NAME AS 表名,
    t.TABLE_COMMENT AS 表备注,
    GROUP_CONCAT(
        CONCAT(
            c.COLUMN_NAME, ' (', c.COLUMN_TYPE, ') - ', 
            CASE c.IS_NULLABLE 
                WHEN 'NO' THEN '否'
                ELSE '是'
            END, 
            ' : ', c.COLUMN_COMMENT
        ) SEPARATOR '\n'
    ) 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 = 'xxxxxx' -- 替换为你的数据库名
    AND t.TABLE_TYPE = 'BASE TABLE' -- 选择基本表
GROUP BY 
    t.TABLE_NAME, t.TABLE_COMMENT
ORDER BY 
    t.TABLE_NAME;

当然也可以加数据库名称

SET @row_number = 0;

SELECT   
    (@row_number:=@row_number + 1) AS 序号,  
    c.TABLE_SCHEMA AS 数据库名称,  -- 添加数据库名称
    t.TABLE_NAME AS 表名,
    t.TABLE_COMMENT AS 表备注,
    c.COLUMN_NAME AS 列名,   
    c.COLUMN_TYPE AS 数据类型,
    c.COLUMN_COMMENT AS 说明,  
    CASE c.IS_NULLABLE 
        WHEN 'NO' THEN '否'
        ELSE '是'
    END 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 = 'xxxxxx' -- 替换为你的数据库名
ORDER BY   
    c.TABLE_NAME, c.ORDINAL_POSITION; -- 按照列在表中的位置排序
    

数据出来了,再结合第二篇直接导出来就可以实现全库导出


http://www.kler.cn/news/366381.html

相关文章:

  • canvas-editor首行缩进
  • 【AIGC】优化长提示词Prompt:提升ChatGPT输出内容的准确性与实用性
  • Segugio:一款针对恶意软件的进程执行跟踪与安全分析工具
  • ffmpeg视频滤镜: 色温- colortemperature
  • 学习webservice的心得
  • 安全见闻(2)——开阔眼界,不做井底之蛙
  • 一分钟学会MATLAB-数值计算
  • 怎样安装 three.js
  • Python依赖库的几种离线安装方法
  • 【Linux】-----进程控制
  • IDEA如何将一个分支的代码合并到另一个分支(当前分支)
  • PyCharm 2023 版本之后使用本地 conda 已存在环境的方法
  • Golang 怎么高效处理ACM模式输入输出
  • 实验一 嵌入式开发基础 4-6学时实践
  • 【ubuntu20联网】ubuntu20.04正常使用网络,解决校园以太网无法连接问题
  • ​​Spring6梳理17——基于XML的自动装配
  • Spring Retry框架
  • 从视频中学习的SeeDo:VLM解释视频并生成规划、代码(含通过RGB视频模仿的人形机器人OKAMI、DexMV)
  • 中国电信笔试2025年度校园招聘笔试题-(开发类)-4(AK)
  • 接口 vs 抽象类:谁是更好的工具?了解它们的区别和使用场景
  • @moohng/postcss-px2vw,如何配置响应式参数?
  • qt QVariant详解
  • Termius工具在MAC的使用出现的问题:
  • 【MySQL】:库的操作
  • JDK源码系列(一)——Object 类
  • 阿里云地图选择器