Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
taosdata
TDengine
提交
81e7ae0b
T
TDengine
项目概览
taosdata
/
TDengine
1 年多 前同步成功
通知
1185
Star
22016
Fork
4786
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
TDengine
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
81e7ae0b
编写于
7月 26, 2022
作者:
W
wade zhang
提交者:
GitHub
7月 26, 2022
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #15425 from taosdata/docs/wade-3.0
doc: table, stable, database in sql manual
上级
6f3bf5b7
e13e80db
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
303 addition
and
182 deletion
+303
-182
docs/zh/12-taos-sql/02-database.md
docs/zh/12-taos-sql/02-database.md
+96
-82
docs/zh/12-taos-sql/03-table.md
docs/zh/12-taos-sql/03-table.md
+133
-60
docs/zh/12-taos-sql/04-stable.md
docs/zh/12-taos-sql/04-stable.md
+74
-40
未找到文件。
docs/zh/12-taos-sql/02-database.md
浏览文件 @
81e7ae0b
...
...
@@ -6,53 +6,85 @@ description: "创建、删除数据库,查看、修改数据库参数"
## 创建数据库
```
CREATE DATABASE [IF NOT EXISTS] db_name [KEEP keep] [DAYS days] [UPDATE 1];
```
:::info
1.
KEEP 是该数据库的数据保留多长天数,缺省是 3650 天(10 年),数据库会自动删除超过时限的数据;
<!-- REPLACE_OPEN_TO_ENTERPRISE__KEEP_PARAM_DESCRIPTION -->
2.
UPDATE 标志数据库支持更新相同时间戳数据;(从 2.1.7.0 版本开始此参数支持设为 2,表示允许部分列更新,也即更新数据行时未被设置的列会保留原值。)(从 2.0.8.0 版本开始支持此参数。注意此参数不能通过
`ALTER DATABASE`
指令进行修改。)
1.
UPDATE 设为 0 时,表示不允许更新数据,后发送的相同时间戳的数据会被直接丢弃;
2.
UPDATE 设为 1 时,表示更新全部列数据,即如果更新一个数据行,其中某些列没有提供取值,那么这些列会被设为 NULL;
3.
UPDATE 设为 2 时,表示支持更新部分列数据,即如果更新一个数据行,其中某些列没有提供取值,那么这些列会保持原有数据行中的对应值;
4.
更多关于 UPDATE 参数的用法,请参考
[
FAQ
](
/train-faq/faq
)
。
3.
数据库名最大长度为 33;
4.
一条 SQL 语句的最大长度为 65480 个字符;
5.
创建数据库时可用的参数有:
-
cache:
[
详细说明
](
/reference/config/#cache
)
-
blocks:
[
详细说明
](
/reference/config/#blocks
)
-
days:
[
详细说明
](
/reference/config/#days
)
-
keep:
[
详细说明
](
/reference/config/#keep
)
-
minRows:
[
详细说明
](
/reference/config/#minrows
)
-
maxRows:
[
详细说明
](
/reference/config/#maxrows
)
-
wal:
[
详细说明
](
/reference/config/#wallevel
)
-
fsync:
[
详细说明
](
/reference/config/#fsync
)
-
update:
[
详细说明
](
/reference/config/#update
)
-
cacheLast:
[
详细说明
](
/reference/config/#cachelast
)
-
replica:
[
详细说明
](
/reference/config/#replica
)
-
quorum:
[
详细说明
](
/reference/config/#quorum
)
-
comp:
[
详细说明
](
/reference/config/#comp
)
-
precision:
[
详细说明
](
/reference/config/#precision
)
6.
请注意上面列出的所有参数都可以配置在配置文件
`taosd.cfg`
中作为创建数据库时使用的默认配置,
`create database`
的参数中明确指定的会覆盖配置文件中的设置。
:::
```
sql
CREATE
DATABASE
[
IF
NOT
EXISTS
]
db_name
[
database_options
]
database_options
:
database_option
...
database_option
:
{
BUFFER
value
|
CACHEMODEL
{
'none'
|
'last_row'
|
'last_value'
|
'both'
}
|
CACHESIZE
value
|
COMP
{
0
|
1
|
2
}
|
DURATION
value
|
FSYNC
value
|
MAXROWS
value
|
MINROWS
value
|
KEEP
value
|
PAGES
value
|
PAGESIZE
value
|
PRECISION
{
'ms'
|
'us'
|
'ns'
}
|
REPLICA
value
|
RETENTIONS
ingestion_duration
:
keep_duration
...
|
STRICT
{
'off'
|
'on'
}
|
WAL
{
1
|
2
}
|
VGROUPS
value
|
SINGLE_STABLE
{
0
|
1
}
|
WAL_RETENTION_PERIOD
value
|
WAL_ROLL_PERIOD
value
|
WAL_RETENTION_SIZE
value
|
WAL_SEGMENT_SIZE
value
}
```
### 参数说明
-
buffer: 一个 VNODE 写入内存池大小,单位为MB,默认为96,最小为3,最大为16384。
-
CACHEMODEL:表示是否在内存中缓存子表的最近数据。默认为none。
-
none:表示不缓存。
-
last_row:表示缓存子表最近一行数据。这将显著改善 LAST_ROW 函数的性能表现。
-
last_value:表示缓存子表每一列的最近的非 NULL 值。这将显著改善无特殊影响(WHERE、ORDER BY、GROUP BY、INTERVAL)下的 LAST 函数的性能表现。
-
both:表示同时打开缓存最近行和列功能。
-
CACHESIZE:表示缓存子表最近数据的内存大小。默认为 1 ,范围是[1, 65536],单位是 MB。
-
COMP:表示数据库文件压缩标志位,缺省值为 2,取值范围为 [0, 2]。
-
0:表示不压缩。
-
1:表示一阶段压缩。
-
2:表示两阶段压缩。
-
DURATION:数据文件存储数据的时间跨度。可以使用加单位的表示形式,如 DURATION 100h、DURATION 10d等,支持 m(分钟)、h(小时)和 d(天)三个单位。不加时间单位时默认单位为天,如 DURATION 50 表示 50 天。
-
FSYNC:当 WAL 参数设置为2时,落盘的周期。默认为3000,单位毫秒。最小为0,表示每次写入立即落盘;最大为180000,即三分钟。
-
MAXROWS:文件块中记录的最大条数,默认为4096条。
-
MINROWS:文件块中记录的最小条数,默认为100条。
-
KEEP:表示数据文件保存的天数,缺省值为 3650,取值范围 [1, 365000],且必须大于或等于 DURATION 参数值。数据库会自动删除保存时间超过KEEP值的数据。KEEP 可以使用加单位的表示形式,如 KEEP 100h、KEEP 10d 等,支持m(分钟)、h(小时)和 d(天)三个单位。也可以不写单位,如 KEEP 50,此时默认单位为天。
-
PAGES:一个 VNODE 中元数据存储引擎的缓存页个数,默认为256,最小64。一个 VNODE 元数据存储占用 PAGESIZE
*
PAGES,默认情况下为1MB内存。
-
PAGESIZE:一个 VNODE 中元数据存储引擎的页大小,单位为KB,默认为4 KB。范围为1到16384,即1 KB到16 MB。
-
PRECISION:数据库的时间戳精度。ms表示毫秒,us表示微秒,ns表示纳秒,默认ms毫秒。
-
REPLICA:表示数据库副本数,取值为1或3,默认为1。在集群中使用,副本数必须小于或等于 DNODE 的数目。
-
RETENTIONS:表示数据的聚合周期和保存时长,如RETENTIONS 15s:7d,1m:21d,15m:50d表示数据原始采集周期为15秒,原始数据保存7天;按1分钟聚合的数据保存21天;按15分钟聚合的数据保存50天。目前支持且只支持三级存储周期。
-
STRICT:表示数据同步的一致性要求,默认为off。
-
on 表示强一致,即运行标准的 raft 协议,半数提交返回成功。
-
off表示弱一致,本地提交即返回成功。
-
WAL:WAL级别,默认为1。
-
1:写WAL,但不执行fsync。
-
2:写WAL,而且执行fsync。
-
VGROUPS:数据库中初始vgroup的数目。
-
SINGLE_STABLE:表示此数据库中是否只可以创建一个超级表,用于超级表列非常多的情况。
-
0:表示可以创建多张超级表。
-
1:表示只可以创建一张超级表。
-
WAL_RETENTION_PERIOD:wal文件的额外保留策略,用于数据订阅。wal的保存时长,单位为s。默认为0,即落盘后立即删除。-1表示不删除。
-
WAL_RETENTION_SIZE:wal文件的额外保留策略,用于数据订阅。wal的保存的最大上限,单位为KB。默认为0,即落盘后立即删除。-1表示不删除。
-
WAL_ROLL_PERIOD:wal文件切换时长,单位为s。当wal文件创建并写入后,经过该时间,会自动创建一个新的wal文件。默认为0,即仅在落盘时创建新文件。
-
WAL_SEGMENT_SIZE:wal单个文件大小,单位为KB。当前写入文件大小超过上限后会自动创建一个新的wal文件。默认为0,即仅在落盘时创建新文件。
### 创建数据库示例
创建时间精度为纳秒的数据库, 保留 1 年数据:
```
sql
CREATE
DATABASE
test
PRECISION
'ns'
KEEP
365
;
```
create
database
if
not
exists
db
vgroups
10
buffer
10
## 显示系统当前参数
```
SHOW VARIABLES;
```
## 使用数据库
以上示例创建了一个有 10 个 vgroup 名为 db 的数据库, 其中每个 vnode 分配也 10MB 的写入缓存
### 使用数据库
```
USE db_name;
...
...
@@ -63,61 +95,42 @@ USE db_name;
## 删除数据库
```
DROP DATABASE [IF EXISTS] db_name
;
DROP DATABASE [IF EXISTS] db_name
```
删除数据库。指定 Database 所包含的全部数据表将被删除,谨慎使用!
删除数据库。指定 Database 所包含的全部数据表将被删除,
该数据库的所有 vgroups 也会被全部销毁,请
谨慎使用!
## 修改数据库参数
```
ALTER DATABASE db_name COMP 2;
```
COMP 参数是指修改数据库文件压缩标志位,缺省值为 2,取值范围为 [0, 2]。0 表示不压缩,1 表示一阶段压缩,2 表示两阶段压缩。
```
ALTER DATABASE db_name REPLICA 2;
```
REPLICA 参数是指修改数据库副本数,取值范围 [1, 3]。在集群中使用,副本数必须小于或等于 DNODE 的数目。
```
ALTER DATABASE db_name KEEP 365;
```
KEEP 参数是指修改数据文件保存的天数,缺省值为 3650,取值范围 [days, 365000],必须大于或等于 days 参数值。
```
ALTER DATABASE db_name QUORUM 2;
```
QUORUM 参数是指数据写入成功所需要的确认数,取值范围 [1, 2]。对于异步复制,quorum 设为 1,具有 master 角色的虚拟节点自己确认即可。对于同步复制,quorum 设为 2。原则上,Quorum >= 1 并且 Quorum <= replica(副本数),这个参数在启动一个同步模块实例时需要提供。
```
ALTER DATABASE db_name BLOCKS 100;
```
```
sql
ALTER
DATABASE
db_name
[
alter_database_options
]
BLOCKS 参数是每个 VNODE (TSDB) 中有多少 cache 大小的内存块,因此一个 VNODE 的用的内存大小粗略为(cache
\*
blocks)。取值范围 [3, 1000]。
alter_database_options
:
alter_database_option
...
```
ALTER DATABASE db_name CACHELAST 0;
alter_database_option
:
{
CACHEMODEL
{
'none'
|
'last_row'
|
'last_value'
|
'both'
}
|
CACHESIZE
value
|
FSYNC
value
|
KEEP
value
|
WAL
value
}
```
CACHELAST 参数控制是否在内存中缓存子表的最近数据。缺省值为 0,取值范围 [0, 1, 2, 3]。其中 0 表示不缓存,1 表示缓存子表最近一行数据,2 表示缓存子表每一列的最近的非 NULL 值,3 表示同时打开缓存最近行和列功能。(从 2.0.11.0 版本开始支持参数值 [0, 1],从 2.1.2.0 版本开始支持参数值 [0, 1, 2, 3]。)
说明:缓存最近行,将显著改善 LAST_ROW 函数的性能表现;缓存每列的最近非 NULL 值,将显著改善无特殊影响(WHERE、ORDER BY、GROUP BY、INTERVAL)下的 LAST 函数的性能表现。
:::note
其它参数在3.0.0.0中暂不支持修改
:::tip
以上所有参数修改后都可以用 show databases 来确认是否修改成功。另外,从 2.1.3.0 版本开始,修改这些参数后无需重启服务器即可生效。
:::
## 显示系统所有数据库
## 查看数据库
### 查看系统中的所有数据库
```
SHOW DATABASES;
```
## 显示一个数据库的创建语句
##
#
显示一个数据库的创建语句
```
SHOW CREATE DATABASE db_name;
...
...
@@ -125,3 +138,4 @@ SHOW CREATE DATABASE db_name;
常用于数据库迁移。对一个已经存在的数据库,返回其创建语句;在另一个集群中执行该语句,就能得到一个设置完全相同的 Database。
### 查看数据库参数
docs/zh/12-taos-sql/03-table.md
浏览文件 @
81e7ae0b
...
...
@@ -2,13 +2,45 @@
title
:
表管理
---
## 创建数据表
## 创建表
`CREATE TABLE`
语句用于创建普通表和以超级表为模板创建子表。
```
sql
CREATE
TABLE
[
IF
NOT
EXISTS
]
[
db_name
.]
tb_name
(
create_definition
[,
create_definitionn
]
...)
[
table_options
]
CREATE
TABLE
create_subtable_clause
CREATE
TABLE
[
IF
NOT
EXISTS
]
[
db_name
.]
tb_name
(
create_definition
[,
create_definitionn
]
...)
[
TAGS
(
create_definition
[,
create_definitionn
]
...)]
[
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_definition
column_definition
:
type_name
[
comment
'string_value'
]
table_options
:
table_option
...
table_option
:
{
COMMENT
'string_value'
|
WATERMARK
duration
[,
duration
]
|
MAX_DELAY
duration
[,
duration
]
|
ROLLUP
(
func_name
[,
func_name
]
...)
|
SMA
(
col_name
[,
col_name
]
...)
|
TTL
value
}
```
CREATE TABLE [IF NOT EXISTS] tb_name (timestamp_field_name TIMESTAMP, field1_name data_type1 [, field2_name data_type2 ...]);
```
:::info 说明
**使用说明**
1.
表的第一个字段必须是 TIMESTAMP,并且系统自动将其设为主键;
2.
表名最大长度为 192;
...
...
@@ -18,106 +50,147 @@ CREATE TABLE [IF NOT EXISTS] tb_name (timestamp_field_name TIMESTAMP, field1_nam
6.
为了兼容支持更多形式的表名,TDengine 引入新的转义符 "
\`
",可以让表名与关键词不冲突,同时不受限于上述表名称合法性约束检查。但是同样具有长度限制要求。使用转义字符以后,不再对转义字符中的内容进行大小写统一。
例如:
\`
aBc
\`
和
\`
abc
\`
是不同的表名,但是 abc 和 aBc 是相同的表名。
需要注意的是转义字符中的内容必须是可打印字符。
上述的操作逻辑和约束要求与 MySQL 数据的操作一致。
从 2.3.0.0 版本开始支持这种方式。
:::
**参数说明**
1.
COMMENT:表注释。可用于超级表、子表和普通表。
2.
WATERMARK:指定窗口的关闭时间,默认值为 5 秒,最小单位毫秒,范围为0到15分钟,多个以逗号分隔。只可用于超级表,且只有当数据库使用了RETENTIONS参数时,才可以使用此表参数。
3.
MAX_DELAY:用于控制推送计算结果的最大延迟,默认值为 interval 的值(但不能超过最大值),最小单位毫秒,范围为1毫秒到15分钟,多个以逗号分隔。注:不建议 MAX_DELAY 设置太小,否则会过于频繁的推送结果,影响存储和查询性能,如无特殊需求,取默认值即可。只可用于超级表,且只有当数据库使用了RETENTIONS参数时,才可以使用此表参数。
4.
ROLLUP:Rollup 指定的聚合函数,提供基于多层级的降采样聚合结果。只可用于超级表。只有当数据库使用了RETENTIONS参数时,才可以使用此表参数。作用于超级表除TS列外的其它所有列,但是只能定义一个聚合函数。 聚合函数支持 avg, sum, min, max, last, first。
5.
SMA:Small Materialized Aggregates,提供基于数据块的自定义预计算功能。预计算类型包括MAX、MIN和SUM。可用于超级表/普通表。
6.
TTL:Time to Live,是用户用来指定表的生命周期的参数。如果在持续的TTL时间内,都没有数据写入该表,则TDengine系统会自动删除该表。这个TTL的时间只是一个大概时间,我们系统不保证到了时间一定会将其删除,而只保证存在这样一个机制。TTL单位是天,默认为0,表示不限制。用户需要注意,TTL优先级高于KEEP,即TTL时间满足删除机制时,即使当前数据的存在时间小于KEEP,此表也会被删除。只可用于子表和普通表。
##
# 以超级表为模板创建数据
表
##
创建子
表
```
### 创建子表
```
sql
CREATE
TABLE
[
IF
NOT
EXISTS
]
tb_name
USING
stb_name
TAGS
(
tag_value1
,
...);
```
以指定的超级表为模板,指定 TAGS 的值来创建数据表。
### 以超级表为模板创建数据表,并指定具体的 TAGS 列
### 创建子表并指定标签的值
```
```
sql
CREATE
TABLE
[
IF
NOT
EXISTS
]
tb_name
USING
stb_name
(
tag_name1
,
...)
TAGS
(
tag_value1
,
...);
```
以指定的超级表为模板,指定一部分 TAGS 列的值来创建数据表(没被指定的 TAGS 列会设为空值)。
说明:从 2.0.17.0 版本开始支持这种方式。在之前的版本中,不允许指定 TAGS 列,而必须显式给出所有 TAGS 列的取值。
以指定的超级表为模板,也可以指定一部分 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
,
...)
...;
```
以更快的速度批量创建大量数据表(服务器端 2.0.14 及以上版本)
。
批量建表方式要求数据表必须以超级表为模板。 在不超出 SQL 语句长度限制的前提下,单条语句中的建表数量建议控制在 1000 ~ 3000 之间,将会获得比较理想的建表速度
。
:::info
## 修改普通表
1.
批量建表方式要求数据表必须以超级表为模板。 2.在不超出 SQL 语句长度限制的前提下,单条语句中的建表数量建议控制在 1000 ~ 3000 之间,将会获得比较理想的建表速度。
```
sql
ALTER
TABLE
[
db_name
.]
tb_name
alter_table_clause
:::
alter_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'
}
```
DROP TABLE [IF EXISTS] tb_name;
```
## 显示当前数据库下的所有数据表信息
**使用说明**
对普通表可以进行如下修改操作
1.
ADD COLUMN:添加列。
2.
DROP COLUMN:删除列。
3.
ODIFY COLUMN:修改列定义,如果数据列的类型是可变长类型,那么可以使用此指令修改其宽度,只能改大,不能改小。
4.
RENAME COLUMN:修改列名称。
### 增加列
```
sql
ALTER
TABLE
tb_name
ADD
COLUMN
field_name
data_type
;
```
SHOW TABLES [LIKE tb_name_wildchar];
```
显示当前数据库下的所有数据表信息。
### 删除列
```
sql
ALTER
TABLE
tb_name
DROP
COLUMN
field_name
;
```
##
显示一个数据表的创建语句
##
# 修改列宽
```
sql
ALTER
TABLE
tb_name
MODIFY
COLUMN
field_name
data_type
(
length
);
```
SHOW CREATE TABLE tb_name;
### 修改列名
```
sql
ALTER
TABLE
tb_name
RENAME
COLUMN
old_col_name
new_col_name
```
常用于数据库迁移。对一个已经存在的数据表,返回其创建语句;在另一个集群中执行该语句,就能得到一个结构完全相同的数据表。
## 修改子表
## 获取表的结构信息
ALTER TABLE [db_name.]tb_name alter_table_clause
```
DESCRIBE tb_name;
```
alter_table_clause: {
alter_table_options
| SET TAG tag_name = new_tag_value
}
alter_table_options:
alter_table_option ...
## 修改表定义
alter_table_option: {
TTL value
| COMMENT 'string_value'
}
### 表增加列
**使用说明**
1.
对子表的列和标签的修改,除了更改标签值以外,都要通过超级表才能进行。
### 修改子表标签值
```
ALTER TABLE tb_name
ADD COLUMN field_name data_typ
e;
ALTER TABLE tb_name
SET TAG tag_name=new_tag_valu
e;
```
:::info
## 删除表
1.
列的最大个数为 1024,最小个数为 2;(从 2.1.7.0 版本开始,改为最多允许 4096 列)
2.
列名最大长度为 64。
可以在一条SQL语句中删除一个或多个普通表或子表。
:::
```
sql
DROP
TABLE
[
IF
EXISTS
]
[
db_name
.]
tb_name
[,
[
IF
EXISTS
]
[
db_name
.]
tb_name
]
...
```
##
# 表删除列
##
查看表的信息
```
ALTER TABLE tb_name DROP COLUMN field_name;
```
### 显示所有表
如下SQL语句可以列出当前数据库中的所有表名。
如果表是通过超级表创建,更改表结构的操作只能对超级表进行。同时针对超级表的结构更改对所有通过该结构创建的表生效。对于不是通过超级表创建的表,可以直接修改表结构。
```
sql
SHOW
TABLES
[
LIKE
tb_name_wildchar
];
```
###
表修改列宽
###
显示表创建语句
```
ALTER TABLE tb_name MODIFY COLUMN field_name data_type(length)
;
SHOW CREATE TABLE tb_name
;
```
如果数据列的类型是可变长格式(BINARY 或 NCHAR),那么可以使用此指令修改其宽度(只能改大,不能改小)。(2.1.3.0 版本新增)
如果表是通过超级表创建,更改表结构的操作只能对超级表进行。同时针对超级表的结构更改对所有通过该结构创建的表生效。对于不是通过超级表创建的表,可以直接修改表结构。
常用于数据库迁移。对一个已经存在的数据表,返回其创建语句;在另一个集群中执行该语句,就能得到一个结构完全相同的数据表。
###
修改子表标签值
###
获取表结构信息
```
ALTER TABLE tb_name SET TAG tag_name=new_tag_valu
e;
DESCRIBE tb_nam
e;
```
\ No newline at end of file
如果表是通过超级表创建,可以使用此指令修改其标签值
docs/zh/12-taos-sql/04-stable.md
浏览文件 @
81e7ae0b
...
...
@@ -3,38 +3,31 @@ sidebar_label: 超级表管理
title
:
超级表 STable 管理
---
:::note
在 2.0.15.0 及以后的版本中开始支持 STABLE 保留字。也即,在本节后文的指令说明中,CREATE、DROP、ALTER 三个指令在 2.0.15.0 之前的版本中 STABLE 保留字需写作 TABLE。
:::
## 创建超级表
```
CREATE STABLE [IF NOT EXISTS] stb_name (timestamp_field_name TIMESTAMP, field1_name data_type1 [, field2_name data_type2 ...]) TAGS (tag1_name tag_type1, tag2_name tag_type2 [, tag3_name tag_type3]);
```
创建 STable,与创建表的 SQL 语法相似,但需要指定 TAGS 字段的名称和类型。
```
sql
CREATE
STABLE
[
IF
NOT
EXISTS
]
stb_name
(
create_definition
[,
create_definitionn
]
...)
TAGS
(
create_definition
[,
create_definition
]
...)
[
table_options
]
:::info
create_definition
:
col_name
column_definition
1.
TAGS 列的数据类型不能是 timestamp 类型;(从 2.1.3.0 版本开始,TAGS 列中支持使用 timestamp 类型,但需注意在 TAGS 中的 timestamp 列写入数据时需要提供给定值,而暂不支持四则运算,例如
`NOW + 10s`
这类表达式)
2.
TAGS 列名不能与其他列名相同;
3.
TAGS 列名不能为预留关键字(参见:
[
参数限制与保留关键字
](
/taos-sql/keywords/
)
章节);
4.
TAGS 最多允许 128 个,至少 1 个,总长度不超过 16 KB。
:::
## 删除超级表
```
DROP STABLE [IF EXISTS] stb_name;
column_definition
:
type_name
[
COMMENT
'string_value'
]
```
删除 STable 会自动删除通过 STable 创建的子表。
**使用说明**
-
超级表中列的最大个数为 4096,需要注意,这里的 4096 是包含 TAG 列在内的,最小个数为 3,包含一个时间戳主键、一个 TAG 列和一个数据列。
-
建表时可以给列或标签附加注释。
-
TAGS语法指定超级表的标签列,标签列需要遵循以下约定:
-
TAGS 中的 TIMESTAMP 列写入数据时需要提供给定值,而暂不支持四则运算,例如 NOW + 10s 这类表达式。
-
TAGS 列名不能与其他列名相同。
-
TAGS 列名不能为预留关键字。
-
TAGS 最多允许 128 个,至少 1 个,总长度不超过 16 KB。
-
关于表参数的详细说明,参见 CREATE TABLE 中的介绍。
## 显示当前数据库下的所有超级表信息
## 查看超级表
### 显示当前数据库下的所有超级表信息
```
SHOW STABLES [LIKE tb_name_wildcard];
...
...
@@ -42,7 +35,7 @@ SHOW STABLES [LIKE tb_name_wildcard];
查看数据库内全部 STable,及其相关信息,包括 STable 的名称、创建时间、列数量、标签(TAG)数量、通过该 STable 建表的数量。
## 显示一个超级表的创建语句
##
#
显示一个超级表的创建语句
```
SHOW CREATE STABLE stb_name;
...
...
@@ -50,40 +43,81 @@ SHOW CREATE STABLE stb_name;
常用于数据库迁移。对一个已经存在的超级表,返回其创建语句;在另一个集群中执行该语句,就能得到一个结构完全相同的超级表。
## 获取超级表的结构信息
##
#
获取超级表的结构信息
```
DESCRIBE stb_name;
```
## 修改超级表普通列
### 超级表增加列
## 删除超级表
```
ALTER STABLE stb_name ADD COLUMN field_name data_type;
DROP STABLE [IF EXISTS] [db_name.]stb_name
```
### 超级表删除列
删除 STable 会自动删除通过 STable 创建的子表以及子表中的所有数据。
## 修改超级表
```
sql
ALTER
STABLE
[
db_name
.]
tb_name
alter_table_clause
alter_table_clause
:
{
alter_table_options
|
ADD
COLUMN
col_name
column_type
|
DROP
COLUMN
col_name
|
MODIFY
COLUMN
col_name
column_type
|
ADD
TAG
tag_name
tag_type
|
DROP
TAG
tag_name
|
MODIFY
TAG
tag_name
tag_type
|
RENAME
TAG
old_tag_name
new_tag_name
}
alter_table_options
:
alter_table_option
...
alter_table_option
:
{
COMMENT
'string_value'
}
```
ALTER STABLE stb_name DROP COLUMN field_name;
**使用说明**
修改超级表的结构会对其下的所有子表生效。无法针对某个特定子表修改表结构。标签结构的修改需要对超级表下发,TDengine 会自动作用于此超级表的所有子表。
-
ADD COLUMN:添加列。
-
DROP COLUMN:删除列。
-
MODIFY COLUMN:修改列定义,如果数据列的类型是可变长类型,那么可以使用此指令修改其宽度,只能改大,不能改小。
-
ADD TAG:给超级表添加一个标签。
-
DROP TAG:删除超级表的一个标签。从超级表删除某个标签后,该超级表下的所有子表也会自动删除该标签。
-
MODIFY TAG:修改超级表的一个标签的定义。如果标签的类型是可变长类型,那么可以使用此指令修改其宽度,只能改大,不能改小。
-
RENAME TAG:修改超级表的一个标签的名称。从超级表修改某个标签名后,该超级表下的所有子表也会自动更新该标签名。
### 增加列
```
ALTER STABLE stb_name ADD COLUMN col_name column_type;
```
###
超级表修改列宽
###
删除列
```
ALTER STABLE stb_name
MODIFY COLUMN field_name data_type(length)
;
ALTER STABLE stb_name
DROP COLUMN col_name
;
```
如果数据列的类型是可变长格式(BINARY 或 NCHAR),那么可以使用此指令修改其宽度(只能改大,不能改小)。(2.1.3.0 版本新增)
### 修改列宽
```
ALTER STABLE stb_name MODIFY COLUMN col_name data_type(length);
```
## 修改超级表标签列
如果数据列的类型是可变长格式(BINARY 或 NCHAR),那么可以使用此指令修改其宽度(只能改大,不能改小)。
### 添加标签
```
ALTER STABLE stb_name ADD TAG
new_
tag_name tag_type;
ALTER STABLE stb_name ADD TAG tag_name tag_type;
```
为 STable 增加一个新的标签,并指定新标签的类型。标签总数不能超过 128 个,总长度不超过 16KB 。
...
...
@@ -99,7 +133,7 @@ ALTER STABLE stb_name DROP TAG tag_name;
### 修改标签名
```
ALTER STABLE stb_name
CHANG
E TAG old_tag_name new_tag_name;
ALTER STABLE stb_name
RENAM
E TAG old_tag_name new_tag_name;
```
修改超级表的标签名,从超级表修改某个标签名后,该超级表下的所有子表也会自动更新该标签名。
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录