Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Whitespace for ngql schema #1254

Merged
merged 2 commits into from
Nov 24, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 23 additions & 23 deletions docs-2.0/3.ngql-guide/10.tag-statements/1.create-tag.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,21 @@
# CREATE TAG

`CREATE TAG`语句可以通过指定名称创建一个Tag
`CREATE TAG`语句可以通过指定名称创建一个 Tag

## OpenCypher兼容性
## OpenCypher 兼容性

nGQL中的Tag和openCypher中的Label相似,但又有所不同,例如它们的创建方式。
nGQL 中的 Tag 和 openCypher 中的 Label 相似,但又有所不同,例如它们的创建方式。

* openCypher中的Label需要在`CREATE`语句中与点一起创建。
* nGQL中的Tag需要使用`CREATE TAG`语句独立创建。Tag更像是MySQL中的表
* openCypher 中的 Label 需要在`CREATE`语句中与点一起创建。
* nGQL 中的 Tag 需要使用`CREATE TAG`语句独立创建。Tag 更像是 MySQL 中的表

## 前提条件

执行`CREATE TAG`语句需要当前登录的用户拥有指定图空间的[创建Tag权限](../../7.data-security/1.authentication/3.role-list.md),否则会报错。
执行`CREATE TAG`语句需要当前登录的用户拥有指定图空间的 [创建 Tag 权限](../../7.data-security/1.authentication/3.role-list.md),否则会报错。

## 语法

创建Tag前,需要先用`USE`语句指定工作空间。
创建 Tag 前,需要先用`USE`语句指定工作空间。

```ngql
CREATE TAG [IF NOT EXISTS] <tag_name>
Expand All @@ -30,41 +30,41 @@ CREATE TAG [IF NOT EXISTS] <tag_name>

|参数|说明|
|:---|:---|
|`IF NOT EXISTS`|检测待创建的Tag是否存在,只有不存在时,才会创建Tag。仅检测Tag的名称,不会检测具体属性。|
|`<tag_name>`|每个图空间内的Tag必须是唯一的。Tag名称设置后无法修改。Tag名称由大小写英文字母、数字或下划线组成,区分大写小,且不可使用[关键字和保留字](../../3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md)。|
|`<prop_name>`|属性名称。每个Tag中的属性名称必须唯一。属性的命名规则与Tag相同。|
|`<data_type>`|属性的数据类型,目前支持[数值](../3.data-types/1.numeric.md)、[布尔](../3.data-types/2.boolean.md)、[字符串](../3.data-types/3.string.md)以及[日期与时间](../3.data-types/4.date-and-time.md)。|
|`IF NOT EXISTS`|检测待创建的 Tag 是否存在,只有不存在时,才会创建 Tag。仅检测 Tag 的名称,不会检测具体属性。|
|`<tag_name>`|每个图空间内的 Tag 必须是唯一的。Tag 名称设置后无法修改。Tag 名称由大小写英文字母、数字或下划线组成,区分大写小,且不可使用 [关键字和保留字](../../3.ngql-guide/1.nGQL-overview/keywords-and-reserved-words.md)。|
|`<prop_name>`|属性名称。每个 Tag 中的属性名称必须唯一。属性的命名规则与 Tag 相同。|
|`<data_type>`|属性的数据类型,目前支持 [数值](../3.data-types/1.numeric.md)、[布尔](../3.data-types/2.boolean.md)、[字符串](../3.data-types/3.string.md) 以及 [日期与时间](../3.data-types/4.date-and-time.md)。|
|`NULL \| NOT NULL`|指定属性值是否支持为`NULL`。默认值为`NULL`。|
|`DEFAULT`|指定属性的默认值。默认值可以是一个文字值或Nebula Graph支持的表达式。如果插入点时没有指定某个属性的值,则使用默认值。|
|`COMMENT`|对单个属性或Tag的描述。最大为256字节。默认无描述。|
|`DEFAULT`|指定属性的默认值。默认值可以是一个文字值或 Nebula Graph 支持的表达式。如果插入点时没有指定某个属性的值,则使用默认值。|
|`COMMENT`|对单个属性或 Tag 的描述。最大为 256 字节。默认无描述。|
|`TTL_DURATION`|指定属性存活时间。超时的属性将会过期。属性值和时间戳差值之和如果小于当前时间戳,属性就会过期。默认值为`0`,表示属性永不过期。|
|`TTL_COL`|指定要设置存活时间的属性。属性的数据类型必须是`int`或者`timestamp`。一个Tag只能指定一个字段为`TTL_COL`。更多TTL的信息请参见[TTL](../8.clauses-and-options/ttl-options.md)。|
|`TTL_COL`|指定要设置存活时间的属性。属性的数据类型必须是`int`或者`timestamp`。一个 Tag 只能指定一个字段为`TTL_COL`。更多 TTL 的信息请参见 [TTL](../8.clauses-and-options/ttl-options.md)。|

## 示例

```ngql
nebula> CREATE TAG IF NOT EXISTS player(name string, age int);

# 创建没有属性的Tag
# 创建没有属性的 Tag
nebula> CREATE TAG IF NOT EXISTS no_property(); 

# 创建包含默认值的Tag
# 创建包含默认值的 Tag
nebula> CREATE TAG IF NOT EXISTS player_with_default(name string, age int DEFAULT 20);

# 对字段create_time设置TTL为100秒
# 对字段 create_time 设置 TTL 为 100 秒
nebula> CREATE TAG IF NOT EXISTS woman(name string, age int, \
married bool, salary double, create_time timestamp) \
TTL_DURATION = 100, TTL_COL = "create_time";
```

## 创建Tag说明
## 创建 Tag 说明

尝试使用新创建的Tag可能会失败,因为创建是异步实现的。
尝试使用新创建的 Tag 可能会失败,因为创建是异步实现的。

Nebula Graph将在下一个心跳周期内完成Tag的创建,为了确保创建成功,可以使用如下方法之一:
Nebula Graph 将在下一个心跳周期内完成 Tag 的创建,为了确保创建成功,可以使用如下方法之一:

- 在[`SHOW TAGS`](4.show-tags.md)语句的结果中查找新的Tag,如果找不到,请等待几秒重试。
- 在 [`SHOW TAGS`](4.show-tags.md) 语句的结果中查找新的 Tag,如果找不到,请等待几秒重试。

- 等待两个心跳周期,例如20秒
- 等待两个心跳周期,例如 20 秒

如果需要修改心跳间隔,请为[所有配置文件](../../5.configurations-and-logs/1.configurations/1.configurations.md)修改参数`heartbeat_interval_secs`。
如果需要修改心跳间隔,请为 [所有配置文件](../../5.configurations-and-logs/1.configurations/1.configurations.md) 修改参数`heartbeat_interval_secs`。
18 changes: 9 additions & 9 deletions docs-2.0/3.ngql-guide/10.tag-statements/2.drop-tag.md
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
# DROP TAG

`DROP TAG`语句可以删除当前工作空间内所有点上的指定Tag
`DROP TAG`语句可以删除当前工作空间内所有点上的指定 Tag

点可以有一个或多个Tag
点可以有一个或多个 Tag

- 如果某个点只有一个Tag,删除这个Tag后,用户就**无法访问**这个点,下次Compaction操作时会删除该点,但点上的边仍然存在。
- 如果某个点只有一个 Tag,删除这个 Tag 后,用户就**无法访问**这个点,下次 Compaction 操作时会删除该点,但点上的边仍然存在。

- 如果某个点有多个Tag,删除其中一个Tag,仍然可以访问这个点,但是**无法访问**已删除Tag所定义的所有属性
- 如果某个点有多个 Tag,删除其中一个 Tag,仍然可以访问这个点,但是**无法访问**已删除 Tag 所定义的所有属性

删除Tag操作仅删除Schema数据,硬盘上的文件或目录不会立刻删除,而是在下一次Compaction操作时删除
删除 Tag 操作仅删除 Schema 数据,硬盘上的文件或目录不会立刻删除,而是在下一次 Compaction 操作时删除

## 前提条件

- 登录的用户必须拥有对应权限才能执行`DROP TAG`语句。详情请参见[内置角色权限](../../7.data-security/1.authentication/3.role-list.md)。
- 登录的用户必须拥有对应权限才能执行`DROP TAG`语句。详情请参见 [内置角色权限](../../7.data-security/1.authentication/3.role-list.md)。

- 确保Tag不包含任何索引,否则`DROP TAG`时会报冲突错误`[ERROR (-8)]: Conflict!`。删除索引请参见[drop index](../14.native-index-statements/6.drop-native-index.md)。
- 确保 Tag 不包含任何索引,否则`DROP TAG`时会报冲突错误`[ERROR (-8)]: Conflict!`。删除索引请参见 [drop index](../14.native-index-statements/6.drop-native-index.md)。

## 语法

```ngql
DROP TAG [IF EXISTS] <tag_name>;
```

- `IF EXISTS`:检测待删除的Tag是否存在,只有存在时,才会删除Tag
- `IF EXISTS`:检测待删除的 Tag 是否存在,只有存在时,才会删除 Tag

- `tag_name`:指定要删除的Tag名称。一次只能删除一个Tag
- `tag_name`:指定要删除的 Tag 名称。一次只能删除一个 Tag

## 示例

Expand Down
20 changes: 10 additions & 10 deletions docs-2.0/3.ngql-guide/10.tag-statements/3.alter-tag.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# ALTER TAG

`ALTER TAG`语句可以修改Tag的结构。例如增删属性、修改数据类型,也可以为属性设置、修改[TTL](../8.clauses-and-options/ttl-options.md)(Time-To-Live)。
`ALTER TAG`语句可以修改 Tag 的结构。例如增删属性、修改数据类型,也可以为属性设置、修改 [TTL](../8.clauses-and-options/ttl-options.md)(Time-To-Live)。

## 前提条件

- 登录的用户必须拥有对应权限才能执行`ALTER TAG`语句。详情请参见[内置角色权限](../../7.data-security/1.authentication/3.role-list.md)。
- 登录的用户必须拥有对应权限才能执行`ALTER TAG`语句。详情请参见 [内置角色权限](../../7.data-security/1.authentication/3.role-list.md)。

- 确保要修改的属性不包含索引,否则`ALTER TAG`时会报冲突错误`[ERROR (-8)]: Conflict!`。删除索引请参见[drop index](../14.native-index-statements/6.drop-native-index.md)。
- 确保要修改的属性不包含索引,否则`ALTER TAG`时会报冲突错误`[ERROR (-8)]: Conflict!`。删除索引请参见 [drop index](../14.native-index-statements/6.drop-native-index.md)。

## 语法

Expand All @@ -25,7 +25,7 @@ ttl_definition:
TTL_DURATION = ttl_duration, TTL_COL = prop_name
```

- `tag_name`:指定要修改的Tag名称。一次只能修改一个Tag。请确保要修改的Tag在当前工作空间中存在,否则会报错。
- `tag_name`:指定要修改的 Tag 名称。一次只能修改一个 Tag。请确保要修改的 Tag 在当前工作空间中存在,否则会报错。

- 可以在一个`ALTER TAG`语句中使用多个`ADD`、`DROP`和`CHANGE`子句,子句之间用英文逗号(,)分隔。

Expand All @@ -38,14 +38,14 @@ nebula> ALTER TAG t1 TTL_DURATION = 2, TTL_COL = "p2";
nebula> ALTER TAG t1 COMMENT = 'test1';
```

## 修改Tag说明
## 修改 Tag 说明

尝试使用刚修改的Tag可能会失败,因为修改是异步实现的。
尝试使用刚修改的 Tag 可能会失败,因为修改是异步实现的。

Nebula Graph将在下一个心跳周期内完成Tag的修改,为了确保修改成功,可以使用如下方法之一:
Nebula Graph 将在下一个心跳周期内完成 Tag 的修改,为了确保修改成功,可以使用如下方法之一:

- 在[`DESCRIBE TAG`](5.describe-tag.md)语句的结果中查看Tag信息,确认修改成功。如果没有修改成功,请等待几秒重试。
- 在 [`DESCRIBE TAG`](5.describe-tag.md) 语句的结果中查看 Tag 信息,确认修改成功。如果没有修改成功,请等待几秒重试。

- 等待两个心跳周期,例如20秒
- 等待两个心跳周期,例如 20 秒

如果需要修改心跳间隔,请为[所有配置文件](../../5.configurations-and-logs/1.configurations/1.configurations.md)修改参数`heartbeat_interval_secs`。
如果需要修改心跳间隔,请为 [所有配置文件](../../5.configurations-and-logs/1.configurations/1.configurations.md) 修改参数`heartbeat_interval_secs`。
4 changes: 2 additions & 2 deletions docs-2.0/3.ngql-guide/10.tag-statements/4.show-tags.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# SHOW TAGS

`SHOW TAGS`语句显示当前图空间内的所有Tag名称
`SHOW TAGS`语句显示当前图空间内的所有 Tag 名称

执行`SHOW TAGS`语句不需要任何权限,但是返回结果由登录的用户[权限](../../7.data-security/1.authentication/3.role-list.md)决定。
执行`SHOW TAGS`语句不需要任何权限,但是返回结果由登录的用户 [权限](../../7.data-security/1.authentication/3.role-list.md) 决定。

## 语法

Expand Down
4 changes: 2 additions & 2 deletions docs-2.0/3.ngql-guide/10.tag-statements/5.describe-tag.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# DESCRIBE TAG

`DESCRIBE TAG`显示指定Tag的详细信息,例如字段名称、数据类型等。
`DESCRIBE TAG`显示指定 Tag 的详细信息,例如字段名称、数据类型等。

## 前提条件

登录的用户必须拥有对应权限才能执行`DESCRIBE TAG`语句。详情请参见[内置角色权限](../../7.data-security/1.authentication/3.role-list.md)。
登录的用户必须拥有对应权限才能执行`DESCRIBE TAG`语句。详情请参见 [内置角色权限](../../7.data-security/1.authentication/3.role-list.md)。

## 语法

Expand Down
16 changes: 7 additions & 9 deletions docs-2.0/3.ngql-guide/10.tag-statements/6.delete-tag.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
# DELETE TAG

`DELETE TAG`语句可以删除指定点上的指定Tag
`DELETE TAG`语句可以删除指定点上的指定 Tag

点可以有一个或多个Tag
点可以有一个或多个 Tag

- 如果某个点只有一个Tag,删除这个点上的Tag后,用户就**无法访问**这个点,下次Compaction操作时会删除该点,但点上的边仍然存在。
- 如果某个点只有一个 Tag,删除这个点上的 Tag 后,用户就**无法访问**这个点,下次 Compaction 操作时会删除该点,但点上的边仍然存在。

- 如果某个点有多个Tag,删除其中一个Tag,仍然可以访问这个点,但是**无法访问**这个点上已删除Tag所定义的所有属性
- 如果某个点有多个 Tag,删除其中一个 Tag,仍然可以访问这个点,但是**无法访问**这个点上已删除 Tag 所定义的所有属性

## 前提条件

登录的用户必须拥有对应权限才能执行`DELETE TAG`语句。详情请参见[内置角色权限](../../7.data-security/1.authentication/3.role-list.md)。
登录的用户必须拥有对应权限才能执行`DELETE TAG`语句。详情请参见 [内置角色权限](../../7.data-security/1.authentication/3.role-list.md)。

## 语法

```ngql
DELETE TAG <tag_name_list> FROM <VID>;
```

- `tag_name_list`:指定Tag名称。多个Tag用英文逗号(,)分隔,也可以用`*`表示所有Tag
- `tag_name_list`:指定 Tag 名称。多个 Tag 用英文逗号(,)分隔,也可以用`*`表示所有 Tag

- `VID`:指定要删除Tag的点ID
- `VID`:指定要删除 Tag 的点 ID

## 示例

Expand Down Expand Up @@ -48,10 +48,8 @@ nebula> FETCH PROP ON * "test";
+-----------+
| vertices_ |
+-----------+
+-----------+
```


!!! Compatibility

* 在 openCypher 中,可以使用 `REMOVE v:LABEL` 语句来移除该点 `v` 的 `LABEL`。
Expand Down
Original file line number Diff line number Diff line change
@@ -1,23 +1,23 @@
# 增加和删除标签

在openCypher中,有增加标签(`SET label`)和移除标签(`REMOVE label`)的功能,可以用于加速查询或者标记过程。
在 openCypher 中,有增加标签(`SET label`)和移除标签(`REMOVE label`)的功能,可以用于加速查询或者标记过程。

在Nebula Graph中,可以通过Tag变相实现相同操作,创建Tag并将Tag插入到已有的点上,就可以根据Tag名称快速查找点,也可以通过`DELETE TAG`删除某些点上不再需要的Tag
在 Nebula Graph 中,可以通过 Tag 变相实现相同操作,创建 Tag 并将 Tag 插入到已有的点上,就可以根据 Tag 名称快速查找点,也可以通过`DELETE TAG`删除某些点上不再需要的 Tag

!!! caution

请确保点上已经有另一个Tag,否则删除点上最后一个Tag时,会导致点也被删除。
请确保点上已经有另一个 Tag,否则删除点上最后一个 Tag 时,会导致点也被删除。

## 示例

例如在basketballplayer数据集中,部分篮球运动员同时也是球队股东,可以为股东Tag`shareholder`创建索引,方便快速查找。如果不再是股东,可以通过`DELETE TAG`语句删除相应运动员的股东Tag
例如在 basketballplayer 数据集中,部分篮球运动员同时也是球队股东,可以为股东 Tag`shareholder`创建索引,方便快速查找。如果不再是股东,可以通过`DELETE TAG`语句删除相应运动员的股东 Tag

```ngql
//创建股东Tag和索引
//创建股东 Tag 和索引
nebula> CREATE TAG IF NOT EXISTS shareholder();
nebula> CREATE TAG INDEX IF NOT EXISTS shareholder_tag on shareholder();

//为点添加Tag
//为点添加 Tag
nebula> INSERT VERTEX shareholder() VALUES "player100":();
nebula> INSERT VERTEX shareholder() VALUES "player101":();

Expand All @@ -37,7 +37,7 @@ nebula> LOOKUP ON shareholder;
| "player101" |
+-------------+

//如果player100不再是股东
//如果 player100 不再是股东
nebula> DELETE TAG shareholder FROM "player100";
nebula> LOOKUP ON shareholder;
+-------------+
Expand Down
Loading