CREATE TABLE (SQL Graph)
適用於: SQL Server 2017 (14.x) 和更新版本 Azure SQL 受控執行個體
將新的 SQL 圖形資料表建立為 NODE
或 EDGE
資料表。
注意
針對標準 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 指定的資料庫中現有使用者識別碼有關聯,且這個使用者識別碼必須具有 CREATE TABLE 權限。
schema_name
這是新的資料表所屬的結構描述名稱。
table_name
節點或邊緣資料表的名稱。 資料表名稱必須遵照識別碼的規則。 table_name 最多可有 128 個字元,但本機暫存資料表名稱 (名稱前附加一個數字符號 (#)) 除外,其不可超過 116 個字元。
NODE
建立節點資料表。
EDGE
建立邊緣資料表。
table_constraint
指定 PRIMARY KEY、UNIQUE、FOREIGN KEY、CONNECTION 條件約束、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 不同 (反之亦然),則只會遵守條件約束定義,其他一概予以忽略。
備註
不支援建立暫存資料表作為節點或邊緣資料表。
不支援建立節點或邊緣資料表作為時態表。
針對節點或邊緣資料表,不支援 Stretch Database。
重要
Stretch Database 在 SQL Server 2022 (16.x) 及 Azure SQL 資料庫中已被取代。 資料庫引擎的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。
節點或邊緣資料表不可為外部資料表 (圖形資料表沒有 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;
下一個範例會模擬只有人可以成為其他人朋友的規則,這表示此邊緣不允許參考 Person 以外的任何其他節點。
/* 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 Graph)]
SQL Server 2017 的圖表處理