CREATE TABLE (SQL Graph)
適用対象: SQL Server 2017 (14.x) 以降 Azure SQL Managed Instance
NODE
または EDGE
テーブルで新しい SQL グラフ テーブルを作成します。
Note
標準の 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 文字までしか使用できないローカル一時テーブル名 (名前の先頭に 1 つの番号記号 (#) が付加されます) を除き、table_name には、最大 128 文字を使用できます。
NODE
ノード テーブルを作成します。
EDGE
エッジ テーブルを作成します。
table_constraint
テーブルに追加される PRIMARY KEY、UNIQUE、FOREIGN KEY、CONNECTION 制約、CHECK 制約、または DEFAULT 定義のプロパティを指定します。
Note
CONNECTION 制約は、エッジ テーブル型にのみ適用されます。
ON { partition_scheme | filegroup | "default" }
テーブルが格納されるパーティション構成またはファイル グループを指定します。 partition_scheme を指定すると、テーブルはパーティション テーブルとなり、各パーティションは partition_scheme で指定した 1 つ以上のファイル グループに格納されます。 filegroup を指定すると、テーブルは指定されたファイル グループに格納されます。 ファイル グループがデータベース内に存在している必要があります。 "default" を指定するか、ON をまったく指定しないと、テーブルは既定のファイル グループに格納されます。 CREATE TABLE で指定したテーブルの格納方法を後から変更することはできません。
ON {partition_scheme | filegroup | "default"}
PRIMARY KEY 制約または UNIQUE 制約でも指定できます。 これらの制約はインデックスを作成します。 filegroup を指定すると、インデックスは指定されたファイル グループに格納されます。 "default" を指定するか、ON を指定しなかった場合、インデックスはテーブルと同じファイル グループに格納されます。 PRIMARY KEY または UNIQUE 制約によりクラスター化インデックスが作成される場合、テーブルのデータ ページはインデックスと同じファイル グループに格納されます。 CLUSTERED を指定するか、制約によりクラスター化インデックスを作成し、テーブル定義の partition_scheme または filegroup とは異なる partition_scheme (またはその逆) を指定すると、制約定義だけが優先され、それ以外は無視されます。
解説
一時テーブルをノード テーブルまたはエッジ テーブルとして作成することはできません。
ノード テーブルまたはエッジ テーブルをテンポラル テーブルとして作成することはできません。
ノード テーブルまたはエッジ テーブルではデータベースの拡張はサポートされていません。
重要
拡張データベースは、SQL Server 2022 (16.x) および Azure SQL 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;
次の例では、他のユーザーと友人になることができるのは、人だけであるとするルールをモデル化しています。つまり、このエッジでは、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 グラフ)
SQL Server 2017 でのグラフ処理