CREATE TAG¶
CREATE TAG
语句可以通过指定名称创建一个 Tag。
OpenCypher 兼容性¶
nGQL 中的 Tag 和 openCypher 中的 Label 相似,但又有所不同,例如它们的创建方式。
- openCypher 中的 Label 需要在
CREATE
语句中与点一起创建。 - nGQL 中的 Tag 需要使用
CREATE TAG
语句独立创建。Tag 更像是 MySQL 中的表。
前提条件¶
执行CREATE TAG
语句需要当前登录的用户拥有指定图空间的创建 Tag 权限,否则会报错。
语法¶
创建 Tag 前,需要先用USE
语句指定工作空间。
CREATE TAG [IF NOT EXISTS] <tag_name>
(
<prop_name> <data_type> [NULL | NOT NULL] [DEFAULT <default_value>] [COMMENT '<comment>']
[{, <prop_name> <data_type> [NULL | NOT NULL] [DEFAULT <default_value>] [COMMENT '<comment>']} ...]
)
[TTL_DURATION = <ttl_duration>]
[TTL_COL = <prop_name>]
[COMMENT = '<comment>'];
参数 | 说明 |
---|---|
IF NOT EXISTS |
检测待创建的 Tag 是否存在,只有不存在时,才会创建 Tag。仅检测 Tag 的名称,不会检测具体属性。 |
<tag_name> |
1、每个图空间内的 Tag 必须是唯一的。 2、Tag 名称设置后无法修改。 3、默认情况下,仅支持 1~4 字节的 UTF-8 编码字符,包括英文字母(区分大小写)、数字、中文等。不能包含下划线(_)以外的特殊字符,且不能以数字开头。 4、如果需要使用特殊字符、保留关键字或者以数字开头,请使用反引号(`)包围整个名称。反引号中不能包含英文句号( . )。详情参见关键字和保留字。注意: 1、如果以中文命名 Tag,报 SyntaxError 错误时,需使用反引号(`)包围中文字符。2、名称中如需包含反引号(`),使用反斜杠(\)来转义反引号(`),如:\`;如需包含反斜杠(\),反斜杠(\)本身也需转义,如:\\。 |
<prop_name> |
属性名称。每个 Tag 中的属性名称必须唯一。属性的命名规则与 Tag 相同。 |
<data_type> |
属性的数据类型,目前支持数值、布尔、字符串、日期与时间以及地理空间。 |
NULL | NOT NULL |
指定属性值是否支持为NULL 。默认值为NULL 。指定NOT NULL 且没有指定DEFAULT 值时,插入数据必须指定值;同时指定NOT NULL 和DEFAULT 值时,插入数据如果没有指定值,则默认插入DEFAULT 值。 |
DEFAULT |
指定属性的默认值。默认值可以是一个文字值或 NebulaGraph 支持的表达式。如果插入点时没有指定某个属性的值,则使用默认值。 |
COMMENT |
对单个属性或 Tag 的描述。最大为 256 字节。默认无描述。 |
TTL_DURATION |
指定时间戳差值,单位:秒。时间戳差值必须为 64 位非负整数。属性值和时间戳差值之和如果小于当前时间戳,属性就会过期。默认值为0 ,表示属性永不过期。 |
TTL_COL |
指定要设置存活时间的属性。属性的数据类型必须是int 或者timestamp 。一个 Tag 只能指定一个字段为TTL_COL 。更多 TTL 的信息请参见 TTL。 |
示例¶
nebula> CREATE TAG IF NOT EXISTS player(name string, age int);
# 创建没有属性的 Tag。
nebula> CREATE TAG IF NOT EXISTS no_property();
# 创建包含默认值的 Tag。
nebula> CREATE TAG IF NOT EXISTS player_with_default(name string, age int DEFAULT 20);
# 对字段 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 可能会失败,因为创建是异步实现的。为确保数据同步,后续操作能顺利进行,请等待 2 个心跳周期(20 秒)。
如果需要修改心跳间隔,请为所有配置文件修改参数heartbeat_interval_secs
。
最后更新:
September 6, 2024