CREATE TABLE (SQL Graph)

適用対象: SQL Server 2017 (14.x) 以降 Azure SQL Managed Instance

NODE または EDGE テーブルで新しい SQL グラフ テーブルを作成します。

Note

標準の 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 )

Note

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 文字までしか使用できないローカル一時テーブル名 (名前の先頭に 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 でのグラフ処理