15.1.12 创建数据库语句
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 数据目录下的目录。关于 permissible 数据库名称的规则见第11.2节,“Schema Object Names”。如果数据库名称包含特殊字符,那么数据库目录名称将包含根据第11.2.4节,“Mapping of Identifiers to File Names”中描述的编码版本。
手动在数据目录下创建数据库目录(例如,使用mkdir)在 MySQL 8.4 中是不可支持的。
当你创建一个数据库,让服务器管理目录和文件。直接操作数据库目录和文件可能会导致不一致和意外结果。
MySQL 没有对数据库数量的限制,但底层文件系统可能有对目录数量的限制。
你也可以使用mysqladmin 程序创建数据库。见第6.5.2节,“mysqladmin — A MySQL Server Administration Program”。