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