Skip to content

IoTDB 学习笔记

IoTDB 的 SQL 语句

数据库管理

bash
# 创建名为root.ln的数据库
CREATE DATABASE root.ln
# 查看所有数据库
SHOW DATABASES
# 删除名为root.ln的数据库
DELETE DATABASE root.ln
# 统计时间序列的总数
COUNT TIMESERIES root.**
# 统计某通配符路径下的时间序列数量
COUNT TIMESERIES roo.ln.**

时间序列路径管理

bash
# 查看设备
SHOW DEVICES
# 查看root.ln的下一层路径
SHOW CHILD PATHS root.ln
# 查看 root.ln 的下一层节点
SHOW CHILD NODES root.ln
# 统计所有设备
COUNT DEVICES
# 统计路径中指定层级的节点个数
COUNT NODES root.ln.** LEVEL=2

查询数据

bash
# 查询root.ln.wf01.wt01设备下的所有时间序列数据
SELECT * FROM root.ln.wf01.wt01
# 根据时间戳进行筛选查询
SELECT temperature FROM root.ln.wf01.wt01 WHERE time > 2022-01-01T00:05:00.00
# 使用last查询最新点数据
SELECT last * FROM root.ln.wf01.wt01

注意事项

  • root 作为一个保留字符,它只允许出现在下文提到的时间序列的开头,若其他层级出现 root,则无法解析,提示报错。
  • 除了时间序列的开头的层级(root)外,其他的层级支持的字符如下:
    • [ 0-9 a-z A-Z _ ] (字母,数字,下划线)
    • ['\u2E80'..'\u9FFF'] (UNICODE 中文字符)
  • 特别地,如果系统在 Windows 系统上部署,那么 database 路径结点名是大小写不敏感的。例如,同时创建root.lnroot.LN 是不被允许的。
  • 如果需要在路径结点名中用特殊字符,可以用反引号引用路径结点名。

IoTDB 数据类型

基本数据类型

  • BOOLEAN(布尔值)
  • INT32(整型)
  • INT64(长整型)
  • FLOAT(单精度浮点数)
  • DOUBLE(双精度浮点数)
  • TEXT(长字符串)
  • STRING(字符串)
  • BLOB(大二进制对象)
  • TIMESTAMP(时间戳)
  • DATE(日期)

其中,STRING 和 TEXT 类型的区别在于,STRING 类型具有更多的统计信息,能够用于优化值过滤查询。TEXT 类型适合用于存储长字符串。

在创建 FLOAT 和 DOUBLE 类型的序列,采用 RLE 或 TS_2DIFF,可以在创建时通过MAX_POINT_NUMBER 属性指定浮点数的小数点后位数

sql
CREATE TIMESERIES root.vehicle.d0.s0 WITH DATATYPE=FLOAT, ENCODING=RLE, 'MAX_POINT_NUMBER'='2';

若未指定,则默认为 2 位小数。

序列数据类型支持的写入数据类型
BOOLEANBOOLEAN
INT32INT32
INT64INT32 INT64
FLOATINT32 FLOAT
DOUBLEINT32 INT64 FLOAT DOUBLE
TEXTTEXT

时间戳类型

绝对时间戳

绝对时间戳分为二种,一种为 LONG 类型,一种为 DATETIME 类型。

相对时间戳

符号含义表示例子
yyear1y=365 days1y
momonth1mo=30 days1mo
wweek1w=7 days1w
dday1d=1 day1d
hhour1h=3600 seconds1h
mminute1m=60 seconds1m
ssecond1s=1 second1s
msmillisecond1ms=1000_000 nanoseconds1ms
usmicrosecond1us=1000 nanoseconds1us
nsnanosecond1ns=1 nanosecond1ns

示例:

now() - 1d2h //比服务器时间早 1 天 2 小时的时间
now() - 1w //比服务器时间早 1 周的时间

注意:'+'和'-'的左右两边必须有空格