CREATE GRAPH¶
CREATE GRAPH语句用于在当前会话中的 Schema 或指定 Schema 中创建持久图(简称图)。
执行该语句的用户即为新图的所有者。创建成功后,图的所有者可以执行重命名或销毁图等操作。图的所有权可以通过 ALTER OWNER 转移给其他用户。
除了图之外,还支持创建临时图。关于图与临时图的详细对比,请参见图与临时图。
Note
对非默认 Schema 或其中的对象执行操作时,用户既要通过隐式访问规则或显式USAGE授权获得该 Schema 的访问权,也要具备目标操作所需的权限。Schema 访问校验和目标操作所需的权限校验相互独立,满足其中一项不能替代另一项。Schema 访问控制不适用于临时图、内置 Procedure 和内置 Function。更多信息,请参见 Schema 访问控制。
前提条件¶
- 已创建图类型。更多信息,请参见 CREATE GRAPH TYPE。
- 若要创建图,必须具备在对应 Schema 执行
CREATE GRAPH操作的权限。更多信息,请参见角色与权限。
语法¶
- create_graph_statement
create_graph_statement ::=
'CREATE' 'PROPERTY'? 'GRAPH' ('IF NOT EXISTS')? (schema_reference '/')? graph_name ('::' | 'TYPED' )? (schema_reference '/')? graph_type_name
参数¶
IF NOT EXISTS¶
该子句会检查是否已经存在同名的图。如果已经存在,则不会创建图,也不会抛出异常。
若不指定该子句,且同名的图已存在,则会抛出异常。
schema_reference¶
所引用的 Schema 路径。
此语句中两处schema_reference分别为待创建的图所在的 Schema 路径和所引用的图类型所在的 Schema 路径。两处 Schema 路径必须要保持一致。
绝对路径或相对路径均可在语句中使用。如果指定了 Schema 路径,将在指定的 Schema 中创建图;否则,将在当前会话的 Schema 中创建图。基于图类型创建图之前,需确保该图类型已存在。关于设置和查看 Schema 的更多信息,请参见 SESSION SET 和 SHOW CURRENT_SCHEMA。
graph_name¶
待创建的图的名称。graph_name必须是标识符。有关标识符的更多信息,请参见标识符命名规则。
graph_type_name¶
现有图类型的名称,新图将基于该图类型创建。更多信息,请参见 CREATE GRAPH TYPE。
新图的图元素(点和边)根据该图类型中定义的图元素类型(点类型和边类型)创建。
即使不同图中存在同名的图元素,它们也不是相同的实体。
示例¶
在当前 Schema 创建图¶
CREATE GRAPH IF NOT EXISTS movie TYPED movie_type
上述示例演示了如何基于图类型movie_type创建图movie,该图在示例数据集中亦有介绍。
在指定 Schema 创建图¶
'''
// 创建 Schema
CREATE SCHEMA IF NOT EXISTS /my_schema
'''
'''
// 为当前会话设置 Schema
SESSION SET SCHEMA /my_schema
'''
'''
// 创建图类型至指定 Schema
CREATE GRAPH TYPE IF NOT EXISTS /default_schema/my_graph_type AS { NODE Person (LABEL Person {id INT64 PRIMARY KEY, name STRING}) }
'''
'''
// 创建图
CREATE GRAPH IF NOT EXISTS /default_schema/my_graph TYPED /default_schema/my_graph_type
'''
上述示例在当前会话中的 Schema 为/my_schema的情况下,在/default_schema中基于my_graph_type创建了一个名为my_graph的图。