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

如何编写SQL查询列出指定数据库所有表及其类型、属性数量

需求实现SQL方案

以下按常用数据库分类给出对应查询语句,使用时替换语句中指定数据库名为你实际要查询的数据库名称即可。

MySQL

直接查询系统元数据表information_schema获取结果:

SELECT 
  t.TABLE_NAME AS 表名,
  t.TABLE_TYPE AS 表类型,
  COUNT(c.COLUMN_NAME) AS 字段总数量
FROM information_schema.TABLES t
LEFT JOIN information_schema.COLUMNS c 
  ON t.TABLE_SCHEMA = c.TABLE_SCHEMA 
  AND t.TABLE_NAME = c.TABLE_NAME
WHERE t.TABLE_SCHEMA = '指定数据库名'
GROUP BY t.TABLE_NAME, t.TABLE_TYPE
ORDER BY t.TABLE_NAME;

返回的表类型字段值说明:BASE TABLE代表普通物理表,VIEW代表视图

PostgreSQL

可直接使用兼容SQL标准的information_schema查询:

SELECT 
  t.TABLE_NAME AS 表名,
  t.TABLE_TYPE AS 表类型,
  COUNT(c.COLUMN_NAME) AS 字段总数量
FROM information_schema.TABLES t
LEFT JOIN information_schema.COLUMNS c 
  ON t.TABLE_SCHEMA = c.TABLE_SCHEMA 
  AND t.TABLE_NAME = c.TABLE_NAME
WHERE t.TABLE_CATALOG = '指定数据库名'
  AND t.TABLE_SCHEMA = 'public' -- 可替换为实际要查询的schema名称
GROUP BY t.TABLE_NAME, t.TABLE_TYPE
ORDER BY t.TABLE_NAME;

SQL Server

USE 指定数据库名
GO
SELECT 
  t.name AS 表名,
  CASE 
    WHEN t.type = 'U' THEN 'BASE TABLE'
    WHEN t.type = 'V' THEN 'VIEW'
    ELSE t.type 
  END AS 表类型,
  COUNT(c.name) AS 字段总数量
FROM sys.tables t
LEFT JOIN sys.columns c ON t.object_id = c.object_id
GROUP BY t.name, t.type
ORDER BY t.name;

默认只返回用户自定义表,如果需要包含系统表,可在WHERE条件中添加对应type过滤规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:54:03