关于列出 MySQL 数据库你需要知道的一切

登录到新的 MySQL 服务器时,您首先想知道的事情之一是可用的数据库。在执行维护时,您可能需要一个数据库列表。或者,您可能只是好奇或试图找到一个您很久以前忘记名称的旧数据库。

空白的命令行可能令人生畏。这些情况中的每一种都需要一个简单的命令,MySQL 以SHOW DATABASES的形式提供它。该命令的用法非常简单,但如果您使用 MySQL,您很快就会发现它会派上用场。

在本文中,您将了解有关列出 MySQL 数据库的所有信息。

如何使用 SHOW DATABASES 命令

登录到 MySQL 服务器后,输入文本SHOW DATABASES;在命令行上,然后按键盘上的 Enter – 您可以在下面看到一个示例。

MySQL 在一个包含一列的表中返回结果: Database 。此列包含每个数据库的名称并按字母顺序排列。摘要行告诉您有多少行(即数据库)。

默认情况下,您应该始终看到至少四个 MySQL 列表数据库。这些是 MySQL 自行安装的特殊系统数据库:

  • mysql。
  • 信息模式。
  • 性能模式。
  • 系统。

稍后您将看到其中的一个信息—information_schema — 用于什么。

过滤 SHOW DATABASES 的结果

您可以使用在SELECT语句的WHERE子句中使用的相同LIKE条件。 LIKE 接受一个参数,一个要匹配的模式。该模式可以包含两个特殊字符: % (百分比)和_ (下划线)。它们分别匹配任何字符串和任何单个字符。

例如,要列出名称中带有字母a 的所有数据库:

 SHOW DATABASES LIKE '%a%';

如何使用更复杂的条件

如果您需要使用比 LIKE 的基本模式匹配更复杂的条件,您仍然可以使用熟悉的 WHERE 子句。您需要应用的技巧是引用代表数据库名称的列。从上面的输出可以看出,它只是Database 。现在,因为 MySQL 认为这是一个保留关键字,所以你需要用反引号将它转义。

 SHOW DATABASES WHERE LENGTH(`Database`) > 6;

结果现在只包含名称超过六个字符的表:

相关:编写 MySQL 数据库架构的初学者指南

按其他元数据过滤数据库

MySQL 支持一些其他与数据库相关的字段,但它们不能通过SHOW_DATABASES 获得。对于这些,您需要使用information_schema数据库中的模式表。下面是这个特殊系统表的结构:

除了与 SHOW DATABASES 中的 Database 列完全相同的SCHEMA_NAME之外,只有两个有用的字段: DEFAULT_CHARACTER_SET_NAMEDEFAULT_COLLATION_NAME 。其他字段始终具有相同的值,因此在过滤时毫无意义。

DEFAULT_CHARACTER_SET_NAMEDEFAULT_COLLATION_NAME字段定义了数据库支持哪些字符,以及如何对它们进行排序。您以前可能没有考虑过它们,但是如果您正在处理非 ASCII 文本,它们就很重要。

了解ASCII 和 Unicode 之间的区别很重要!如果您从不同来源安装了多个数据库,则更有可能拥有一系列值。

重用前面的示例,您可以像其他任何列一样过滤此表中的列:

 SELECT schema_name FROM information_schema.schemata WHERE DEFAULT_CHARACTER_SET_NAME='utf8';

您可以对模式表执行任何其他表操作,例如分组:

 SELECT DEFAULT_CHARACTER_SET_NAME, COUNT(*) FROM information_schema.schemata GROUP BY DEFAULT_CHARACTER_SET_NAME;

相关:关于 SQL GROUP BY 语句你需要知道的一切

使用 MySQL 中的简单命令列出数据库

此命令可能是 MySQL 必须提供的最简单的命令。但这并不妨碍它非常有用。如果您发现自己盯着 MySQL 命令行,脑子里一片空白,SHOW DATABASES 是从头开始的好方法。

一旦您有了一个数据库,并且知道您正在使用哪个数据库,就可以了解更多有关模式以及如何最好地组织数据的信息。