CREATE TABLE (Azure SQL データベース)

Azure AQL データベース で新しいテーブルを作成します。

重要

フェデレーションの現在の実装は、Web サービス層と Business サービス層で終了になります。スケーラビリティ、柔軟性、およびパフォーマンスを最大限に高めるには、カスタム シャーディング ソリューションの配置を検討してください。カスタム シャーディングの詳細については、「Azure SQL データベースのスケールアウト」を参照してください。

適用対象:Azure AQL データベース. 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 AQL データベース  で使用できる引数とオプションを示しています。

database_name が現在のデータベースである場合、または database_name が tempdb でありかつ object_name が # で始まる場合、Azure AQL データベース は 3 つの要素で構成された名前形式 (database_name**.[schema_name].**object_name) をサポートします。

Azure AQL データベース では 4 部構成の名前はサポートされていません。

SPARSE の列は Azure AQL データベース でサポートされているすべてのクライアント ドライバーからクエリできますが、現時点では SQL Server 2008 およびそれより高度な Native Client ODBC ドライバーのみが結果セットの NULL 値の圧縮を完全にサポートしています。

FEDERATED ON 句は、既存のフェデレーション内のフェデレーション テーブルとしてテーブルを作成し、フェデレーションの分布の制約 (distribution_name) をテーブル内の特定のフェデレーション列 (column_name) に適用します。 フェデレーション テーブルには次の特性があります。

  • フェデレーション テーブルのフェデレーション列に含めることができるのは、フェデレーション メンバーの range_low (範囲に含まれる) から range_high (範囲に含まれない) までと一致するデータのみです。

  • フェデレーション列のデータ型は、フェデレーションの定義で定義されているデータ型と正確に一致する必要があります。

  • フェデレーション テーブルのすべての一意のインデックスとクラスター化インデックスにフェデレーション列が含まれている必要があります。 フェデレーション列がインデックスに表示される順序は、フェデレーションのキー序数と異なっていてもかまいません。

  • フェデレーション列の値をフェデレーション メンバーの範囲外の値に更新することはできません。

  • フェデレーション列を保存される計算列または保存されない計算列にすることはできません。

  • インデックス付きビューをフェデレーション テーブルに作成することはできません。

  • フェデレーション列は NULL 値を使用することはできません。

  • フェデレーション テーブルのすべての外部キー制約に、外部キーの序数が同じである参照元テーブルと参照先テーブルの両方のフェデレーション列が含まれている必要があります。 参照テーブルはフェデレーション テーブルと外部キー リレーションシップを持つことができません。 フェデレーション テーブルは制限なしで参照テーブルと外部キー リレーションシップを持つことができません。

  • FEDERATED ON 句で作成されたテーブルは通常どおり削除できます。 ALTER TABLE を使用して、フェデレーション キーなどのフェデレーション属性を除くフェデレーション テーブルのすべてのプロパティを変更することもできます。 参照テーブルをフェデレーション テーブルに変更する、またはフェデレーション テーブルを参照テーブルに変更するには、必要なプロパティを使用して新しいテーブルを作成してから既存のテーブルを削除する必要があります。

  • テーブルが STATISTICS_NORECOMPUTE でマークされている場合、SPLIT などのフェデレーション操作は統計を無効にしたり再計算したりしません。 これにより、SPLIT などの再分割操作の後に、実行プランに関する問題が発生する可能性があります。

  • フェデレーション テーブルで ID プロパティを使用することはできません。

  • フェデレーション テーブルで timestamp および rowversion データ型を使用することはできません。

引数と CREATE TABLE ステートメントの詳細については、「CREATE TABLE (SQL Server)」を参照してください。

説明

Azure AQL データベース ではヒープ テーブルを使用できないため、テーブルはクラスター化インデックスを必要とします。 テーブルがクラスター化制約なしで作成されている場合、テーブルで挿入操作を許可する前にクラスター化インデックスを作成する必要があります。