다음을 통해 공유


CREATE TABLE(Azure SQL 데이터베이스)

Azure SQL 데이터베이스에서 새 테이블을 만듭니다.

중요

현재 페더레이션 구현은 Web 및 Business 서비스 계층에서 폐기됩니다. 확장성, 유연성 및 성능 극대화를 위해 사용자 지정 분할 솔루션을 배포하는 것이 좋습니다.사용자 지정 분할에 대한 자세한 내용은 Azure SQL 데이터베이스 확장을 참조하세요.

적용 대상: Azure SQL 데이터베이스. SQL Server 구문에 대해서는 CREATE TABLE(SQL Server)을 참조하세요.

구문

CREATE TABLE 
    [ database_name . [ schema_name ] . | schema_name . ] table_name 
    ( { <column_definition> | <computed_column_definition> 
        | <column_set_definition> } 
        [ <table_constraint> ] [ ,...n ] ) 
FEDERATED ON ( distribution_name = column_name)
[ ; ]

<column_definition> ::= 
column_name <data_type>
    [ COLLATE collation_name ] 

    [ NULL | NOT NULL ]
    [ 
        [ CONSTRAINT constraint_name ] DEFAULT constant_expression ] 
      | [ IDENTITY [ ( seed ,increment ) ] 
    ]
  [ <column_constraint> [ ...n ] ]

  [ SPARSE ]
  
<data type> ::= 
[ type_schema_name . ] type_name 
    [ ( precision [ , scale ] | max 
] 

<column_constraint> ::= 
[ CONSTRAINT constraint_name ] 
{     { PRIMARY KEY | UNIQUE } 
        [ CLUSTERED | NONCLUSTERED ] 
        [ 
          WITH ( < index_option > [ , ...n ] ) 
        ] 
| [ FOREIGN KEY ] 
        REFERENCES [ schema_name . ] referenced_ table_name [ ( ref_column ) ] 
        [ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
        [ ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ] 
  | CHECK  ( logical_expression ) 
} 

<computed_column_definition> ::= 
column_name AS computed_column_expression 
[ PERSISTED [ NOT NULL ] ]
[ 
    [ CONSTRAINT constraint_name ]
    { PRIMARY KEY | UNIQUE }
        [ CLUSTERED | NONCLUSTERED ]
        [ 
          WITH ( <index_option> [ , ...n ] )
        ]
    | [ FOREIGN KEY ] 
        REFERENCES referenced_table_name [ ( ref_column ) ] 
        [ ON DELETE { NO ACTION | CASCADE } ] 
        [ ON UPDATE { NO ACTION } ] 
   [ NOT FOR REPLICATION ] 
    | CHECK ( logical_expression ) 
] 

<column_set_definition> ::= 
column_set_name XML COLUMN_SET FOR ALL_SPARSE_COLUMNS

< table_constraint > ::=
[ CONSTRAINT constraint_name ] 
{ 
    { PRIMARY KEY | UNIQUE } 
        [ CLUSTERED | NONCLUSTERED ] 
        (column [ ASC | DESC ] [ ,...n ] ) 
        [ 
           WITH ( <index_option> [ , ...n ] ) 
        ]
  
    | 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 } ] 

    | CHECK ( logical_expression ) 
} 

<index_option> ::=
{ 
  IGNORE_DUP_KEY = { ON | OFF } 
  | STATISTICS_NORECOMPUTE = { ON | OFF } 
}

인수

참고

이 구문 다이어그램은 Azure SQL 데이터베이스에서 지원되는 인수와 옵션을 보여 줍니다.

database_name이 현재 데이터베이스이거나 database_name이 tempdb이고 object_name이 #으로 시작하는 경우 Azure SQL 데이터베이스는 세 부분으로 구성된 이름 형식 database_name**.[schema_name].**object_name을 지원합니다.

Azure SQL 데이터베이스은 네 부분으로 된 이름을 지원하지 않습니다.

SPARSE 열은 Azure SQL 데이터베이스에서 사용 가능한 모든 클라이언트 드라이버에서 쿼리할 수 있지만, 현재는 SQL Server 2008 기본 클라이언트 ODBC 드라이버 이상에서만 결과 세트의 NULL 값 압축을 전적으로 지원합니다.

FEDERATED ON 절은 테이블을 기존 페더레이션 내에서 페더레이션된 테이블로 만들고, 해당 테이블(column_name) 내의 지정된 페더레이션 열에 대해 페더레이션 배포 제약 조건(distribution_name)을 적용합니다. 페더레이션된 테이블에는 다음과 같은 특성이 있습니다.

  • 페더레이션된 테이블의 페더레이션 열에는 range_low 포함 및 range_high 제외 페더레이션 구성원에 맞는 데이터만 입력할 수 있습니다.

  • 페더레이션 열의 데이터 형식은 페더레이션 정의에 지정된 데이터 형식과 정확히 일치해야 합니다.

  • 페더레이션된 테이블의 모든 고유 인덱스 및 클러스터형 인덱스에는 페더레이션된 열이 있어야 합니다. 인덱스에 페더레이션 열이 나타나는 순서는 페더레이션의 키 서수와 다를 수 있습니다.

  • 페더레이션 열 값은 페더레이션 구성원 범위 밖에 있는 값으로 업데이트할 수 없습니다.

  • 페더레이션 열은 지속형 또는 비지속형 계산 열일 수 없습니다.

  • 페더레이션된 테이블에서 인덱싱된 뷰를 만들 수 없습니다.

  • 페더레이션 열은 NULL일 수 없습니다.

  • 페더레이션된 테이블의 모든 외래 키 제약 조건에는 참조자와 참조된 테이블 모두에 대한 페더레이션 열이 외래 키와 동일한 순서로 포함되어야 합니다. 참조 테이블은 페더레이션된 테이블과 외래 키 관계를 가질 수 없습니다. 페더레이션된 테이블은 제약 없이 참조 테이블과 외래 키 관계를 가질 수 없습니다.

  • 일반적으로 FEDERATED ON 절로 만든 테이블은 삭제할 수 있습니다. 또한 ALTER TABLE을 사용하여 페더레이션 키 등의 페더레이션 특성을 제외하고 페더레이션된 테이블의 모든 특성을 변경할 수 있습니다. 참조 테이블을 페더레이션된 테이블로, 페더레이션된 테이블을 참조 테이블로 변경하려면 원하는 속성으로 새 테이블을 만든 다음 기존 테이블을 삭제해야 합니다.

  • 테이블에 STATISTICS_NORECOMPUTE 표시가 있으면 SPLIT 등의 페더레이션 작업으로 통계를 무효화하거나 다시 계산할 수 없습니다. 그러면 SPLIT 등 재분할 작업 후에 실행 계획 문제가 발생할 수 있습니다.

  • 페더레이션된 테이블은 ID 속성을 지원하지 않습니다.

  • 페더레이션된 테이블은 타임스탬프 및 rowversion 데이터 형식을 지원하지 않습니다.

인수 및 CREATE TABLE 문에 대한 자세한 내용은 CREATE TABLE(SQL Server)을 참조하세요.

주의

Azure SQL 데이터베이스은 힙 테이블을 지원하지 않으므로 테이블은 클러스터형 인덱스를 가져야 합니다. 클러스터형 제약 조건 없이 테이블을 만드는 경우 테이블에 삽입 작업을 허용하기 전에 클러스터형 인덱스를 만들어야 합니다.