CREATE TABLE(SQL 图形)

适用于: SQL Server 2017 (14.x) 及更高版本 Azure SQL 托管实例

NODEEDGE 表的形式创建新 SQL 图形表。

注意

有关标准 Transact-SQL 语句,请参阅 CREATE TABLE (Transact-SQL)

Transact-SQL 语法约定

语法

CREATE TABLE   
    { database_name.schema_name.table_name | schema_name.table_name | table_name }
    ( { <column_definition> } 
       | <computed_column_definition>
       | <column_set_definition>
       | [ <table_constraint> ] [ ,... n ]
       | [ <table_index> ] }
          [ ,...n ]
    )   
    AS [ NODE | EDGE ]
    [ ON { partition_scheme_name ( partition_column_name )
           | filegroup
           | "default" } ]
[ ; ] 

< table_constraint > ::=
[ CONSTRAINT constraint_name ]
{
    { PRIMARY KEY | UNIQUE }
        [ CLUSTERED | NONCLUSTERED ]
        (column [ ASC | DESC ] [ ,...n ] )
        [
            WITH FILLFACTOR = fillfactor
           |WITH ( <index_option> [ , ...n ] )
        ]
        [ ON { partition_scheme_name (partition_column_name)
            | filegroup | "default" } ]
    | FOREIGN KEY
        ( column [ ,...n ] )
        REFERENCES referenced_table_name [ ( ref_column [ ,...n ] ) ]
        [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
        [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]
        [ NOT FOR REPLICATION ]
    | CONNECTION
        ( { node_table TO node_table } 
          [ , {node_table TO node_table }]
          [ , ...n ]
        )
        [ ON DELETE { NO ACTION | CASCADE } ]
    | CHECK [ NOT FOR REPLICATION ] ( logical_expression )

注意

若要查看 SQL Server 2014 (12.x) 及更早版本的 Transact-SQL 语法,请参阅早期版本文档

参数

本文档仅列出与 SQL 图形相关的参数。 有关受支持参数的完整列表和说明,请参阅 CREATE TABLE (Transact-SQL)

database_name
要在其中创建表的数据库的名称。 database_name 须指定现有数据库的名称。 如果未指定,则 database_name 默认为当前数据库。 当前连接的登录名必须与 database_name 所指定数据库中的一个现有用户 ID 关联,并且该用户 ID 必须具有 CREATE TABLE 权限。

schema_name
新表所属架构的名称。

table_name
是节点或边界表的名称。 表名必须遵循有关标识符的规则。 除了本地临时表名(以单个数字符号 (#) 为前缀的名称)不能超过 116 个字符外,table_name 最多可包含 128 个字符。

NODE
创建节点表。

EDGE
创建边界表。

table_constraint
指定添加到表中的 PRIMARY KEY、UNIQUE、FOREIGN KEY、CONNECTION constraint、CHECK 约束或 DEFAULT 定义的属性。

注意

CONNECTION 约束仅适用于边缘表类型。

ON { partition_scheme | filegroup | "default" }
指定存储表的分区架构或文件组。 如果指定了 partition_scheme,则该表将成为已分区表,其分区存储在 partition_scheme 所指定的一个或多个文件组的集合中 。 如果指定了 filegroup,则该表将存储在已命名文件组中。 数据库中必须存在该文件组。 如果指定了 default,或者根本未指定 ON,则该表将存储在默认文件组中。 CREATE TABLE 中指定的表的存储机制以后不能进行更改。

ON {partition_scheme | filegroup | "default"}
也可在 PRIMARY KEY 约束或 UNIQUE 约束中指定。 这些约束会创建索引。 如果 filegroup 未指定,则索引会存储在已命名文件组中。 如果指定了 default,或者根本未指定 ON,则索引将与表存储在同一文件组中。 如果 PRIMARY KEY 约束或 UNIQUE 约束创建聚集索引,则表的数据页将与索引存储在同一文件组中。 如果指定了 CLUSTERED 或约束另外创建了聚集索引,并且指定的 partition_scheme 不同于表定义的 partition_scheme 或 filegroup,或反之,则只接受约束定义,而忽略其他定义。

备注

不支持以节点或边界表的形式创建临时表。

不支持以临时表的形式创建节点或边界表。

节点或边界表不支持延伸数据库。

重要

SQL Server 2022 (16.x) 和 Azure SQL 数据库中已弃用 Stretch Database。 在数据库引擎的未来版本中将删除此功能。 请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。

节点或边界表不能是外部表(PolyBase 不支持图形表)。

未分区的图节点/边界表不能更改为分区图节点/边界表。

示例

A. 创建 NODE

下面的示例演示如何创建 NODE

 CREATE TABLE Person (
        ID INTEGER PRIMARY KEY, 
        name VARCHAR(100), 
        email VARCHAR(100)
 ) AS NODE;

B. 创建 EDGE

下面的示例演示如何创建 EDGE

 CREATE TABLE friends (
    id INTEGER PRIMARY KEY,
    start_date DATe
 ) AS EDGE;
 -- Create a likes edge table, this table does not have any user defined attributes   
 CREATE TABLE likes AS EDGE;

下一个示例建模了一条规则,即只有用户可以和其他用户进行联结,这意味着此边界不允许引用除人员之外的任何节点。

/* Create friend edge table with CONSTRAINT, restricts for nodes and it direction */
CREATE TABLE dbo.FriendOf(
  CONSTRAINT cnt_Person_FriendOf_Person
    CONNECTION (dbo.Person TO dbo.Person) 
)AS EDGE;

另请参阅

ALTER TABLE table_constraint
ALTER TABLE (Transact-SQL)
INSERT(SQL 图形)]
使用 SQL Server 2017 进行图形处理