数据库所有对象的列表

Eli*_*sta 0 mysql sql information-schema mariadb

我需要 MariaDB 中的一个唯一表,其中包含数据库中所有对象的列表。

在 MS SQL Server 中,我只使用一张表 (sys.Objects),该表包含所有对象,并且有一列“类型”,其中包含对象类型,例如:FUNCTION、TRIGGER、TABLE、PROCEDURE...

在 MariaDB/MySQL 中,我知道表 INFORMATION_SCHEMA.Tables、视图、触发器...,但有人知道包含所有对象的唯一表?

Geo*_*ter 5

INFORMATION_SCHEMA 不提供所有对象的信息。

由于 PERFORMANCE_SCHEMA.objects_summary_global_by_type 不包含所有对象类型(通常默认情况下不启用 PERFORMANCE_SCHEMA),您可以创建自己的视图:

CREATE VIEW objects AS 
  select ROUTINE_NAME AS `object`,
         ROUTINE_SCHEMA AS `schema`,
         ROUTINE_TYPE AS `object_type`
         from information_schema.routines 
  union select TABLE_NAME, TABLE_SCHEMA, TABLE_TYPE
         from information_schema.tables
  union select TRIGGER_NAME, TRIGGER_SCHEMA, 'TRIGGER'
         from information_schema.triggers
  union select EVENT_NAME, EVENT_SCHEMA, 'EVENT'
         from information_schema.events
  union select INDEX_NAME, INDEX_SCHEMA, concat('INDEX (',INDEX_TYPE,')')
         from information_schema.statistics
Run Code Online (Sandbox Code Playgroud)

该视图基于 MariaDB 10.6 中引入的 sys.schema_object_overview