Teilen über


CREATE TABLE (SQL-Graph)

Gilt für: SQL Server 2017 (14.x) und höher Azure SQL Managed Instance

Erstellt entweder als NODE- oder EDGE-Tabelle eine neue SQL-Graph-Tabelle.

Hinweis

Standardanweisungen für Transact-SQL finden Sie unter CREATE TABLE (Transact-SQL).

Transact-SQL-Syntaxkonventionen

Syntax

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 )

Argumente

In diesem Dokument werden nur Argumente für SQL-Graph aufgelistet. Eine vollständige Liste und Beschreibung der unterstützten Argumente finden Sie unter CREATE TABLE (Transact-SQL).

database_name
Der Name der Datenbank, in der die Tabelle erstellt wird. database_name muss dem Namen einer vorhandenen Datenbank entsprechen. Wird database_name nicht angegeben, wird standardmäßig die aktuelle Datenbank verwendet. Der Anmeldename für die aktuelle Verbindung muss einer vorhandenen Benutzer-ID in der durch database_name angegebenen Datenbank zugeordnet sein. Diese Benutzer-ID muss über CREATE TABLE-Berechtigungen verfügen.

schema_name
Der Name des Schemas, zu dem die neue Tabelle gehört.

table_name
Der Name der Knoten- oder Edgetabelle. Tabellennamen müssen die Regeln für Bezeichner erfüllen. table_name kann höchstens 128 Zeichen aufweisen, ausgenommen lokale temporäre Tabellennamen (Namen mit einem Nummernzeichen (#) als Präfix), bei denen maximal 116 Zeichen zulässig sind.

NODE
Erstellt eine Knotentabelle

EDGE
Erstellt eine Edgetabelle

table_constraint
Gibt die Eigenschaften einer PRIMARY KEY-, UNIQUE-, FOREIGN KEY-, CONNECTION- oder CHECK-Einschränkung bzw. eine DEFAULT-Definition an, die einer Tabelle hinzugefügt wurde.

Hinweis

Die CONNECTION-Einschränkung ist nur für einen Edgetabellentyp gültig.

ON { partition_scheme | filegroup | "default" }
Gibt das Partitionsschema oder die Dateigruppe an, in der die Tabelle gespeichert wird. Wenn partition_scheme angegeben wird, soll die Tabelle eine partitionierte Tabelle sein, deren Partitionen in einem Satz aus einer oder mehreren in partition_scheme angegebenen Dateigruppen gespeichert werden. Wenn filegroup angegeben ist, wird die Tabelle in der genannten Dateigruppe gespeichert. Die Dateigruppe muss in der Datenbank vorhanden sein. Wenn "default" angegeben oder ON überhaupt nicht angegeben ist, wird die Tabelle in der Standarddateigruppe gespeichert. Der in CREATE TABLE angegebene Speichermechanismus einer Tabelle kann nachfolgend nicht mehr geändert werden.

ON {partition_scheme | filegroup | "default"}
Kann auch in einer PRIMARY KEY- oder UNIQUE-Einschränkung angegeben werden. Diese Einschränkungen erstellen Indizes. Wenn „filegroup“ angegeben ist, wird der Index in der genannten Dateigruppe gespeichert. Wenn "default" angegeben oder ON überhaupt nicht angegeben ist, wird der Index in derselben Dateigruppe wie die Tabelle gespeichert. Wenn die PRIMARY KEY- oder die UNIQUE-Einschränkung einen gruppierten Index erstellt, werden die Datenseiten für die Tabelle in derselben Dateigruppe wie der Index gespeichert. Wenn CLUSTERED angegeben wird oder ein gruppierter Index anderweitig durch die Einschränkung erstellt wird, und ein Wert für „partition_scheme“ angegeben wird, der von der Angabe für „partition_scheme“ oder „filegroup“ der Tabellendefinition abweicht (oder umgekehrt), wird nur die Einschränkungsdefinition berücksichtigt. Der andere Wert wird ignoriert.

Bemerkungen

Das Erstellen einer temporären Tabelle als Knoten- oder Edgetabelle wird nicht unterstützt.

Das Erstellen einer Knoten- oder Edgetabelle als temporale Tabelle wird nicht unterstützt.

Stretch Database wird für Knoten- oder Edgetabellen nicht unterstützt.

Wichtig

Stretch Database ist in SQL Server 2022 (16.x) und der Azure SQL-Datenbank veraltet. Diese Funktion wird in einer zukünftigen Version der Datenbank-Engine entfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.

Knoten- oder Edgetabellen können keine externen Tabellen sein (es besteht keine Unterstützung von PolyBase für Graphtabellen).

Eine nicht partitionierte Graphknoten-/Edgetabelle kann nicht in eine partitionierte Graphknoten-/Edgetabelle geändert werden.

Beispiele

A. Erstellen einer NODE-Tabelle

Im folgenden Beispiel wird das Erstellen einer NODE-Tabelle veranschaulicht.

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

B. Erstellen einer EDGE-Tabelle

Im folgenden Beispiel wird das Erstellen von EDGE-Tabellen veranschaulicht.

 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;

Im nächsten Beispiel wird eine Regel modelliert, dass nur Personen mit anderen Personen befreundet sein können, was bedeutet, dass dieser Edgeknoten keine Verweise auf andere Knoten als Personen erlaubt.

/* 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;

Siehe auch

ALTER TABLE table_constraint
ALTER TABLE (Transact-SQL)
INSERT (SQL-Graph)]
Graph Processing with SQL Server 2017 (Graph-Verarbeitung mit SQL Server-2017)