TDengine 中对表的管理操作

ops/2025/3/5 2:01:07/

简介

TDengine 中的表可分为子表和普通表,子表以超级表为模板创建,普通表是指没有 TAG 属性的独立表,在 TDengine 中普通表使用的场景较少,主要以超级表和子表为主。

创建表

CREATE TABLE 语句用于创建普通表和以超级表为模板创建子表(也可以通过指定 TAGS 字段创建超级表)。

sql">CREATE TABLE [IF NOT EXISTS] [db_name.]tb_name (create_definition [, create_definition] ...) [table_options]CREATE TABLE create_subtable_clauseCREATE TABLE [IF NOT EXISTS] [db_name.]tb_name (create_definition [, create_definition] ...)[TAGS (create_definition [, create_definition] ...)][table_options]create_subtable_clause: {create_subtable_clause [create_subtable_clause] ...| [IF NOT EXISTS] [db_name.]tb_name USING [db_name.]stb_name [(tag_name [, tag_name] ...)] TAGS (tag_value [, tag_value] ...)
}create_definition:col_name column_definitioncolumn_definition:type_name [PRIMARY KEY] [ENCODE 'encode_type'] [COMPRESS 'compress_type'] [LEVEL 'level_type']table_options:table_option ...table_option: {COMMENT 'string_value'| SMA(col_name [, col_name] ...)| TTL value
}

使用说明

  1. 表(列)名命名规则参见名称命名规则。
  2. 表名最大长度为 192。
  3. 表的第一个字段必须是 TIMESTAMP,并且系统自动将其设为主键。
  4. 除时间戳主键列之外,还可以通过 PRIMARY KEY 关键字指定第二列为额外的主键列,该列与时间戳列共同组成复合主键。当设置了复合主键时,两条记录的时间戳列与 PRIMARY KEY 列都相同,才会被认为是重复记录,数据库只保留最新的一条;否则视为两条记录,全部保留。注意:被指定为主键列的第二列必须为整型或字符串类型(VARCHAR)。
  5. 表的每行长度不能超过 48KB(从 3.0.5.0 版本开始为 64KB);(注意:每个 VARCHAR/NCHAR/GEOMETRY 类型的列还会额外占用 2 个字节的存储位置)。
  6. 使用数据类型 VARCHAR/NCHAR/GEOMETRY,需指定其最长的字节数,如 VARCHAR(20),表示 20 字节。
  7. 关于 ENCODECOMPRESS 的使用,请参考按列压缩

参数说明

  1. COMMENT:表注释。可用于超级表、子表和普通表。最大长度为 1024 个字节。
  2. SMA:Small Materialized Aggregates,提供基于数据块的自定义预计算功能。预计算类型包括 MAX、MIN 和 SUM。可用于超级表/普通表。
  3. TTL:Time to Live,是用户用来指定表的生命周期的参数。如果创建表时指定了这个参数,当该表的存在时间超过 TTL 指定的时间后,TDengine 自动删除该表。这个 TTL 的时间只是一个大概时间,系统不保证到了时间一定会将其删除,而只保证存在这样一个机制且最终一定会删除。TTL 单位是天,取值范围为[0, 2147483647],默认为 0,表示不限制,到期时间为表创建时间加上 TTL 时间。TTL 与数据库 KEEP 参数没有关联,如果 KEEP 比 TTL 小,在表被删除之前数据也可能已经被删除。

创建子表

创建子表

sql">CREATE TABLE [IF NOT EXISTS] tb_name USING stb_name TAGS (tag_value1, ...);

创建子表并指定标签的值

sql">CREATE TABLE [IF NOT EXISTS] tb_name USING stb_name (tag_name1, ...) TAGS (tag_value1, ...);

以指定的超级表为模板,也可以指定一部分 TAGS 列的值来创建数据表(没被指定的 TAGS 列会设为空值)。

批量创建子表

sql">CREATE TABLE [IF NOT EXISTS] tb_name1 USING stb_name TAGS (tag_value1, ...) [IF NOT EXISTS] tb_name2 USING stb_name TAGS (tag_value2, ...) ...;

批量建表方式要求数据表必须以超级表为模板。 在不超出 SQL 语句长度限制的前提下,单条语句中的建表数量建议控制在 1000 ~ 3000 之间,将会获得比较理想的建表速度。

使用 CSV 批量创建子表

sql">CREATE TABLE [IF NOT EXISTS] USING [db_name.]stb_name (field1_name [, field2_name] ....) FILE csv_file_path;

参数说明

  1. FILE 语法表示数据来自于 CSV 文件(英文逗号分隔、英文单引号括住每个值),CSV 文件无需表头。CSV 文件中应仅包含 table name 与 tag 值。如需插入数据,请参考’数据写入’章节。
  2. 为指定的 stb_name 创建子表,该超级表必须已经存在。
  3. field_name 列表顺序与 CSV 文件各列内容顺序一致。列表中不允许出现重复项,且必须包含 tbname,可包含零个或多个超级表中已定义的标签列。未包含在列表中的标签值将被设置为 NULL。

修改普通表

sql">ALTER TABLE [db_name.]tb_name alter_table_clausealter_table_clause: {alter_table_options| ADD COLUMN col_name column_type| DROP COLUMN col_name| MODIFY COLUMN col_name column_type| RENAME COLUMN old_col_name new_col_name
}alter_table_options:alter_table_option ...alter_table_option: {TTL value| COMMENT 'string_value'
}

使用说明
对普通表可以进行如下修改操作

  1. ADD COLUMN:添加列。
  2. DROP COLUMN:删除列。
  3. MODIFY COLUMN:修改列定义,如果数据列的类型是可变长类型,那么可以使用此指令修改其宽度,只能改大,不能改小。
  4. RENAME COLUMN:修改列名称。
  5. 普通表的主键列不能被修改,也不能通过 ADD/DROP COLUMN 来添加/删除主键列。

参数说明

  1. COMMENT:表注释。可用于超级表、子表和普通表。最大长度为 1024 个字节。
  2. TTL:Time to Live,是用户用来指定表的生命周期的参数。如果创建表时指定了这个参数,当该表的存在时间超过 TTL 指定的时间后,TDengine 自动删除该表。这个 TTL 的时间只是一个大概时间,系统不保证到了时间一定会将其删除,而只保证存在这样一个机制且最终一定会删除。TTL 单位是天,取值范围为[0, 2147483647],默认为 0,表示不限制,到期时间为表创建时间加上 TTL 时间。TTL 与数据库 KEEP 参数没有关联,如果 KEEP 比 TTL 小,在表被删除之前数据也可能已经被删除。

增加列

sql">ALTER TABLE tb_name ADD COLUMN field_name data_type;

删除列

sql">ALTER TABLE tb_name DROP COLUMN field_name;

修改列宽

sql">ALTER TABLE tb_name MODIFY COLUMN field_name data_type(length);

修改列名

sql">ALTER TABLE tb_name RENAME COLUMN old_col_name new_col_name

修改表生命周期

sql">ALTER TABLE tb_name TTL value

修改表注释

sql">ALTER TABLE tb_name COMMENT 'string_value'

修改子表

sql">ALTER TABLE [db_name.]tb_name alter_table_clausealter_table_clause: {alter_table_options| SET TAG tag_name = new_tag_value, tag_name2=new_tag2_value ...
}alter_table_options:alter_table_option ...alter_table_option: {TTL value| COMMENT 'string_value'
}

使用说明

  1. 对子表的列和标签的修改,除了更改标签值以外,都要通过超级表才能进行。

参数说明

  1. COMMENT:表注释。可用于超级表、子表和普通表。最大长度为 1024 个字节。
  2. TTL:Time to Live,是用户用来指定表的生命周期的参数。如果创建表时指定了这个参数,当该表的存在时间超过 TTL 指定的时间后,TDengine 自动删除该表。这个 TTL 的时间只是一个大概时间,系统不保证到了时间一定会将其删除,而只保证存在这样一个机制且最终一定会删除。TTL 单位是天,取值范围为[0, 2147483647],默认为 0,表示不限制,到期时间为表创建时间加上 TTL 时间。TTL 与数据库 KEEP 参数没有关联,如果 KEEP 比 TTL 小,在表被删除之前数据也可能已经被删除。

修改子表标签值

ALTER TABLE tb_name SET TAG tag_name1=new_tag_value1, tag_name2=new_tag_value2 ...;

修改表生命周期

sql">ALTER TABLE tb_name TTL value

修改表注释

sql">ALTER TABLE tb_name COMMENT 'string_value'

删除表

可以在一条 SQL 语句中删除一个或多个普通表或子表。

sql">DROP TABLE [IF EXISTS] [db_name.]tb_name [, [IF EXISTS] [db_name.]tb_name] ...

注意:删除表并不会立即释放该表所占用的磁盘空间,而是把该表的数据标记为已删除,在查询时这些数据将不会再出现,但释放磁盘空间会延迟到系统自动(建库参数 keep 生效)或用户手动进行数据重整时(企业版功能 compact)。

查看表的信息

显示所有表

如下 SQL 语句可以列出当前数据库中的所有表名。

sql">SHOW TABLES [LIKE tb_name_wildcard];

显示表创建语句

SHOW CREATE TABLE tb_name;

常用于数据库迁移。对一个已经存在的数据表,返回其创建语句;在另一个集群中执行该语句,就能得到一个结构完全相同的数据表。

获取表结构信息

DESCRIBE [db_name.]tb_name;

访问官网

更多内容欢迎访问 TDengine 官网


http://www.ppmy.cn/ops/162749.html

相关文章

《Python实战进阶》No 10:基于Flask案例的Web 安全性:防止 SQL 注入、XSS 和 CSRF 攻击

第10集:Web 安全性:防止 SQL 注入、XSS 和 CSRF 攻击 在现代 Web 开发中,安全性是至关重要的。无论是用户数据的保护,还是系统稳定性的维护,开发者都需要对常见的 Web 安全威胁有深刻的理解,并采取有效的防…

API接口:企业名称、注册号、统一社会信用代码、企业类型、成立日期和法定代表人等数据 API 接口使用指南

API接口:企业名称、注册号、统一社会信用代码、企业类型、成立日期和法定代表人等数据 API 接口使用指南 本文详细介绍一种基于 Web 搜索方式实现的企业信息查询接口,适用于数据补全、企业资质验证、信息查询等场景。文章内容涵盖接口功能、请求参数、返…

.hive-staging_hive临时文件处理

.hive-staging_hive临时文件不删除原因: 通过spark-sql、hive-sql、hue等提交select或者insert overwrite等sql到hive时,会产生该目录,用于临时存放执行结果,比如insert overwrite会将结果暂存到该目录下,待任务结束&a…

【Java项目】基于SpringBoot的藏区特产销售平台

【Java项目】基于SpringBoot的藏区特产销售平台 技术简介:采用Java技术、SpringBoot框架、MYSQL数据库等实现。 系统简介:藏区特产销售平台主要是前台管理类型的系统,前台系统功能模块分为(1)首页展示模块&#xff0…

CCF-CSP认证 202104-1灰度直方图

题目描述 思路 首先输入矩阵长度、矩阵宽度和灰度范围&#xff0c;结果数组长度可固定&#xff0c;其中的元素要初始化为0。在输入灰度值的时候&#xff0c;结果数组中以该灰度值为索引的元素值1&#xff0c;即可统计每个灰度值的数量。 代码 C版&#xff1a; #include <…

linux中断调用流程(arm)

文章目录 ARM架构下Linux中断处理全流程解析&#xff1a;从硬件触发到驱动调用 ⚡**一、中断触发与硬件层响应** &#x1f50c;**1. 设备触发中断** &#x1f4e1; **二、CPU阶段&#xff1a;异常入口与上下文处理** &#x1f5a5;️**1. 异常模式切换** &#x1f504;**2. 跳转…

登录页面前后端

目录 一、Vue前端部署整体结构页面路由跳转 二、后端结构路由监听端口和业务逻辑 三、数据库数据库操作方法数据模型数据库绑定 四、小结 一、Vue前端部署 整体结构 这是vue的项目结构 页面 Login_view.vue是用来写登录界面的&#xff0c;其中scripts部分中的methods用来发…

基于SpringBoot和Leaflet的行政区划地图掩膜效果实战

目录 前言 一、掩膜小知识 1、GIS掩膜的实现原理 2、图层掩膜流程? 二、使用插件 1、leaflet-mask介绍 2、核心代码解释? 三、完整实例实现 1、后台逻辑实现 2、省级行政区划查询实现 3、行政区划定位及掩膜实现? 4、成果展示 总结 前言 在之前的博客提过按空…