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