是否可以使用 INFORMATION_SCHEMA 模式来检查数据库是否存在?

Posted

技术标签:

【中文标题】是否可以使用 INFORMATION_SCHEMA 模式来检查数据库是否存在?【英文标题】:Can the INFORMATION_SCHEMA schema be used to check if a database exists? 【发布时间】:2011-12-05 15:50:25 【问题描述】:

有alternative ways 来检测数据库是否存在,但可以使用 INFORMATION_SCHEMA 架构代替吗(例如在主数据库中或其他地方)?

【问题讨论】:

有什么特别的原因吗?您是否正在寻找比 SQL Server sys 视图更便携的东西? 除了好奇是否有更便携/受支持的方法之外,没有什么特别的原因。似乎很奇怪,会为此目的创建 INFORMATION_SCHEMA 但不涵盖这种情况。 INFORMATION_SCHEMA 旨在涵盖每个数据库级别的详细信息,而不是除此之外的任何内容。 【参考方案1】:

据我所知,INFORMATION_SCHEMA 无法做到这一点。如the documentation 所述,INFORMATION_SCHEMA 是基于每个数据库创建的,并且包含特定于创建它的数据库的元数据。没有“服务器级别”INFORMATION_SCHEMA 的概念。

【讨论】:

感谢您的回答。你的和乔的都是正确的,说的基本相同,所以我扔了一枚硬币,你赢了。标记为正确。 @TimPartridge:很高兴为您提供帮助。一般来说,我认为大多数人使用“先回答”作为决胜局,而不是抛硬币。在这种情况下,任何一种方法都会产生相同的结果。 :-)【参考方案2】:

没有;从INFORMATION_SCHEMA 命名空间中定义的所有视图中可以看出,其中包含的视图特定于单个数据库,因此没有提供与数据库无关的内容(例如数据库列表)。您必须使用链接的问题/答案中描述的普通系统视图来执行此操作。

【讨论】:

感谢您的回答。你的和乔的都是正确的,而且说的基本相同,所以我扔了一枚硬币,你输了。接受乔的回答是正确的。对不起;)

以上是关于是否可以使用 INFORMATION_SCHEMA 模式来检查数据库是否存在?的主要内容,如果未能解决你的问题,请参考以下文章

Netezza 的信息架构 (INFORMATION_SCHEMA)

[MySQL] INFORMATION_SCHEMA 数据库包含所有表的字段

可以对 information_schema 崩溃表进行 mysql 查询吗?

查询mysql最后更新时间

SQL INFORMATION_SCHEMA.VIEWS

选择数据库中所有表的行数