다음을 통해 공유


INSERT(SQL Graph)

적용 대상: SQL Server 2017 (14.x) 및 이후 버전 Azure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric Preview의 SQL 데이터베이스

nodeedge 또는 SQL Server 테이블에 새 행을 하나 이상 추가합니다.

Transact-SQL 구문 표기 규칙

INSERT Into 노드 테이블 구문

노드 테이블에 삽입하는 구문은 일반 테이블과 동일합니다.

[ WITH <common_table_expression> [ ,...n ] ]  
INSERT   
{  
        [ TOP ( expression ) [ PERCENT ] ]   
        [ INTO ]   
        { <object> | rowset_function_limited   
          [ WITH ( <Table_Hint_Limited> [ ...n ] ) ]  
        }  
    {  
        [ (column_list) ] | [(<edge_table_column_list>)]  
        [ <OUTPUT Clause> ]  
        { VALUES ( { DEFAULT | NULL | expression } [ ,...n ] ) [ ,...n     ]   
        | derived_table   
        | execute_statement  
        | <dml_table_source>  
        | DEFAULT VALUES   
        }  
    }  
}  
[;]  
  
<object> ::=  
{   
    [ server_name . database_name . schema_name .   
      | database_name .[ schema_name ] .   
      | schema_name .   
    ]  
    node_table_name  | edge_table_name
}  
  
<dml_table_source> ::=  
    SELECT <select_list>  
    FROM ( <dml_statement_with_output_clause> )   
      [AS] table_alias [ ( column_alias [ ,...n ] ) ]  
    [ WHERE <on_or_where_search_condition> ]  
        [ OPTION ( <query_hint> [ ,...n ] ) ]  

<on_or_where_search_condition> ::=
    {  <search_condition_with_match> | <search_condition> }

<search_condition_with_match> ::=
    { <graph_predicate> | [ NOT ] <predicate> | ( <search_condition> ) }
    [ AND { <graph_predicate> | [ NOT ] <predicate> | ( <search_condition> ) } ]
    [ ,...n ]

<search_condition> ::=
    { [ NOT ] <predicate> | ( <search_condition> ) }
    [ { AND | OR } [ NOT ] { <predicate> | ( <search_condition> ) } ]
    [ ,...n ]

<graph_predicate> ::=
    MATCH( <graph_search_pattern> [ AND <graph_search_pattern> ] [ , ...n] )

<graph_search_pattern>::=
    <node_alias> { { <-( <edge_alias> )- | -( <edge_alias> )-> } <node_alias> }

<edge_table_column_list> ::=
    ($from_id, $to_id, [column_list])

Arguments

Note

이 문서에서는 SQL 그래프와 관련된 인수에 대해 설명합니다. INSERT 문에서 지원되는 인수에 대한 전체 목록 및 설명은 INSERT TABLE(Transact-SQL)을 참조하세요. 표준 Transact-SQL 문의 경우 INSERT TABLE(Transact SQL)을 참조하세요.

INTO

INSERT와 대상 테이블 사이에 사용할 수 있는 선택적 키워드입니다.

MATCH search_condition_with_match 절은 노드 또는 에지 테이블에 삽입하는 동안 하위 쿼리에서 사용할 수 있습니다. MATCH 문 구문은 GRAPH MATCH(Transact-SQL)를 참조하세요.

graph_search_pattern 그래프 조건자의 일부로 절에 MATCH 제공된 검색 패턴입니다.

edge_table_column_list 사용자는 에지에 삽입하는 동안 값을 $from_id$to_id 제공해야 합니다. 값이 제공되지 않거나 NULL이 이러한 열에 삽입되면 오류가 반환됩니다.

Remarks

  • 노드에 삽입은 관계형 테이블에 삽입과 동일합니다. 열의 $node_id 값이 자동으로 생성됩니다.
  • 에지 테이블에 행을 삽입하는 동안에는 값 $from_id$to_id 열을 제공해야 합니다.
  • 노드 테이블에 대한 BULK 삽입은 관계형 테이블과 동일합니다.
  • 에지 테이블에 대량 삽입을 수행하기 전에 노드 테이블을 가져와야 합니다. 그런 다음, $from_id$to_id에 대한 값을 노드 테이블의 $node_id 열에서 추출하여 에지로 삽입할 수 있습니다.
  • 패브릭 SQL 데이터베이스에서 SQL Graph는 허용되지만 Node 및 Edge 테이블은 Fabric OneLake에 미러링되지 않습니다.

Permissions

대상 테이블에 대해 INSERT 권한이 필요합니다.

sysadmin 고정 서버 역할, db_ownerdb_datawriter 고정 데이터베이스 역할의 멤버 및 테이블 소유자에게는 기본적으로 INSERT 권한이 부여됩니다. sysadmin, db_ownerdb_securityadmin 역할의 멤버와 테이블 소유자는 다른 사용자에게 권한을 위임할 수 있습니다.

OPENROWSET 함수에 BULK 옵션을 사용하여 INSERT를 실행하려면 sysadmin 고정 서버 역할 또는 bulkadmin 고정 서버 역할의 멤버여야 합니다.

Examples

A. 노드 테이블에 삽입

다음 예제에서는 Person 노드 테이블을 만들고 해당 테이블에 두 개의 행을 삽입합니다.

-- Create person node table
CREATE TABLE dbo.Person (ID integer PRIMARY KEY, name varchar(50)) AS NODE;
 
-- Insert records for Alice and John
INSERT INTO dbo.Person VALUES (1, 'Alice');
INSERT INTO dbo.Person VALUES (2,'John');

B. 에지 테이블에 삽입

다음 예제에서는 friend 에지 테이블을 만들고 테이블에 가장자리를 삽입합니다.

-- Create friend edge table
CREATE TABLE dbo.friend (start_date DATE) AS EDGE;

-- Create a friend edge, that connect Alice and John
INSERT INTO dbo.friend VALUES ((SELECT $node_id FROM dbo.Person WHERE name = 'Alice'),
        (SELECT $node_id FROM dbo.Person WHERE name = 'John'), '9/15/2011');

Next steps