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

MariaDB中是否存在包含数据库所有对象的统一表?

MariaDB中是否存在包含数据库所有对象的统一表?

很遗憾,MariaDB(和MySQL)并没有像SQL Server里sys.objects那样的单一系统表,能一次性列出数据库里所有类型的对象。不过你可以通过合并多个INFORMATION_SCHEMA下的系统视图来实现类似的效果,用UNION ALL把不同对象类型的数据整合到一起。

下面是一个实用的查询示例,能把表、视图、存储过程、函数、触发器和事件这些常见对象都汇总起来:

SELECT
  table_name AS object_name,
  table_type AS object_type,
  create_time AS created,
  update_time AS modified
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema = DATABASE() -- 限定当前数据库,也可以换成具体库名

UNION ALL

SELECT
  routine_name AS object_name,
  routine_type AS object_type,
  created,
  modified
FROM INFORMATION_SCHEMA.ROUTINES
WHERE routine_schema = DATABASE()

UNION ALL

SELECT
  trigger_name AS object_name,
  'TRIGGER' AS object_type,
  created,
  modified
FROM INFORMATION_SCHEMA.TRIGGERS
WHERE trigger_schema = DATABASE()

UNION ALL

SELECT
  event_name AS object_name,
  'EVENT' AS object_type,
  created,
  last_altered AS modified
FROM INFORMATION_SCHEMA.EVENTS
WHERE event_schema = DATABASE();

说明一下各个部分:

  • INFORMATION_SCHEMA.TABLES:包含了普通表(BASE TABLE)和视图(VIEW)
  • INFORMATION_SCHEMA.ROUTINES:包含存储过程(PROCEDURE)和自定义函数(FUNCTION)
  • INFORMATION_SCHEMA.TRIGGERS:存储所有触发器,这里我们手动指定类型为TRIGGER
  • INFORMATION_SCHEMA.EVENTS:包含定时事件,类型指定为EVENT

你可以根据自己的需求调整查询:比如添加DEFINER字段查看对象所有者,或者过滤掉某些不需要的对象类型。如果要查询所有数据库,去掉WHERE table_schema = DATABASE()这类条件即可(不过要注意权限问题)。

备注:内容来源于stack exchange,提问作者Eliocarlos Costa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 08:39:04