Source: https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/ddl/graph/create/ Documentation version: v5.3.2 # CREATE GRAPH `CREATE GRAPH`语句用于在当前会话中的 Schema 或指定 Schema 中创建持久图(简称图)。 执行该语句的用户即为新图的所有者。创建成功后,图的所有者可以执行[重命名](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/ddl/graph/rename/)或[销毁](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/ddl/graph/drop/)图等操作。图的所有权可以通过 [ALTER OWNER](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/alter-owner/) 转移给其他用户。 除了图之外,还支持[创建临时图](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/ddl/graph-projection/create/)。关于图与临时图的详细对比,请参见[图与临时图](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/overview/versus/)。 Note 对非默认 Schema 或其中的对象执行操作时,用户既要通过隐式访问规则或显式`USAGE`授权获得该 Schema 的访问权,也要具备目标操作所需的权限。Schema 访问校验和目标操作所需的权限校验相互独立,满足其中一项不能替代另一项。Schema 访问控制不适用于临时图、内置 Procedure 和内置 Function。更多信息,请参见 [Schema 访问控制](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/schema-access-control/)。 ## 前提条件 - 已创建图类型。更多信息,请参见 [CREATE GRAPH TYPE](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/ddl/graph-type/create/)。 - 若要创建图,必须具备在对应 Schema 执行`CREATE GRAPH`操作的权限。更多信息,请参见[角色与权限](https://dev-docs.yueshu.com.cn/v5.3.2/server-admin/authorization/)。 ## 语法 语法图源码 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](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/sessions/set/) 和 [SHOW CURRENT_SCHEMA](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/data-admin/show/show-current-schema/)。 ### `graph_name` 待创建的图的名称。`graph_name`必须是标识符。有关标识符的更多信息,请参见[标识符命名规则](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/overview/keywords-identifiers/#_3)。 ### `graph_type_name` 现有图类型的名称,新图将基于该图类型创建。更多信息,请参见 [CREATE GRAPH TYPE](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/ddl/graph-type/create/)。 新图的图元素(点和边)根据该图类型中定义的图元素类型(点类型和边类型)创建。 即使不同图中存在同名的图元素,它们也不是相同的实体。 ## 示例 ### 在当前 Schema 创建图 ```` CREATE GRAPH IF NOT EXISTS movie TYPED movie_type ```` 上述示例演示了如何基于图类型`movie_type`创建图`movie`,该图在[示例数据集](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/overview/example-dataset/)中亦有介绍。 ### 在指定 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`的图。 ## 更多信息 - [DESCRIBE GRAPH](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/data-admin/describe/describe-graph/) - [SHOW GRAPHS](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/data-admin/show/show-graphs/) - [SHOW CREATE GRAPH](https://dev-docs.yueshu.com.cn/v5.3.2/database-gql-reference/data-admin/show/show-create-graph/)