CREATE TABLE (grafo SQL)

Si applica a: SQL Server 2017 (14.x) e versioni successive Istanza gestita di SQL di Azure

Crea una nuova tabella di grafi SQL come tabella NODE o EDGE.

Nota

Per le istruzioni Transact-SQL standard, vedere CREATE TABLE (Transact-SQL).

Convenzioni di sintassi Transact-SQL

Sintassi

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 )

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere la documentazione delle versioni precedenti.

Argomenti

Questo documento include solo gli argomenti relativi al grafo SQL. Per un elenco completo e una descrizione degli argomenti supportati, vedere CREATE TABLE (Transact-SQL)

database_name
Nome del database in cui è viene creata la tabella. database_name deve specificare il nome di un database esistente. Se l'argomento database_name non viene specificato, il valore predefinito è il database corrente. L'account di accesso per la connessione corrente deve essere associato a un ID utente esistente nel database specificato da database_name. Questo ID utente deve avere le autorizzazioni CREATE TABLE.

schema_name
Nome dello schema a cui appartiene la nuova tabella.

table_name
Nome della tabella nodi o bordi. I nomi delle tabelle devono essere conformi alle regole per gli identificatori. table_name può essere costituito al massimo da 128 caratteri, ad eccezione dei nomi di tabelle temporanee locali, ovvero i nomi preceduti da un solo simbolo di cancelletto (#), che non possono superare i 116 caratteri.

NODE
Crea una tabella nodi.

EDGE
Crea una tabella bordi.

table_constraint
Specifica le proprietà di un vincolo PRIMARY KEY, UNIQUE, FOREIGN KEY, CONNECTION o CHECK oppure di una definizione DEFAULT aggiunta a una tabella.

Nota

Il vincolo CONNECTION si applica solo a un tipo di tabella bordi.

ON { partition_scheme | filegroup | "default" }
Specifica lo schema di partizione o il filegroup in cui la tabella viene archiviata. Se si specifica partition_scheme, la tabella deve essere partizionata e le relative partizioni devono essere archiviate in un set di uno o più filegroup specificati in partition_scheme. Se si specifica filegroup, la tabella viene archiviata nel filegroup indicato. Il filegroup deve essere presente nel database. Se si specifica "default" oppure si omette ON, la tabella viene archiviata nel filegroup predefinito. Il meccanismo di archiviazione di una tabella specificato in CREATE TABLE non può essere modificato in seguito.

ON {partition_scheme | filegroup | "default"}
Può essere specificato anche in un vincolo PRIMARY KEY o UNIQUE. Questi vincoli comportano la creazione di indici. Se si specifica filegroup, l'indice viene archiviato nel filegroup indicato. Se si specifica "default" oppure si omette ON, l'indice viene archiviato nello stesso filegroup della tabella. Se il vincolo PRIMARY KEY o UNIQUE crea un indice cluster, le pagine di dati della tabella vengono archiviate nello stesso filegroup dell'indice. Se si specifica CLUSTERED o se il vincolo crea in altro modo un indice cluster e si specifica un valore partition_scheme diverso dal valore partition_scheme o filegroup della definizione della tabella, o viceversa, verrà rispettata solo la definizione del vincolo e gli altri valori verranno ignorati.

Osservazioni:

La creazione di una tabella temporanea come tabella nodi o bordi non è supportata.

La creazione di una tabella nodi o bordi come tabella temporanea non è supportata.

Stretch Database non è supportato per la tabella nodi o bordi.

Importante

Stretch Database è deprecato in SQL Server 2022 (16.x) e database SQL di Azure. Questa funzionalità verrà rimossa in una versione futura del motore di database. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.

Le tabelle nodi o bordi non possono essere tabelle esterne. PolyBase non supporta le tabelle di grafi.

Non è possibile modificare una tabella nodi/archi di grafo non partizionata in una tabella nodi/archi di grafo partizionata.

Esempi

R. Creare una tabella NODE

L'esempio seguente illustra come creare una tabella NODE

 CREATE TABLE Person (
        ID INTEGER PRIMARY KEY, 
        name VARCHAR(100), 
        email VARCHAR(100)
 ) AS NODE;

B. Creare una tabella EDGE

L'esempio seguente illustra come creare tabelle 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;

Nell'esempio successivo viene modellata una regola secondo cui solo le persone possono essere amiche di altre persone, pertanto edge non consente riferimenti a nodi diversi da 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;

Vedi anche

ALTER TABLE table_constraint
ALTER TABLE (Transact-SQL)
INSERT (grafo SQL)
Graph Processing with SQL Server 2017 (Elaborazione di grafi con SQL Server 2017)