在MySQL的使用过程中,查看数据库的创建信息是常见操作,无论是排查字符集问题、确认数据库配置,还是进行数据库迁移前的核对,都需要获取这类元数据。常用的查看方式主要有两种,分别是使用内置语句和查询系统库表。

使用SHOW CREATE DATABASE语句查看
SHOW CREATE DATABASE是MySQL提供的专门用于查看数据库创建语句的内置语句,执行后会返回创建该数据库时使用的完整SQL语句,其中包含数据库的字符集、排序规则等核心配置信息。
该语句的基本语法如下:
-- 查看指定数据库的创建信息,数据库名替换为实际要查询的名称 SHOW CREATE DATABASE test_db; -- 如果数据库名包含特殊字符或者是保留字,需要用反引号包裹 SHOW CREATE DATABASE `test-db`;
执行上述语句后,会返回两个字段的结果,第一个字段是Database,值为数据库名称,第二个字段是Create Database,值为完整的创建语句。例如查询名为test_db的数据库,返回结果可能如下:
| Database | Create Database |
|---|---|
| test_db | CREATE DATABASE `test_db` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
从返回结果可以清晰看到该数据库使用的默认字符集是utf8mb4,排序规则是utf8mb4_general_ci,同时还能看到MySQL版本相关的注释信息。
查询information_schema系统库查看
information_schema是MySQL自带的信息数据库,其中存储了所有其他数据库的元数据信息,我们可以通过查询其中的SCHEMATA表来获取数据库的创建相关配置。
查询的基本语法如下:
-- 查询指定数据库的基本创建配置信息 SELECT SCHEMA_NAME AS 数据库名称, DEFAULT_CHARACTER_SET_NAME AS 默认字符集, DEFAULT_COLLATION_NAME AS 默认排序规则, SQL_PATH AS SQL路径 FROM information_schema.SCHEMATA WHERE SCHEMA_NAME = 'test_db';
执行上述语句后,会返回对应数据库的名称、默认字符集、默认排序规则等信息,这种方式返回的是结构化的字段,更适合在需要批量获取多个数据库信息或者进行程序化处理的场景使用。
如果需要获取更详细的创建相关属性,还可以结合SCHEMA_PRIVILEGES等表进行关联查询,不过大部分场景下查询SCHEMATA表已经能满足需求。
两种方式的适用场景对比
两种方式各有优势,我们可以根据实际需求选择:
- 如果需要获取完整的创建SQL语句,用于后续直接执行创建相同配置的数据库,优先选择SHOW CREATE DATABASE语句,返回内容可以直接复制使用。
- 如果需要在程序中批量获取多个数据库的配置信息,或者需要对字符集、排序规则等字段做筛选过滤,优先选择查询information_schema库的方式,结构化数据更方便处理。
注意事项
使用上述两种方式查看数据库创建信息时,需要注意以下几点:
- 执行查询的用户需要有对应数据库的访问权限,否则会返回无权限的错误。
- 如果数据库不存在,SHOW CREATE DATABASE语句会返回错误,而查询information_schema表的语句会返回空结果集。
- 对于MySQL 8.0及以上版本,部分新增的数据库属性(如默认加密配置)会在SHOW CREATE DATABASE的返回结果中显示,而低版本则不会包含这些内容。
实际使用中,大家可以根据具体的操作场景选择合适的方式,两种方式的执行效率都很高,不会对数据库性能造成明显影响。
MySQL查看数据库创建信息SHOW_CREATE_DATABASEinformation_schema数据库元数据修改时间:2026-07-15 21:45:31