13.1.11 CREATE DATABASE 语句

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
    [create_option] ...

create_option: {
    [DEFAULT] CHARACTER SET [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name
}

CREATE DATABASE使用给定名称创建一个数据库。要使用此语句,您需要数据库的CREATE特权。 CREATE SCHEMACREATE DATABASE的同义词。

如果数据库存在并且您未指定IF NOT EXISTS,则会发生错误。

具有有效LOCK TABLES语句的会话不允许CREATE DATABASE

每个* create_option *指定一个数据库 Feature。数据库 Feature 存储在数据库目录的db.opt文件中。 CHARACTER SET选项指定默认的数据库字符集。 COLLATE选项指定默认的数据库排序规则。有关字符集和排序规则名称的信息,请参见第 10 章,字符集,排序规则,Unicode

要查看可用的字符集和排序规则,请分别使用显示字符集SHOW COLLATION语句。参见第 13.7.5.3 节“ SHOW CHARACTER SET 语句”第 13.7.5.4 节“ SHOW COLLATION 语句”

MySQL 中的数据库被实现为包含与数据库 table 相对应的文件的目录。由于最初创建数据库时数据库中没有 table,因此CREATE DATABASE语句仅在 MySQL 数据目录和db.opt文件下创建一个目录。 第 9.2 节“架构对象名称”中给出了允许的数据库名称的规则。如果数据库名称包含特殊字符,则数据库目录的名称包含这些字符的编码版本,如第 9.2.4 节“将标识符 Map 到文件名”中所述。

如果您在数据目录下手动创建目录(例如,使用 mkdir ),则服务器会将其视为数据库目录,并显示在SHOW DATABASES的输出中。

创建数据库时,让服务器 Management 目录及其中的文件。直接操作数据库目录和文件可能会导致不一致和意外结果。

MySQL 对数据库的数量没有限制。基础文件系统可能对目录数有限制。

您也可以使用mysqladmin程序创建数据库。参见第 4.5.2 节“ mysqladmin-MySQL 服务器 Management 程序”