Merge pull request #15441 from taosdata/docs/wade-3.0

doc: SQL reference guide, grant and select
This commit is contained in:
wade zhang 2022-07-26 19:07:10 +08:00 committed by GitHub
commit 115963efc0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 94 additions and 33 deletions

View File

@ -175,7 +175,7 @@ SELECT COUNT(*) FROM (SELECT DISTINCT TBNAME FROM meters);
这三个伪列只能用于时间窗口的窗口切分查询之中,且要在窗口切分子句之后出现。
### \_c0/\_ROWTS
**\_c0/\_ROWTS**
TDengine 中,所有表的第一列都必须是时间戳类型,且为其主键,\_rowts 伪列和\_c0 伪列均代表了此列的值。相比实际的主键时间戳列,使用伪列更加灵活,语义也更加标准。例如,可以和 max\min 等函数一起使用。
@ -183,6 +183,21 @@ TDengine 中,所有表的第一列都必须是时间戳类型,且为其主
select _rowts, max(current) from meters;
```
## 查询对象
FROM 关键字后面可以是若干个表(超级表)列表,也可以是子查询的结果。
如果没有指定用户的当前数据库,可以在表名称之前使用数据库的名称来指定表所属的数据库。例如:`power.d1001` 方式来跨库使用表。
TDengine 支持基于时间戳主键的 INNER JOIN规则如下
1. 支持 FROM 表列表和显式的 JOIN 子句两种语法。
2. 对于普通表和子表ON 条件必须有且只有时间戳主键的等值条件。
3. 对于超级表ON 条件在时间戳主键的等值条件之外,还要求有可以一一对应的标签列等值条件,不支持 OR 条件。
4. 参与 JOIN 计算的表只能是同一种类型,即只能都是超级表,或都是子表,或都是普通表。
5. JOIN 两侧均支持子查询。
6. 参与 JOIN 的表个数上限为 10 个。
7. 不支持与 FILL 子句混合使用。
## GROUP BY
如果在语句中同时指定了 GROUP BY 子句,那么 SELECT 列表只能包含如下表达式:
@ -198,20 +213,6 @@ GROUP BY 子句中的表达式可以包含表或视图中的任何列,这些
该子句对行进行分组,但不保证结果集的顺序。若要对分组进行排序,请使用 ORDER BY 子句
## 查询对象
FROM 关键字后面可以是若干个表(超级表)列表,也可以是子查询的结果。
如果没有指定用户的当前数据库,可以在表名称之前使用数据库的名称来指定表所属的数据库。例如:`power.d1001` 方式来跨库使用表。
TDengine 支持基于时间戳主键的 INNER JOIN规则如下
1. 支持 FROM 表列表和显式的 JOIN 子句两种语法。
2. 对于普通表和子表ON 条件必须有且只有时间戳主键的等值条件。
3. 对于超级表ON 条件在时间戳主键的等值条件之外,还要求有可以一一对应的标签列等值条件,不支持 OR 条件。
4. 参与 JOIN 计算的表只能是同一种类型,即只能都是超级表,或都是子表,或都是普通表。
5. JOIN 两侧均支持子查询。
6. 参与 JOIN 的表个数上限为 10 个。
7. 不支持与 FILL 子句混合使用。
## PARTITON BY
@ -286,23 +287,6 @@ SELECT TODAY();
SELECT TIMEZONE();
```
## TAOS SQL 中特殊关键词
- `TBNAME` 在超级表查询中可视为一个特殊的标签,代表查询涉及的子表名
- `_c0`: 表示表(超级表)的第一列
获取一个超级表所有的子表名及相关的标签信息:
```sql
SELECT TBNAME, location FROM meters;
```
统计超级表下辖子表数量:
```sql
SELECT COUNT(*) FROM (SELECT DISTINCT TBNAMEFROM meters);
```
## 正则表达式过滤
### 语法
@ -394,7 +378,7 @@ UNION ALL SELECT ...
TDengine 支持 UNION ALL 操作符。也就是说,如果多个 SELECT 子句返回结果集的结构完全相同(列名、列类型、列数、顺序),那么可以通过 UNION ALL 把这些结果集合并到一起。目前只支持 UNION ALL 模式,也即在结果集的合并过程中是不去重的。在同一个 sql 语句中UNION ALL 最多支持 100 个。
### SQL 示例
## SQL 示例
对于下面的例子,表 tb1 用以下语句创建:

View File

@ -0,0 +1,77 @@
---
sidebar_label: 权限管理
title: 权限管理
---
本节讲述如何在 TDengine 中进行权限管理的相关操作。
## 创建用户
```sql
CREATE USER use_name PASS password;
```
创建用户。
use_name最长为23字节。
password最长为128字节合法字符包括"a-zA-Z0-9!?$%^&*()_+={[}]:;@~#|<,>.?/",不可以出现单双引号、撇号、反斜杠和空格,且不可以为空。
## 删除用户
```sql
DROP USER user_name;
```
## 授权
```sql
GRANT privileges ON priv_level TO user_name
privileges : {
ALL
| priv_type [, priv_type] ...
}
priv_type : {
READ
| WRITE
}
priv_level : {
dbname.*
| *.*
}
```
对用户授权。
授权级别支持到DATABASE权限有READ和WRITE两种。
TDengine 有超级用户和普通用户两类用户。超级用户缺省创建为root拥有所有权限。使用超级用户创建出来的用户为普通用户。在未授权的情况下普通用户可以创建DATABASE并拥有自己创建的DATABASE的所有权限包括删除数据库、修改数据库、查询时序数据和写入时序数据。超级用户可以给普通用户授予其他DATABASE的读写权限使其可以在此DATABASE上读写数据但不能对其进行删除和修改数据库的操作。
对于非DATABASE的对象如USER、DNODE、UDF、QNODE等普通用户只有读权限一般为SHOW命令不能创建和修改。
## 撤销授权
```sql
REVOKE privileges ON priv_level FROM user_name
privileges : {
ALL
| priv_type [, priv_type] ...
}
priv_type : {
READ
| WRITE
}
priv_level : {
dbname.*
| *.*
}
```
收回对用户的授权。