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 9.0 中,不支持通过手动创建数据目录下的目录(例如,使用 mkdir)来创建数据库目录。
创建数据库时,让服务器管理目录及其中的文件。直接操作数据库目录和文件可能会导致不一致和意外结果。
MySQL 对数据库数量没有限制。底层文件系统可能对目录数量有限制。
您也可以使用 mysqladmin 程序来创建数据库。请参阅 第 6.5.2 节,“mysqladmin — MySQL 服务器管理程序”。