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 服务器管理程序”。