CREATE DATABASE

CREATE DATABASE 语句用于在 TiDB 上创建新数据库。按照 SQL 标准,“数据库”一词在 MySQL 术语中最接近 “schema”。

语法图

CreateDatabaseStmt

CREATE DATABASE - 图1

IfNotExists

CREATE DATABASE - 图2

DBName

CREATE DATABASE - 图3

DatabaseOptionListOpt

CREATE DATABASE - 图4

DatabaseOptionList

CREATE DATABASE - 图5

DatabaseOption

CREATE DATABASE - 图6

PlacementPolicyOption

CREATE DATABASE - 图7

  1. CreateDatabaseStmt ::=
  2. 'CREATE' 'DATABASE' IfNotExists DBName DatabaseOptionListOpt
  3. IfNotExists ::=
  4. ( 'IF' 'NOT' 'EXISTS' )?
  5. DBName ::=
  6. Identifier
  7. DatabaseOptionListOpt ::=
  8. DatabaseOptionList?
  9. DatabaseOptionList ::=
  10. DatabaseOption ( ','? DatabaseOption )*
  11. DatabaseOption ::=
  12. DefaultKwdOpt ( CharsetKw '='? CharsetName | 'COLLATE' '='? CollationName | 'ENCRYPTION' '='? EncryptionOpt )
  13. | DefaultKwdOpt PlacementPolicyOption
  14. PlacementPolicyOption ::=
  15. "PLACEMENT" "POLICY" EqOpt PolicyName
  16. | "PLACEMENT" "POLICY" (EqOpt | "SET") "DEFAULT"

语法说明

CREATE DATABASE 用于创建数据库,并可以指定数据库的默认属性(如数据库默认字符集、排序规则)。CREATE SCHEMACREATE DATABASE 操作效果一样。

  1. CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
  2. [create_specification] ...
  3. create_specification:
  4. [DEFAULT] CHARACTER SET [=] charset_name
  5. | [DEFAULT] COLLATE [=] collation_name

当创建已存在的数据库且不指定使用 IF NOT EXISTS 时会报错。

create_specification 选项用于指定数据库具体的 CHARACTER SETCOLLATE。目前 TiDB 只支持部分的字符集和排序规则,请参照字符集支持

示例

  1. CREATE DATABASE mynewdatabase;
  1. Query OK, 0 rows affected (0.09 sec)
  1. USE mynewdatabase;
  1. Database changed
  1. CREATE TABLE t1 (a int);
  1. Query OK, 0 rows affected (0.11 sec)
  1. SHOW TABLES;
  1. +-------------------------+
  2. | Tables_in_mynewdatabase |
  3. +-------------------------+
  4. | t1 |
  5. +-------------------------+
  6. 1 row in set (0.00 sec)

MySQL 兼容性

CREATE DATABASE 语句与 MySQL 完全兼容。如发现任何兼容性差异,请在 GitHub 上提交 issue

另请参阅