CREATE TABLE (граф SQL)

Область применения: SQL Server 2017 (14.x) и более поздних версий Управляемый экземпляр SQL Azure

Создает новую таблицу графа SQL как таблицу NODE или EDGE.

Примечание.

Сведения о стандартных инструкциях 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 )

Примечание.

Сведения о синтаксисе Transact-SQL для SQL Server 2014 (12.x) и более ранних версиях см . в документации по предыдущим версиям.

Аргументы

В этом документе описываются только аргументы, относящиеся к SQL Graph. Полный список и описание поддерживаемых аргументов см. в разделе CREATE TABLE (Transact-SQL).

database_name
Имя базы данных, в которой создается таблица. Параметр database_name должен указывать имя существующей базы данных. Если не указано, в качестве database_name по умолчанию выбирается текущая база данных. Имя входа для текущего соединения должно быть связано с идентификатором пользователя, существующего в базе данных, указанной аргументом database_name, а этот пользователь должен обладать разрешениями CREATE TABLE.

schema_name
Имя схемы, которой принадлежит новая таблица.

table_name
Это имя таблицы узлов или граничной таблицы. Имена таблиц должны соответствовать правилам для идентификаторов. Аргумент table_name может состоять не более чем из 128 символов, за исключением имен локальных временных таблиц (имена с префиксом из одного символа решетки #), длина которых не должна превышать 116 символов.

УЗЕЛ
Создает таблицу узлов.

ПОГРАНИЧНАЯ ЗОНА
Создает граничную таблицу.

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) и База данных SQL Azure. Эта функция будет удалена в будущей версии ядро СУБД. Избегайте использования этого компонента в новых разработках и запланируйте изменение существующих приложений, в которых он применяется.

Таблицы узлов или граничные таблицы не могут быть внешними (поддержка PolyBase для графовых таблиц отсутствует).

Несекционированную таблицу узлов графа или граничную таблицу невозможно преобразовать в секционированную.

Примеры

А. Создание таблицы 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 Processing with SQL Server 2017 (Работа с графами в SQL Server 2017)