「CREATE DATABASE Syntax」

  CREATED BY JENKINSBOT

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

[create_specification] …

create_specification:

[DEFAULT] CHARACTER SET [=] charset_name

| [DEFAULT] COLLATE [=] collation_name

CREATE DATABASE语句用于创建数据库,CREATE SCHEMA与CREATE DATABASE意义相同。

没有指定IF NOT EXISTS的话,如果库已经存在则会产生错误。

在MySQL 5.7中,在具有活动的LOCK TABLES语句的session中,不允许使用CREATE DATABASE。

create_specification用于指定数据库的一些特征。数据库的默认特征存储在数据库文件夹中的db.opt文件中:

  • CHARACTER SET用于指定数据库默认的字符集。
  • COLLATE用于指定数据库默认的校对规则。

Section 10.1, “Character Set Support”,中讨论了更多有关字符集和校对规则的内容。

MySQL中,数据库被实现为包含与数据库中的表相对应的文件的目录。由于首次创建数据库时并没有表,所以CREATE DATABASE实际上只是在data目录下创建了一个文件夹和一个db.opt文件。数据库名的命名规则在Section 9.2, “Schema Object Names”中有描述。如果数据名中包含特殊字符,那么数据库文件夹的名字包含这些特殊字符的编码版本,相关的描述位于Section 9.2.3, “Mapping of Identifiers to File Names”

如果手动在data目录中创建一个文件夹(比如使用mkdir命令),MySQL会将其视为一个数据目录,并在SHOW DATABASES中显示。

相关命令

mysqladmin命令也可以用于创建数据库。

权限

创建数据库时需要CREATE权限。

参考文献

MySQL 5.7 Reference Manual / CREATE DATABASE Syntax