在松果时序数据库中,可以通过查询系统表 sys_table 及 sys_column 获取系统表和数据表的表结构。

    2. 创建数据表

    使用 CREATE TABALE 语句创建表。每个表必须有两个固定的列:设备ID(devid)列,数据类型为bigint,以及时间戳(tstamp)列,数据类型为datetime;表的主键为设备ID和时间戳,创建表时不需要显示指定主键,也不能修改他们的类型和顺序,一个典型的创建表语句示例如下:

    例如:创建一个表tab01的示例:

    1. (
    2. devid bigint,
    3. tstamp datetime,
    4. val01 bool,
    5. val02 bigint,
    6. val03 datetime,
    7. val04 double,
    8. val05 real2,
    9. val07 real4,
    10. val08 real6,
    11. val09 string,
    12. val10 blob
    13. )

    3. 修改表结构

    使用 ALTER TABLE 语句修改表结构,设备ID(devid)和时间戳(tstamp)列不可修改。一个典型的修改表结构语句如下所示:

    1. ALTER TABLE tab01
    2. (
    3. devid bigint,
    4. val02 bigint,
    5. val03 datetime,
    6. val04 double,
    7. val05 string,
    8. val06 blob
    9. )

    概念说明:
    字段标识 : 使用列名(不区分大小写)和类型的组合标识一个字段。
    删除字段 : 若一个字段标识在原表结构中存在,新表结构中不存在,则表示该字段被删除。
    新增字段 : 若一个字段标识在原表结构中不存在,新表结构中存在,则表示该字段是新增字段。需要说名的是当修改一个字段从val01 bool 到 val01 bigint 后表示删除了字段val01 bool , 新增了字段 val01 bigint。 修改表结构 : 若修改了任何字段之间的顺序、字段名、字段类型,都将视为修改了表结构。

    修改表结构后有如下影响:
    当系统执行插入数据时:

    • 当对应的数据文件存在时,会检查当前表结构与数据文件中的表结构是否一致(字段名、类型、顺序完全一致),若不一致则插入失败。

    • 当对应的数据文件不存在时,会使用当前表结构创建数据文件,然后将数据插入到新建的数据文件中。

    当系统执行查询数据时:
    删除的字段无法查询到(数据依然存在),新添加的字段在已存在的数据文件上查询时的值为null。

    修改表结构的实例:

    使用 DROP TABLE 语句删除表,删除表会删除改表的设备文件和所有数据文件,请谨慎操作。

    删除表tab01的示例如下:

    1. DROP TABLE tab01

    5. 分离表

    分离表可以将数据表从系统中移除,但是保留表的设备文件和所有数据文件。分离表可以将一个表的所有数据转移到另一台服务器。具体操作需结合后面的附加表数据文件操作。

    分离表的使用方法如下:

    6. 附加表

      注意:附加表后,表原来的数据文件不会自动附加,请根据数据文件管理部分手动附加数据文件。