数据库管理

1. 数据库管理

1.1 创建数据库

用于创建数据库。

语法:

 CREATE DATABASE (IF NOT EXISTS)? <DATABASE_NAME> (WITH properties)?

说明:

  1. <DATABASE_NAME> 数据库名称,具有以下特性:

    • 大小写不敏感,创建成功后,统一显示为小写
    • 名称的长度不得超过 64 个字符。
    • 名称中包含下划线(_)、数字(非开头)、英文字母可以直接创建
    • 名称中包含特殊字符(如`)、中文字符、数字开头时,必须用双引号 "" 括起来。
  2. WITH properties 子句可配置如下属性:

注:属性的大小写不敏感,有关详细信息大小写敏感规则

属性含义默认值
TTL数据自动过期删除,单位 msINF
TIME_PARTITION_INTERVAL数据库的时间分区间隔,单位 ms604800000
SCHEMA_REGION_GROUP_NUM数据库的元数据副本组数量,一般不需要修改1
DATA_REGION_GROUP_NUM数据库的数据副本组数量,一般不需要修改2

示例:

CREATE DATABASE database1;
CREATE DATABASE IF NOT EXISTS database1;

// 创建一个名为 database1 的数据库,并将数据库的TTL时间设置为1年。
CREATE DATABASE IF NOT EXISTS database1 with(TTL=31536000000);

1.2 使用数据库

用于指定当前数据库作为表的命名空间。

语法:

USE <DATABASE_NAME>

示例:

USE database1

1.3 查看当前数据库

返回当前会话所连接的数据库名称,若未执行过 use语句指定数据库,则默认为 null

语法:

SHOW CURRENT_DATABASE

示例:

IoTDB> SHOW CURRENT_DATABASE;
+---------------+
|CurrentDatabase|
+---------------+
|           null|
+---------------+

IoTDB> USE test;

IoTDB> SHOW CURRENT_DATABASE;
+---------------+
|CurrentDatabase|
+---------------+
|   iot_database|
+---------------+

1.4 查看所有数据库

用于查看所有数据库和数据库的属性信息。

语法:

SHOW DATABASES (DETAILS)?

语句返回列含义如下:

列名含义
databasedatabase名称。
TTL数据保留周期。如果在创建数据库的时候指定TTL,则TTL对该数据库下所有表的TTL生效。也可以再通过 create tablealter table 来设置或更新表的TTL时间。
SchemaReplicationFactor元数据副本数,用于确保元数据的高可用性。可以在iotdb-system.properties中修改schema_replication_factor配置项。
DataReplicationFactor数据副本数,用于确保数据的高可用性。可以在iotdb-system.properties中修改data_replication_factor配置项。
TimePartitionInterval时间分区间隔,决定了数据在磁盘上按多长时间进行目录分组,通常采用默认1周即可。
SchemaRegionGroupNum使用DETAILS语句会返回此列,展示数据库的元数据副本组数量,一般不需要修改
DataRegionGroupNum使用DETAILS语句会返回此列,展示数据库的数据副本组数量,一般不需要修改

示例:

IoTDB> show databases
+---------+-------+-----------------------+---------------------+---------------------+
| Database|TTL(ms)|SchemaReplicationFactor|DataReplicationFactor|TimePartitionInterval|
+---------+-------+-----------------------+---------------------+---------------------+
|test_prop|    300|                      3|                    2|               100000|
|    test2|    300|                      3|                    2|            604800000|
+---------+-------+-----------------------+---------------------+---------------------+
IoTDB> show databases details
+---------+-------+-----------------------+---------------------+---------------------+-----------------------+-----------------------+
| Database|TTL(ms)|SchemaReplicationFactor|DataReplicationFactor|TimePartitionInterval|SchemaRegionGroupNum|  DataRegionGroupNum|
+---------+-------+-----------------------+---------------------+---------------------+-----------------------+-----------------------+
|test_prop|    300|                      3|                    2|               100000|                      1|                      2|
|    test2|    300|                      3|                    2|            604800000|                      1|                      2|
+---------+-------+-----------------------+---------------------+---------------------+-----------------------+-----------------------+

1.5 修改数据库

用于修改数据库中的部分属性。

语法:

ALTER DATABASE (IF EXISTS)? database=identifier SET PROPERTIES propertyAssignments

说明:

  1. ALTER DATABASE操作目前仅支持对数据库的SCHEMA_REGION_GROUP_NUMDATA_REGION_GROUP_NUM以及TTL属性进行修改。

示例:

ALTER DATABASE database1 SET PROPERTIES TTL=31536000000;

1.6 删除数据库

用于删除数据库。

语法:

DROP DATABASE (IF EXISTS)? <DATABASE_NAME>

说明:

  1. 数据库已被设置为当前使用(use)的数据库,仍然可以被删除(drop)。
  2. 删除数据库将导致所选数据库及其内所有表连同其存储的数据一并被删除。

示例:

DROP DATABASE IF EXISTS database1