CREATE DATABASE

更新时间:2025-01-10 05:40:25

CREATE DATABASE语句用于创建数据库,并可以指定数据库的默认属性(如数据库默认字符集,校验规则等)。

语法

create_database_stmt:
    CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] database_name [database_option_list]

database_option_list:
    database_option [database_option ...]

database_option:
    [DEFAULT] {CHARACTER SET | CHARSET} [=] charset_name
  | [DEFAULT] COLLATE [=] collation_name
  |  LOCALITY = locality_option}
  | [{PARTITION_MODE|MODE} = partition_mode_option]
  | [DEFAULT_SINGLE = default_single_option]  
  
locality_option:
    'dn=storage_inst_id_list'

storage_inst_id_list:
    storage_inst_id[,storage_inst_id_list]
    
partition_mode_option:
		 {'auto'|'partitioning'}
    |{'drds'|'sharding'}

default_single_option: 
	{'on'|'off'}

注意事项

标准版不支持dbpartition(分库分表)语法,仅企业版实例支持创建DRDS模式数据库。

参数说明

参数

说明

参数

说明

database_name

指定要创建的数据库名称。

CHARSET charset_name

指定待创建数据库的字符集。

COLLATE collation_name

指定校对规则。

LOCALITY

创建数据库时指定该库的存储位置。

说明

通过LOCALITY语法指定了数据库的位置之后,不支持再修改该库的存储位置。

MODE

指定逻辑库所使用的分区模式,参数取值如下:

  • auto(默认值):表示自动分区模式数据库,使用限制如下:

    • 全库只能使用新的分区表建表语法(如Partition By Hash/Range/List等)进行建表。更多信息,请参见CREATE TABLE(AUTO模式)

    • 允许自动将单表打散到不同DN节点,该功能默认不启用,需要在建库语句中添加DEFAULT_SINGLE = 'on' 参数,以开启自动打散功能。更多信息,请参见单表打散

    • 允许在数据表未显式指定分区定义时,自动按主键分区(需要注意的是,该功能默认为关闭状态,您可以通过执行SET GLOBAL auto_partition=true语句,打开自动分区功能)。

  • drds:表示DRDS模式数据库,全库只能使用DRDS模式的分库分表建表语法(如Dbpartition By/Tbpartition By)进行建表。更多信息,请参见CREATE TABLE(DRDS模式)

重要

DEFAULT_SINGLE(版本要求:PolarDB-X 5.4.17-16921956及以上)

指定AUTO模式数据库是否使用单表自动打散至各个DN节点的分布策略,该选项仅对AUTO模式数据库有效,对DRDS模式数据库无效。参数取值如下:

  • OFF(默认值):表示关闭单表自动打散,即在AUTO模式下,创建表且未显式指定分区定义时,该表将以单表的形式创建,且不会自动打散到该实例的不同的DN节点。

  • ON:表示开启单表自动打散,即在AUTO模式下,创建表且未显式指定分区定义时,系统会创建单表并且将这些单表自动打散到该实例的不同的DN节点。更多信息,请参见单表打散

    说明

    DEFAULT_SINGLE='ON'的优先级高于MODE='auto',即开启单表打散功能后,自动分区功能将失效。

示例

  • 创建AUTO模式数据库test,并指定字符集为UTF8。

    CREATE DATABASE test MODE=auto default CHARACTER SET UTF8;
    Query OK, 1 row affected (0.00 sec)
  • 在实例中创建一个数据库,并通过以下命令指定其存储位置为polardbx-storage-0-master节点。

    CREATE DATABASE db1 MODE=drds LOCALITY='dn=polardbx-storage-0-master';
    说明
    • 如果在创建数据库时未指定数据库的存储位置,系统将默认在所有存储节点中均匀分布数据库。

    • 数据库中分表的存储位置与该库的存储位置保持一致,以实现分表上的数据隔离。

    数据库创建成功后,您可以通过以下语句查看数据库的存储位置信息。

    SHOW CREATE DATABASE db1 MODE=drds;

    返回结果如下所示:

    +----------+------------------------------------------------------------------------+
    | DATABASE | CREATE DATABASE                                                        |
    +----------+------------------------------------------------------------------------+
    | db1      | CREATE DATABASE `db1` /* LOCALITY = "dn=polardbx-storage-0-master" */  |
    +----------+------------------------------------------------------------------------+
    1 row in set
  • 本页导读 (1)
  • 语法
  • 注意事项
  • 参数说明
  • 示例