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 SCHEMA是CREATE 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 程序”。