Skip to main content
Version: 3.10.0

CREATE TAG

CREATE TAG creates a tag with the given name in a graph space.

OpenCypher compatibility​

Tags in nGQL are similar to labels in openCypher. But they are also quite different. For example, the ways to create them are different.

  • In openCypher, labels are created together with vertices in CREATE statements.
  • In nGQL, tags are created separately using CREATE TAG statements. Tags in nGQL are more like tables in MySQL.

Prerequisites​

Running the CREATE TAG statement requires some privileges for the graph space. Otherwise, NebulaGraph throws an error.

Syntax​

To create a tag in a specific graph space, you must specify the current working space with the USE statement.

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>'];
ParameterDescription
IF NOT EXISTSDetects if the tag that you want to create exists. If it does not exist, a new one will be created. The tag existence detection here only compares the tag names (excluding properties).
<tag_name>1. Each tag name in the graph space must be unique.
2. Tag names cannot be modified after they are set.
3. By default, the name only supports 1-4 byte UTF-8 encoded characters, including English letters (case sensitive), numbers, Chinese characters, etc. However, it cannot include special characters other than the underscore (_), and cannot start with a number.
4. To use special characters, reserved keywords, or start with a number, quote the entire name with backticks (`) and do not include periods (.) within the pair of backticks (`). For more information, see Keywords and reserved words.
Note:
1. If you name a tag in Chinese and encounter a SyntaxError, you need to quote the Chinese characters with backticks (`).
2. To include a backtick (`) in a tag name, use a backslash to escape the backtick, such as \`; to include a backslash, the backslash itself also needs to be escaped, such as \\ .
<prop_name>The name of the property. It must be unique for each tag. The rules for permitted property names are the same as those for tag names.
<data_type>The data type of the property. The following data types are supported: Numeric, Boolean, String, Date and time, and Geography.
`NULLNOT NULL`
DEFAULTSpecifies a default value for a property. The default value can be a literal value or an expression supported by NebulaGraph. If no value is specified, the default value is used when inserting a new vertex.
COMMENTThe remarks of a certain property or the tag itself. The maximum length is 256 bytes. By default, there will be no comments on a tag.
TTL_DURATIONSpecifies the life cycle for the property. The property that exceeds the specified TTL expires. The expiration threshold is the TTL_COL value plus the TTL_DURATION. The default value of TTL_DURATION is 0. It means the data never expires.
TTL_COLSpecifies the property to set a timeout on. The data type of the property must be int or timestamp. A tag can only specify one field as TTL_COL. For more information on TTL, see TTL options.

Examples​

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

# The following example creates a tag with no properties.
nebula> CREATE TAG IF NOT EXISTS no_property(); 

# The following example creates a tag with a default value.
nebula> CREATE TAG IF NOT EXISTS player_with_default(name string, age int DEFAULT 20);

# In the following example, the TTL of the create_time field is set to be 100 seconds.
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";

Implementation of the operation​

Trying to use a newly created tag may fail because the creation of the tag is implemented asynchronously. To make sure the follow-up operations work as expected, Wait for two heartbeat cycles, i.e., 20 seconds.

To change the heartbeat interval, modify the heartbeat_interval_secs parameter in the configuration files for all services.