在 MySQL 中使用 SHOW DATABASES 列出所有数据库
本文介绍了在 MySQL 中列出所有数据库的两种方法:SHOW DATABASES
和 information_schema.schemata
表。
作为一个数据库管理员或者维护人员,了解当前 MySQL 数据库服务器中有多少数据库是必备的技能。
MySQL 在 information_schema.schemata
表保存了所有的数据库信息,您可以直接从此表中查询,也可以使用 SHOW DATABASES
命令。
显示数据库的命令
要列出 MySQL 服务器主机上的所有数据库,您可以使用以下命令:
SHOW DATABASES;
或者
SHOW SCHEMAS;
SHOW SCHEMAS
是 SHOW DATABASES
的同义词,他们具有相同的返回结果。
如果运行此命令的用户不是超级用户,则只返回用户具有权限的数据库列表。
您还可以使用 LIKE
对结果进行过滤,如下:
SHOW DATABASES LIKE pattern;
实例:列出所有的数据库
让我们使用 root
运行以下命令以获取所有的数据库:
SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| adam_test |
| bags |
| cad |
| dc |
| information_schema |
| mysql |
| native_test |
| performance_schema |
| sakila |
| sqlizdb |
| sys |
| testdb |
+--------------------+
这里, root
用户为超级用户,因此他能查看所有的数据库。
让我们使用 sqliz
用户运行以下语句:
SHOW DATABASES;
+--------------------+
| Database |
+--------------------+
| information_schema |
| sqlizdb |
+--------------------+
这里, sqliz
用户为普通用户,因此他只能查看具有权限的数据库。
实例:过滤数据库
下面的语句使用 LIKE
已返回所有的以 s
开头的数据库:
SHOW DATABASES LIKE 's%';
+---------------+
| Database (s%) |
+---------------+
| sakila |
| sqlizdb |
| sys |
+---------------+
从表中查询数据库列表
MySQL 在 information_schema.schemata
表保存了所有的数据库信息,您可以直接在此表中查询以获取所有的数据列表。
实际上, SHOW DATABASES
命令与下面的查询语句相同:
SELECT schema_name FROM information_schema.schemata;
让我们使用 root
运行上面的语句。下面是该语句的返回:
+--------------------+
| SCHEMA_NAME |
+--------------------+
| mysql |
| information_schema |
| performance_schema |
| sys |
| cad |
| bags |
| adam_test |
| dc |
| sakila |
| testdb |
| native_test |
| sqlizdb |
+--------------------+
如果您想要获取更多的信息,可以使用下面的语句:
SELECT * FROM information_schema.schemata;
+--------------+--------------------+----------------------------+------------------------+----------+--------------------+
| CATALOG_NAME | SCHEMA_NAME | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | SQL_PATH | DEFAULT_ENCRYPTION |
+--------------+--------------------+----------------------------+------------------------+----------+--------------------+
| def | mysql | utf8mb4 | utf8mb4_0900_ai_ci | NULL | NO |
| def | information_schema | utf8 | utf8_general_ci | NULL | NO |
| def | performance_schema | utf8mb4 | utf8mb4_0900_ai_ci | NULL | NO |
| def | sys | utf8mb4 | utf8mb4_0900_ai_ci | NULL | NO |
| def | cad | utf8mb4 | utf8mb4_0900_ai_ci | NULL | NO |
| def | bags | utf8mb4 | utf8mb4_0900_ai_ci | NULL | NO |
| def | adam_test | utf8mb4 | utf8mb4_0900_ai_ci | NULL | NO |
| def | dc | utf8mb4 | utf8mb4_0900_ai_ci | NULL | NO |
| def | sakila | utf8mb4 | utf8mb4_0900_ai_ci | NULL | NO |
| def | testdb | utf8mb4 | utf8mb4_0900_ai_ci | NULL | NO |
| def | native_test | utf8mb4 | utf8mb4_0900_ai_ci | NULL | NO |
| def | sqlizdb | utf8mb4 | utf8mb4_0900_ai_ci | NULL | NO |
+--------------+--------------------+----------------------------+------------------------+----------+--------------------+
这里,返回了更多的信息,比如字符集,排序规则等。
结论
在本文中,您学习了获取 MySQL 数据库服务器的所有的数据库列表的两种方法:
- 使用
SHOW DATABASES
命令 - 从
information_schema.schemata
表中查询。此表中包含了比SHOW DATABASES
更多的信息。