// 使用 database,改变当前连接上下文中的 database 为 test
// 如果不指定也行,但后续所有的 sql,在表名前面都需要加上数据库名,如 test.
create table table1(device_id STRING ID, color STRING ATTRIBUTE, s1 TEXT MEASUREMENT, s2 INT32 MEASUREMENT, s3 INT64 MEASUREMENT, s4 FLOAT MEASUREMENT, s5 DOUBLE MEASUREMENT, s6 BOOLEAN MEASUREMENT, s7 DATE MEASUREMENT, s8 TIMESTAMP MEASUREMENT, s9 STRING MEASUREMENT, s10 BLOB MEASUREMENT);
// 如果之前已经用 use 语句指定了数据库,则还可以写出如下语句
// 描述某个表,即展示某个表已经创建的列名、列类型、列类别
describe/desc test.table1;
// 如果之前已经用 use 语句指定了数据库,则还可以写出如下语句
// 列的顺序可以随意指定,只需要保证后面的values与前面的列是一一对应的即可
INSERT INTO table1(time,device_id,color,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10) values(1, 'd1', 'red', 'abcd', 1, 1, 1, 1, true, '2021-10-01', 1633046400000, 'abcd', X'abcd');
// 若属性列的值,与之前指定的不一致,如这里的color指定为blue了,则会自动将对应设备的该属性值进行更行
INSERT INTO table1(time,device_id,color,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10) values(2, 'd1', 'blue', 'abcd', 2, 2, 2, 2, false, '2021-10-02', 1633046400001, 'abcde', X'abcdef');
// 单条 insert sql 无需指定所有的列,可以只指定部分列,但推荐指定所有标识列(因为标识列唯一定位了一个设备,如果有标识列没有指定,则默认填充为 null)
INSERT INTO table1(time,device_id,s1) values(2, 'd1', 'test');
INSERT INTO table1(time,device_id,s1) values(3, 'd1', 'abcdefg');
INSERT INTO table1(time,device_id,s9) values(2, 'd1', 'test');
INSERT INTO table1(time,device_id,s9) values(3, 'd1', 'abcdefg');
INSERT INTO table1(time,device_id,color,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10) values(1, 'd2','green', 'abcd', 11, 11, 11, 11, true, '2021-10-01', 1633046400001, 'abcde', X'01abcdef');
// 查询表中所有列,并按 device_id 排序
select * from table1 order by device_id;
// 查询表中所有列,并先按 time 排序,再按device_id 排序
select * from table1 order by time, device_id;
// 指定查某几列,time 列在 select 子句中的第二列,则结果集里也在第二列
select device_id, time, s1 from table1;
select time, s2 from table1 where device_id='d1' and time >= 1 and time < 2;
// 不指定 time 列,则结果集中也不会有 time 列
select s2 from table1 where device_id='d1' and time >= 1 and time < 2;
select time,s1,SUBSTRING(s1 FROM 1),SUBSTRING(s1 FROM 1 FOR 3), s4+1 from table1;
select time,s1,SUBSTRING(s1 FROM 1) as sub_s1_1,SUBSTRING(s1 FROM 1 FOR 3) as sub_s1_2, s4+1 as s4_add_1 from table1;
show devices from table1;
count devices from table1;
// 删除整个数据库,目前 drop table 的功能暂未实现(规划为 V2 的功能),想要清除数据,只能依赖 drop database