CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_option] ...
create_option: [DEFAULT] {
CHARACTER SET [=] charset_name
| COLLATE [=] collation_name
| ENCRYPTION [=] {'Y' | 'N'}
}
CREATE DATABASE 创建一个具有给定名称的数据库。要使用此语句,您需要对数据库拥有 CREATE 权限。 CREATE SCHEMA 是 CREATE DATABASE 的同义词。
如果数据库存在并且您没有指定 IF NOT EXISTS,则会发生错误。
CREATE DATABASE 不允许在具有活动 LOCK TABLES 语句的会话中执行。
每个 create_option 指定一个数据库特征。数据库特征存储在数据字典中。
CHARACTER SET选项指定默认数据库字符集。COLLATE选项指定默认数据库排序规则。有关字符集和排序规则名称的信息,请参见 第 12 章,字符集、排序规则、Unicode。要查看可用的字符集和排序规则,请分别使用
SHOW CHARACTER SET和SHOW COLLATION语句。参见 第 15.7.7.4 节,“SHOW CHARACTER SET 语句” 和 第 15.7.7.5 节,“SHOW COLLATION 语句”。ENCRYPTION选项定义默认的数据库加密,该加密由在数据库中创建的表继承。允许的值为'Y'(启用加密)和'N'(禁用加密)。如果未指定ENCRYPTION选项,则default_table_encryption系统变量的值定义默认的数据库加密。如果table_encryption_privilege_check系统变量已启用,则需要TABLE_ENCRYPTION_ADMIN权限才能指定与default_table_encryption设置不同的默认加密设置。有关更多信息,请参见 为模式和通用表空间定义加密默认值。
MySQL 中的数据库作为包含与数据库中表对应的文件的目录实现。因为在最初创建数据库时数据库中没有表,所以 CREATE DATABASE 语句只在 MySQL 数据目录下创建一个目录。允许的数据库名称规则在 第 11.2 节,“模式对象名称” 中给出。如果数据库名称包含特殊字符,则数据库目录的名称包含这些字符的编码版本,如 第 11.2.4 节,“标识符到文件名的映射” 中所述。
在 MySQL 8.4 中,不支持通过手动在数据目录下创建目录(例如,使用 mkdir)来创建数据库目录。
创建数据库时,让服务器管理目录及其中的文件。直接操作数据库目录和文件会导致不一致和意外结果。
MySQL 对数据库数量没有限制。底层文件系统可能对目录数量有限制。
您还可以使用 mysqladmin 程序创建数据库。参见 第 6.5.2 节,“mysqladmin — MySQL 服务器管理程序”。