CREATE TABLE(SQL 图形)
适用于: SQL Server 2017 (14.x) 及更高版本 Azure SQL 托管实例
以 NODE
或 EDGE
表的形式创建新 SQL 图形表。
注意
有关标准 Transact-SQL 语句,请参阅 CREATE TABLE (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 图形相关的参数。 有关受支持参数的完整列表和说明,请参阅 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 进行图形处理