You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求MySQL查询有数据的所有表及其全部字段的SQL语句

MySQL 查询包含数据的表及其字段名

要拿到所有有数据行的表对应的表名和字段名,咱们可以借助MySQL的系统信息表来实现,下面是直接可用的SQL语句:

可用SQL语句

SELECT 
    c.TABLE_NAME AS `表名`,
    c.COLUMN_NAME AS `字段名`
FROM 
    INFORMATION_SCHEMA.COLUMNS c
JOIN 
    INFORMATION_SCHEMA.TABLES t 
    ON c.TABLE_SCHEMA = t.TABLE_SCHEMA 
    AND c.TABLE_NAME = t.TABLE_NAME
WHERE 
    t.TABLE_ROWS > 0
    -- 要是只想查某个特定数据库,解开下面这行注释并替换成你的库名
    -- AND c.TABLE_SCHEMA = 'your_database_name'
ORDER BY 
    c.TABLE_NAME, c.ORDINAL_POSITION;

额外说明

  • 这里用INFORMATION_SCHEMA.TABLES里的TABLE_ROWS判断表是否有数据,对于MyISAM表这个值是精确的,InnoDB表是估算值,常规场景完全够用;
  • 如果必须要精确判断表是否存在数据,就得写存储过程动态统计每个表的行数,但一般没必要,上面的语句已经能满足大部分需求;
  • 你之前的思路是对的——先筛出有数据的表,再拿这些表的字段,上面的语句用JOIN关联两个系统表,比子查询更直观高效。

内容的提问来源于stack exchange,提问作者Ken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 11:57:15