テーブル (Azure SQL データ ウェアハウス) を作成します。CREATE TABLE (Azure SQL Data Warehouse)

適用対象: XSQL Server XAzure SQL Database○Azure SQL Data Warehouse ○Parallel Data Warehouse THIS TOPIC APPLIES TO: noSQL Server noAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

SQL データ ウェアハウスSQL Data Warehouse または Parallel Data WarehouseParallel Data Warehouse で新しいテーブルを作成します。Creates a new table in SQL データ ウェアハウスSQL Data Warehouse or Parallel Data WarehouseParallel Data Warehouse.

テーブルについて、またテーブルの使用方法について理解するには、SQL Data Warehouse のテーブルに関するページを参照してください。To understand tables and how to use them, see Tables in SQL Data Warehouse.

注: この記事での SQL Data Warehouse に関する説明は、特に明記がない限り、SQL Data Warehouse および Parallel Data Warehouse の両方に適用されます。NOTE: Discussions about SQL Data Warehouse in this article apply to both SQL Data Warehouse and Parallel Data Warehouse unless otherwise noted.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions

構文Syntax

-- Create a new table. 
CREATE TABLE [ database_name . [ schema_name ] . | schema_name. ] table_name   
    ( 
      { column_name <data_type>  [ <column_options> ] } [ ,...n ]   
    )  
    [ WITH [ <table_option> [ ,...n ] ) ]  
[;]  

<column_options> ::=
    [ COLLATE Windows_collation_name ]  
    [ NULL | NOT NULL ] -- default is NULL  
    [ [ CONSTRAINT constraint_name ] DEFAULT constant_expression  ]

<table_option> ::= 
    {   
        CLUSTERED COLUMNSTORE INDEX --default for SQL Data Warehouse 
      | HEAP --default for Parallel Data Warehouse   
      | CLUSTERED INDEX ( { index_column_name [ ASC | DESC ] } [ ,...n ] ) -- default is ASC 
    }  
    { 
        DISTRIBUTION = HASH ( distribution_column_name ) 
      | DISTRIBUTION = ROUND_ROBIN -- default for SQL Data Warehouse
      | DISTRIBUTION = REPLICATE -- default for Parallel Data Warehouse
    }   
    | PARTITION ( partition_column_name RANGE [ LEFT | RIGHT ] -- default is LEFT  
        FOR VALUES ( [ boundary_value [,...n] ] ) )  

<data type> ::=   
      datetimeoffset [ ( n ) ]  
    | datetime2 [ ( n ) ]  
    | datetime  
    | smalldatetime  
    | date  
    | time [ ( n ) ]  
    | float [ ( n ) ]  
    | real [ ( n ) ]  
    | decimal [ ( precision [ , scale ] ) ]   
    | numeric [ ( precision [ , scale ] ) ]   
    | money  
    | smallmoney  
    | bigint  
    | int   
    | smallint  
    | tinyint  
    | bit  
    | nvarchar [ ( n | max ) ]  -- max applies only to SQL Data Warehouse 
    | nchar [ ( n ) ]  
    | varchar [ ( n | max )  ] -- max applies only to SQL Data Warehouse  
    | char [ ( n ) ]  
    | varbinary [ ( n | max ) ] -- max applies only to SQL Data Warehouse  
    | binary [ ( n ) ]  
    | uniqueidentifier  

引数Arguments

database_namedatabase_name
新しいテーブルを格納するデータベースの名前です。The name of the database that will contain the new table. 既定値は現在のデータベースです。The default is the current database.

schema_nameschema_name
テーブルのスキーマです。The schema for the table. "スキーマ" の指定は省略可能です。Specifying schema is optional. 空白の場合は、既定のスキーマが使用されます。If blank, the default schema will be used.

table_nametable_name
新しいテーブルの名前です。The name of the new table. ローカルの一時テーブルを作成するには、テーブル名の先頭に # を付けます。To create a local temporary table, precede the table name with #. 一時テーブルの説明とガイダンスについては、「SQL Data Warehouse の一時テーブル」を参照してください。For explanations and guidance on temporary tables, see Temporary tables in Azure SQL Data Warehouse.

column_namecolumn_name
テーブルの列の名前です。The name of a table column.

列のオプションColumn options

COLLATE Windows_collation_nameCOLLATE Windows_collation_name
式の照合順序を指定します。Specifies the collation for the expression. SQL ServerSQL Server でサポートされている Windows 照合順序のいずれかを指定する必要があります。The collation must be one of the Windows collations supported by SQL ServerSQL Server. SQL ServerSQL Server でサポートされている Windows 照合順序の一覧については、「Windows 照合順序名 (Transact-SQL)」を参照してください。For a list of Windows collations supported by SQL ServerSQL Server, see Windows Collation Name (Transact-SQL).

NULL | NOT NULL
列で NULL 値を許可するかどうかを指定します。Specifies whether NULL values are allowed in the column. 既定値は NULL です。The default is NULL.

[ CONSTRAINT constraint_name ] DEFAULT constant_expression[ CONSTRAINT constraint_name ] DEFAULT constant_expression
列の既定値を指定します。Specifies the default column value.

引数Argument 説明Explanation
constraint_nameconstraint_name (省略可能) 制約の名前です。The optional name for the constraint. 制約名は、データベース内で一意です。The constraint name is unique within the database. 名前は、他のデータベース内で再利用できます。The name can be re-used in other databases.
constant_expressionconstant_expression 列の既定値。The default value for the column. 式は、リテラル値である必要があります、または定数。The expression must be a literal value or a a constant. たとえば、'CA'4 などの定数式は許可されます。For example, these constant expressions are allowed: 'CA', 4. 2+3CURRENT_TIMESTAMP などは許可されません。These are not allowed: 2+3, CURRENT_TIMESTAMP.

テーブル構造のオプションTable structure options

テーブルの種類を選択する方法の詳細については、「SQL Data Warehouse でのテーブルのインデックス作成」を参照してください。For guidance on choosing the type of table, see Indexing tables in Azure SQL Data Warehouse.

CLUSTERED COLUMNSTORE INDEX
クラスター化列ストア インデックスとしてテーブルを格納します。Stores the table as a clustered columnstore index. クラスター化列ストア インデックスは、すべてのテーブルのデータに適用されます。The clustered columnstore index applies to all of the table data. これは、 SQL データ ウェアハウスSQL Data Warehouse での既定値です。This is the default for SQL データ ウェアハウスSQL Data Warehouse.

HEAP
テーブルをヒープとして格納します。Stores the table as a heap. これは、 Parallel Data WarehouseParallel Data Warehouse での既定値です。This is the default for Parallel Data WarehouseParallel Data Warehouse.

CLUSTERED INDEX ( index_column_name [ ,...n ] )CLUSTERED INDEX ( index_column_name [ ,...n ] )
1 つまたは複数のキー列を含むクラスター化インデックスとしてテーブルを格納します。Stores the table as a clustered index with one or more key columns. これは、行によって、データを格納します。This stores the data by row. index_column_name を使用して、インデックスに 1 つまたは複数のキー列の名前を指定します。Use index_column_name to specify the name of one or more key columns in the index. 詳細については、「全般的な解説」の「行ストア テーブル」を参照してください。For more information, see Rowstore Tables in the General Remarks.

LOCATION = USER_DB
このオプションは非推奨とされます。This option is deprecated. この構文は受け入れられますが、不要になっていて動作に影響しません。It is syntactically accepted, but no longer required and no longer affects behavior.

テーブル分散オプションTable distribution options

最適な分散メソッドを選択する方法および分散テーブルを使用する方法を理解するには、「Azure SQL Data Warehouse での分散テーブルの設計に関するガイダンス」を参照してください。To understand how to choose the best distribution method and use distributed tables, see Distributing tables in Azure SQL Data Warehouse.

DISTRIBUTION = HASH ( distribution_column_name )DISTRIBUTION = HASH ( distribution_column_name )
distribution_column_name に格納された値をハッシュすることにより、各行を 1 つの分散に割り当てます。Assigns each row to one distribution by hashing the value stored in distribution_column_name. 決定論的アルゴリズムが使用されいます。つまり、常に同じ値が同じ分散にハッシュされます。The algorithm is deterministic which means it always hashes the same value to the same distribution. NULL を持つ行はすべて同じ分散に割り当てられるので、分散列は NOT NULL として定義する必要があります。The distribution column should be defined as NOT NULL since all rows that have NULL will be assigned to the same distribution.

DISTRIBUTION = ROUND_ROBIN
行に、ラウンド ロビン方式でのすべてのディストリビューションに均等に分散します。Distributes the rows evenly across all the distributions in a round-robin fashion. これは、 SQL データ ウェアハウスSQL Data Warehouse での既定値です。This is the default for SQL データ ウェアハウスSQL Data Warehouse.

DISTRIBUTION = REPLICATE
テーブルの 1 つのコピーを各コンピューティング ノードに格納します。Stores one copy of the table on each Compute node. SQL データ ウェアハウスSQL Data Warehouse の場合、テーブルは各コンピューティング ノード上のディストリビューション データベースに格納されます。For SQL データ ウェアハウスSQL Data Warehouse the table is stored on a distribution database on each Compute node. Parallel Data WarehouseParallel Data Warehouse の場合、テーブルはコンピューティング ノードにまたがる SQL ServerSQL Server ファイルグループに格納されます。For Parallel Data WarehouseParallel Data Warehouse, the table is stored in a SQL ServerSQL Server filegroup that spans the Compute node. これは、 Parallel Data WarehouseParallel Data Warehouse での既定値です。This is the default for Parallel Data WarehouseParallel Data Warehouse.

テーブル パーティションのオプションTable partition options

テーブル パーティションの使用の詳細については、「SQL Data Warehouse でのテーブルのパーティション分割」を参照してください。For guidance on using table partitions, see Partitioning tables in SQL Data Warehouse.

PARTITION ( partition_column_name RANGE [ LEFT | RIGHT ] FOR VALUES ( [ boundary_value [,...n] ] ))PARTITION ( partition_column_name RANGE [ LEFT | RIGHT ] FOR VALUES ( [ boundary_value [,...n] ] ))
1 つまたは複数のテーブルのパーティションを作成します。Creates one or more table partitions. これらは横方向のテーブル スライスであり、テーブルがヒープ、クラスター化インデックス、またはクラスター化列ストア インデックスのいずれで格納されているかに関係なく、行のサブセットに対して操作を実行することができます。These are horizontal table slices that allow you to perform operations on subsets of rows regardless of whether the table is stored as a heap, clustered index, or clustered columnstore index. 配布 列とは異なりテーブルのパーティションは、各行が格納されている配布を特定できません。Unlike the distribution column, table partitions do not determine the distribution where each row is stored. 代わりに、テーブルのパーティションは、行をグループ化し、各配布内に格納する方法を決定します。Instead, table partitions determine how the rows are grouped and stored within each distribution.

引数Argument 説明Explanation
partition_column_namepartition_column_name SQL データ ウェアハウスSQL Data Warehouse で行をパーティション分割するのに使用する列を指定します。Specifies the column that SQL データ ウェアハウスSQL Data Warehouse will use to partition the rows. このコラムでは、任意のデータ型を指定できます。This column can be any data type. SQL データ ウェアハウスSQL Data Warehouse では、パーティション列の値が昇順に並べ替えられます。 sorts the partition column values in ascending order. 小さい順に並べる場合は、RANGE 指定のために LEFT から RIGHT に向かって並べられます。The low-to-high ordering goes from LEFT to RIGHT for the purpose of the RANGE specification.
RANGE LEFT 左側 (値が小さくなっていく) のパーティションに属する境界値を指定します。Specifies the boundary value belongs to the partition on the left (lower values). 既定値は LEFT です。The default is LEFT.
RANGE RIGHT 左側 (値が大きくなっていく) のパーティションに属する境界値を指定します。Specifies the boundary value belongs to the partition on the right (higher values).
FOR VALUES ( boundary_value [,...n] )FOR VALUES ( boundary_value [,...n] ) パーティションの境界値を指定します。Specifies the boundary values for the partition. boundary_value は定数式です。boundary_value is a constant expression. この式は NULL になることはできません。It cannot be NULL. また、partition_column_name のデータ型に一致するか、またはそのデータ型に暗黙的に変換可能である必要があります。It must either match or be implicitly convertible to the data type of partition_column_name. さらに、暗黙的な変換時には切り詰めることができないため、値のサイズおよびスケールは partition_column_name のデータ型と一致しません。It cannot be truncated during implicit conversion so that the size and scale of the value do not match the data type of partition_column_name

PARTITION 句を指定するときに、境界値を指定しない場合、 SQL データ ウェアハウスSQL Data Warehouse ではパーティションを 1 つ含むパーティション テーブルが作成されます。If you specify the PARTITION clause, but do not specify a boundary value, SQL データ ウェアハウスSQL Data Warehouse will create a partitioned table with one partition. 必要に応じて、後で 2 つのパーティションにテーブルを分割することができます。If applicable, you an split the table into two partitions at a later time.

境界値を 1 つ指定した場合、生成されるテーブルには 2 つのパーティションが含まれます。境界値よりも小さい値に対するパーティションと、境界値よりも大きい値に対するパーティションです。If you specify one boundary value, the resulting table has two partitions; one for the values lower than the boundary value and one for the values higher than the boundary value. 非パーティション テーブルにパーティションを移動した場合、非パーティション テーブルはデータを受け取りますが、そのメタデータ内にパーティション境界は設定されません。Note that if you move a partition into a non-partitioned table, the non-partitioned table will receive the data, but will not have the partition boundaries in its metadata.

「例」セクションの「パーティション テーブルの作成」を参照してください。See Create a partitioned table in the Examples section.

データ型Data types

SQL データ ウェアハウスSQL Data Warehouse では、最も一般的に使用されるデータ型をサポートしています。 supports the most commonly used data types. 以下に、サポートされるデータ型を一覧し、その詳細説明および格納バイトを示します。Below is a list of the supported data types along with their details and storage bytes. データ型とその使用方法をよく理解するには、「SQL Data Warehouse でのテーブルのデータ型の定義に関するガイダンス」を参照してください。To better understand data types and how to use them, see Data types for tables in SQL Data Warehouse.

データ型変換のテーブルについては、「CAST および CONVERT (Transact-SQL)」の「暗黙的な変換」セクションを参照してください。For a table of data type conversions, see the Implicit Conversions section, of CAST and CONVERT (Transact-SQL).

datetimeoffset [ ( n ) ]datetimeoffset [ ( n ) ]
n の既定値は 7 です。The default value for n is 7.

datetime2 [ ( n ) ]datetime2 [ ( n ) ]
datetime と同じ。ただし、秒の小数部の値を指定することができます。Same as datetime, except that you can specify the number of fractional seconds. n の既定値は 7 です。The default value for n is 7.

nn value 有効桁数Precision ScaleScale
0 1919 00
1 2121 11
2 2222 22
3 2323 33
4 2424 44
5 2525 55
6 2626 66
7 2727 77

datetime
構成のグレゴリオ暦カレンダーに従って 19 ~ 23 の文字の 1 日の日付と時刻を格納します。Stores date and time of day with 19 to 23 characters according to the Gregorian calendar. 日付には、年、月、および日を含めることができます。The date can contain year, month, and day. 時間には、時間、分、秒数が含まれています。オプションでは、秒の小数部の 3 桁の数字を表示できます。The time contains hour, minutes, seconds.As an option, you can display three digits for fractional seconds. 記憶領域のサイズは 8 バイトです。The storage size is 8 bytes.

smalldatetime
日付と時刻を格納します。Stores a date and a time. 記憶域のサイズは、4 バイトです。Storage size is 4 bytes.

date
最大 10 文字を使用して年、月、および構成のグレゴリオ暦カレンダーにおける日付を格納します。Stores a date using a maximum of 10 characters for year, month, and day according to the Gregorian calendar. 記憶域のサイズは、3 バイトです。The storage size is 3 bytes. 日付は、整数として保存されます。Date is stored as an integer.

time [ ( n ) ]time [ ( n ) ]
n の既定値は 7 です。The default value for n is 7.

float [ ( n ) ]float [ ( n ) ]
浮動小数点数値データで使用するおおよその数のデータを入力します。Approximate number data type for use with floating point numeric data. 浮動小数点データは概数、つまりデータ型の範囲内のすべての値を正確に表すことができます。Floating point data is approximate, which means that not all values in the data type range can be represented exactly. n では、float の仮数を指数表記で格納するために使用するビット数を指定します。n specifies the number of bits used to store the mantissa of the float in scientific notation. そのため、n は、有効桁数およびストレージのサイズを決定します。Therefore, n dictates the precision and storage size. n を指定する場合、1 から 53 までの値にする必要があります。If n is specified, it must be a value between 1 and 53. n の既定値は 53 です。The default value of n is 53.

nn value 有効桁数Precision ストレージのサイズStorage size
1-241-24 7 桁の数字7 digits 4 バイト4 bytes
25-5325-53 15 桁15 digits 8 バイト8 bytes

SQL データ ウェアハウスSQL Data Warehouse では、n は次の 2 つの値のいずれかの値として扱われます。 treats n as one of two possible values. 1<= n <= 24 の場合、n24 として処理されます。If 1<= n <= 24, n is treated as 24. 25 <= n <= 53 の場合、n53 として処理されます。If 25 <= n <= 53, n is treated as 53.

SQL データ ウェアハウスSQL Data Warehouse float データ型は、n153 の値をとるすべてのケースにおいて ISO 標準に準拠しています。The SQL データ ウェアハウスSQL Data Warehouse float data type complies with the ISO standard for all values of n from 1 through 53. 倍精度のシノニムは float(53) です。The synonym for double precision is float(53).

real [ ( n ) ]real [ ( n ) ]
実際の定義は、浮動小数点数と同じです。The definition of real is the same as float. real の ISO シノニムは、float(24) です。The ISO synonym for real is float(24).

decimal [ ( precision [ , scale ] ) ] | numeric [ ( precision [ , scale ] ) ]decimal [ ( precision [ , scale ] ) ] | numeric [ ( precision [ , scale ] ) ]
固定有効桁数と小数点以下桁数の数値を保存します。Stores fixed precision and scale numbers.

有効桁数 (precision)precision
小数点の右側および左側にある保存できる最大文字 (数字) 数の合計です。The maximum total number of decimal digits that can be stored, both to the left and to the right of the decimal point. 有効桁数の値は、138 (最大有効桁数) にする必要があります。The precision must be a value from 1 through the maximum precision of 38. 既定の有効桁数は 18 です。The default precision is 18.

scalescale
小数点の右側にある保存できる最大文字 (数字) 数です。The maximum number of decimal digits that can be stored to the right of the decimal point. Scale は、0precision とする必要があります。Scale must be a value from 0 through precision. scale を指定できるのは、precision が指定されている場合のみです。You can only specify scale if precision is specified. 既定の scale は0 です。したがって、0 <= scale <= precision となります。The default scale is 0; therefore, 0 <= scale <= precision. ストレージの最大サイズは有効桁数によって異なります。Maximum storage sizes vary, based on the precision.

有効桁数Precision ストレージのバイト サイズStorage bytes
1-91-9 55
10-1910-19 99
20-2820-28 1313
29-3829-38 1717

money | smallmoney
通貨値を表すデータ型。Data types that represent currency values.

データ型Data Type ストレージのバイト サイズStorage bytes
money 88
smallmoney 44

bigint | int | smallint | tinyint
整数データを使用する実数データ型です。Exact-number data types that use integer data. 次の表に、記憶域が表示されます。The storage is shown in the following table.

データ型Data Type ストレージのバイト サイズStorage bytes
bigint 88
int 44
smallint 22
tinyint 11

bit
10、または `NULL の値をとる整数型です。An integer data type that can take the value of 1, 0, or `NULL. SQL データ ウェアハウスSQL Data Warehouse はビット列の記憶域を最適化します。 optimizes storage of bit columns. テーブル内で 8 個以下のビット列がある場合は、列が 1 バイトとして格納されます。If there are 8 or fewer bit columns in a table, the columns are stored as 1 byte. 9 ~ 16 ビット列の場合、列は 2 バイトとしては保存されなど。If there are from 9-16 bit columns, the columns are stored as 2 bytes, and so on.

nvarchar [ ( n | max ) ] -- maxSQL データ ウェアハウスSQL Data Warehouse にのみ適用されます。nvarchar [ ( n | max ) ] -- max applies only to SQL データ ウェアハウスSQL Data Warehouse.
可変長の UNICODD 文字データです。Variable-length Unicode character data. n 1 ~ 4000 の値を指定できます。n can be a value from 1 through 4000. max は最大格納サイズが 2^31-1 バイト (2 GB) であることを示します。max indicates that the maximum storage size is 2^31-1 bytes (2 GB). 記憶域のサイズ (バイト単位) は、入力した + 2 バイトの 2 倍の数です。Storage size in bytes is two times the number of characters entered + 2 bytes. 入力データの長さは 0 文字でもかまいません。The data entered can be 0 characters in length.

nchar [ ( n ) ]nchar [ ( n ) ]
n 文字の長さを持つ、固定長の Unicode 文字データです。Fixed-length Unicode character data with a length of n characters. n には 14000 の値を指定する必要があります。n must be a value from 1 through 4000. ストレージのサイズは、n の 2 倍のバイト数です。The storage size is two times n bytes.

varchar [ ( n | max ) ] -- maxSQL データ ウェアハウスSQL Data Warehouse にのみ適用されます。varchar [ ( n | max ) ] -- max applies only to SQL データ ウェアハウスSQL Data Warehouse.
n バイトの長さを持つ、可変長の Unicode 以外の文字データです。Variable-length, non-Unicode character data with a length of n bytes. n には 18000 の値を指定する必要があります。n must be a value from 1 to 8000. max は最大記憶域サイズが 2^31-1 バイト (2 GB) であることを示します。記憶領域のサイズは、入力されたデータの実際の長さに 2 バイトを加えたものとなります。max indicates that the maximum storage size is 2^31-1 bytes (2 GB).The storage size is the actual length of data entered + 2 bytes.

char [ ( n ) ]char [ ( n ) ]
n バイトの長さを持つ、固定長の Unicode 以外の文字データです。Fixed-length, non-Unicode character data with a length of n bytes. n には 18000 の値を指定する必要があります。n must be a value from 1 to 8000. ストレージのサイズは n バイトです。The storage size is n bytes. n の既定値は 1 です。The default for n is 1.

varbinary [ ( n | max ) ] -- maxSQL データ ウェアハウスSQL Data Warehouse にのみ適用されます。varbinary [ ( n | max ) ] -- max applies only to SQL データ ウェアハウスSQL Data Warehouse.
可変長 binary データ。Variable-length binary data. n には、18000 の値を指定できます。n can be a value from 1 to 8000. max は最大格納サイズが 2^31-1 バイト (2 GB) であることを示します。max indicates that the maximum storage size is 2^31-1 bytes (2 GB). 記憶領域のサイズは、入力されたデータの実際の長さに 2 バイトを加えたものとなります。The storage size is the actual length of data entered + 2 bytes. n の既定値は 7 です。The default value for n is 7.

binary [ ( n ) ]binary [ ( n ) ]
n バイトの長さを持つ、固定長のバイナリ データです。Fixed-length binary data with a length of n bytes. n には、18000 の値を指定できます。n can be a value from 1 to 8000. ストレージのサイズは n バイトです。The storage size is n bytes. n の既定値は 7 です。The default value for n is 7.

uniqueidentifier
16 バイトの GUID です。Is a 16-byte GUID.

アクセス許可Permissions

テーブルを作成するには、db_ddladmin 固定データベース ロールでの権限、または次の権限が必要です。Creating a table requires permission in the db_ddladmin fixed database role, or:

  • データベースに対する CREATE TABLE 権限CREATE TABLE permission on the database
  • テーブルを含めるスキーマに対する ALTER SCHEMA 権限ALTER SCHEMA permission on the schema that will contain the table.

パーティション テーブルを作成するには、db_ddladmin 固定データベース ロールでの権限、または次の権限が必要です。Creating a partitioned table requires permission in the db_ddladmin fixed database role, or

  • ALTER ANY DATASPACE 権限ALTER ANY DATASPACE permission

    ローカル一時テーブルを作成するログインでは、テーブルに対する CONTROLINSERTSELECTUPDATE の各権限が受け入れられます。The login that creates a local temporary table receives CONTROL, INSERT, SELECT, and UPDATE permissions on the table.

全般的な解説General Remarks

最小値と最大値については、「SQL Data Warehouse の容量制限」を参照してください。For minimum and maximum limits, see SQL Data Warehouse capacity limits.

テーブルのパーティションの数を決定するDetermining the number of table partitions

各ユーザー定義テーブルは、複数の小さなテーブルに分割され、ディストリビューションと呼ばれる個々の場所に格納されるます。Each user-defined table is divided into multiple smaller tables which are stored in separate locations called distributions. SQL データ ウェアハウスSQL Data Warehouse では 60 のディストリビューションが使用されます。 uses 60 distributions. Parallel Data WarehouseParallel Data Warehouse において、ディストリビューションの数はコンピューティング ノードの数によって異なります。In Parallel Data WarehouseParallel Data Warehouse, the number of distributions depends on the number of Compute nodes.

各ディストリビューションには、すべてのテーブル パーティションが含まれます。Each distribution contains all table partitions. たとえば、60 のディストリビューションと 4 つのテーブル パーティションがある場合は、320 のパーティションが存在することになります。For example, if there are 60 distributions and four table partitions, there will be 320 partitions. テーブルがクラスター化列ストア インデックスである場合、パーティションごとに列ストア インデックスが 1 つ存在することになります。つまり、列ストア インデックスの数は 320 になります。If the table is a clustered columnstore index, there will be one columnstore index per partition which means you will have 320 columnstore indexes.

列ストア インデックスの利点を活用する上で十分な行が各列ストア インデックスに含まれるようにするために、使用するテーブル パーティションの数を少なくすることをお勧めします。We recommend using fewer table partitions to ensure each columnstore index has enough rows to take advantage of the benefits of columnstore indexes. 詳細については、「SQL Data Warehouse でのテーブルのパーティション分割」および SQL Data Warehouse でのテーブルのインデックス作成に関するページを参照してください。For further guidance, see Partitioning tables in SQL Data Warehouse and Indexing tables in SQL Data Warehouse

行ストア テーブル (ヒープまたはクラスター化インデックス)Rowstore table (heap or clustered index)

行ストア テーブルは、行単位で格納されるテーブルです。A rowstore table is a table stored in row-by-row order. ヒープまたはクラスター化インデックスが該当します。It is a heap or clustered index. SQL データ ウェアハウスSQL Data Warehouse では、ページ圧縮によってすべての行ストア テーブルを作成します。これはユーザー構成可能な設定ではありません。 creates all rowstore tables with page compression; this is not user-configurable.

列ストア テーブル (列ストア インデックス)Columnstore table (columnstore index)

列ストア テーブルは、列単位で格納されるテーブルです。A columnstore table is a table stored in column-by-column order. 列ストア インデックスは、列ストア テーブルに格納されているデータを管理する技術です。The columnstore index is the technology that manages data stored in a columnstore table. クラスター化列ストア インデックスはデータの配布方法には影響しませんが、各ディストリビューションへのデータの格納方法に影響します。The clustered columnstore index does not affect how data are distributed; it affects how the data are stored within each distribution.

行ストア テーブルを列ストア テーブルに変更するには、テーブル上の既存のインデックスをすべて削除してから、クラスター化列ストア インデックスを作成します。To change a rowstore table to a columnstore table, drop all existing indexes on the table and create a clustered columnstore index. 例については、「CREATE COLUMNSTORE INDEX (Transact-SQL)」を参照してください。For an example, see CREATE COLUMNSTORE INDEX (Transact-SQL).

詳細については、次の記事を参照してください。For more information, see these articles:

制限事項と制約事項Limitations and Restrictions

ディストリビューション列の既定の制約を定義することはできません。You cannot define a DEFAULT constraint on a distribution column.

[メジャー グループ]Partitions

パーティションを使用する場合、パーティション列は、Unicode 専用の照合順序はできません。When using partitions, the partition column cannot have a Unicode-only collation. たとえば、次のステートメントは失敗します。For example, the following statement fails.

CREATE TABLE t1 ( c1 varchar(20) COLLATE Divehi_90_CI_AS_KS_WS) WITH (PARTITION (c1 RANGE FOR VALUES (N'')))

boundary_valuepartition_column_name 内のデータ型に暗黙的に変換する必要があるリテラル値である場合は、矛盾が発生します。If boundary_value is a literal value that must be implicitly converted to the data type in partition_column_name, a discrepancy will occur. リテラルは SQL データ ウェアハウスSQL Data Warehouse システム ビューを通して表示されますが、変換後の値は Transact-SQLTransact-SQL の操作で使用されます。The literal value is displayed through the SQL データ ウェアハウスSQL Data Warehouse system views, but the converted value is used for Transact-SQLTransact-SQL operations.

一時テーブルTemporary tables

グローバルの一時テーブルで始まる ## はサポートされていません。Global temporary tables that begin with ## are not supported.

ローカル一時テーブルには、次のような制限事項と制約があります。Local temporary tables have the following limitations and restrictions:

  • 現在のセッションにのみ表示されます。They are visible only to the current session. SQL データ ウェアハウスSQL Data Warehouse では、セッションの終了時にローカル一時テーブルを自動的に削除します。 drops them automatically at the end of the session. 明示的に削除するには、DROP TABLE ステートメントを使用します。To drop them explicitlt, use the DROP TABLE statement.
  • 名前変更できません。They cannot be renamed.
  • これらは、パーティションまたはビューにはできません。They cannot have partitions or views.
  • そのアクセス許可を変更することはできません。Their permissions cannot be changed. ローカル一時テーブルでは、GRANTDENY、および REVOKE ステートメントを使用できません。GRANT, DENY, and REVOKE statements cannot be used with local temporary tables.
  • データベース コンソール コマンドは、一時テーブルがブロックされます。Database console commands are blocked for temporary tables.
  • バッチ内で 1 つ以上のローカル一時テーブルを使用した場合、一意の名前でそれぞれ必要があります。If more than one local temporary table is used within a batch, each must have a unique name. 複数のセッションが同じバッチを実行していて、同じローカル一時テーブルを作成する場合、 SQL データ ウェアハウスSQL Data Warehouse の内部では、ローカル一時テーブルごとに一意の名前を維持するために、ローカル一時テーブル名に数値サフィックスを追加します。If multiple sessions are running the same batch and creating the same local temporary table, SQL データ ウェアハウスSQL Data Warehouse internally appends a numeric suffix to the local temporary table name to maintain a unique name for each local temporary table.

ロック動作Locking behavior

テーブルに排他ロックを取得します。Takes an exclusive lock on the table. データベース、スキーマ、および SCHEMARESOLUTION オブジェクト上には、共有ロックを取得します。Takes a shared lock on the DATABASE, SCHEMA, and SCHEMARESOLUTION objects.

列の例Examples for columns

A.A. 列の照合順序を指定します。Specify a column collation

次の例では、テーブル MyTable を 2 つの異なる列照合順序で作成します。In the following example, the table MyTable is created with two different column collations. 既定では、列 mycolumn1 の既定の照合順序は Latin1_General_100_CI_AS_KS_WS となります。By default, the column, mycolumn1, has the default collation Latin1_General_100_CI_AS_KS_WS. mycolumn2 の照合順序は Frisian_100_CS_AS となります。The column, mycolumn2 has the collation Frisian_100_CS_AS.

CREATE TABLE MyTable   
  (  
    mycolumnnn1 nvarchar,  
    mycolumn2 nvarchar COLLATE Frisian_100_CS_AS )  
WITH ( CLUSTERED COLUMNSTORE INDEX )  
;  

B.B. 列に既定の制約を指定します。Specify a DEFAULT constraint for a column

次の例では、列の既定値を指定する構文を示します。The following example shows the syntax to specify a default value for a column. コーラの列が constraint_colA と、既定値は 0 という名前の既定の制約です。The colA column has a default constraint named constraint_colA and a default value of 0.


CREATE TABLE MyTable   
  (  
    colA int CONSTRAINT constraint_colA DEFAULT 0,  
    colB nvarchar COLLATE Frisian_100_CS_AS   
  )  
WITH ( CLUSTERED COLUMNSTORE INDEX )  
;  

一時テーブルの例Examples for temporary tables

C.C. ローカル一時テーブルを作成します。Create a local temporary table

次に、#myTable をという名前のローカル一時テーブルを作成します。The following creates a local temporary table named #myTable. テーブルは、3 部構成の名前を指定します。The table is specified with a 3-part name. 一時テーブル名は # で開始します。The temporary table name starts with a #.

CREATE TABLE AdventureWorks.dbo.#myTable   
  (  
   id int NOT NULL,  
   lastName varchar(20),  
   zipCode varchar(6)  
  )  
WITH  
  (   
    DISTRIBUTION = HASH (id),  
    CLUSTERED COLUMNSTORE INDEX   
  )  
;  

テーブル構造の例Examples for table structure

D.D. クラスター化列ストア インデックスを持つテーブルを作成します。Create a table with a clustered columnstore index

次の例では、クラスター化列ストア インデックスを持つ分散型のテーブルを作成します。The following example creates a distributed table with a clustered columnstore index. 各配布は、列ストアとして格納されます。Each distribution will be stored as a columnstore.

クラスター化列ストア インデックスには影響しませんデータを配布する方法です。データは、行を常に分散されます。The clustered columnstore index does not affect how the data is distributed; data is always distributed by row. クラスター化列ストア インデックスでは、各配布内でのデータの格納方法に影響します。The clustered columnstore index affects how the data is stored within each distribution.


CREATE TABLE MyTable   
  (  
    colA int CONSTRAINT constraint_colA DEFAULT 0,  
    colB nvarchar COLLATE Frisian_100_CS_AS   
  )  
WITH   
  (   
    DISTRIBUTION = HASH ( colB ),  
    CLUSTERED COLUMNSTORE INDEX   
  )  
;  

テーブルの分散例Examples for table distribution

E.E. ROUND_ROBIN テーブルを作成します。Create a ROUND_ROBIN table

次の例は、3 つの列と、パーティションを使わない ROUND_ROBIN テーブルを作成します。The following example creates a ROUND_ROBIN table with three columns and without partitions. データはすべてのディストリビューションに分散されます。The data is spread across all distributions. クラスター化列ストア インデックス、ヒープまたは行ストア クラスター化インデックスよりも優れたパフォーマンスとデータ圧縮機能を提供する、テーブルが作成されます。The table is created with a CLUSTERED COLUMNSTORE INDEX, which gives better performance and data compression than a heap or rowstore clustered index.

CREATE TABLE myTable   
  (  
    id int NOT NULL,  
    lastName varchar(20),  
    zipCode varchar(6)  
  )  
WITH ( CLUSTERED COLUMNSTORE INDEX );  

F.F. ハッシュ分散のテーブルを作成します。Create a hash-distributed table

次の例では、前の例と同じテーブルを作成します。The following example creates the same table as the previous example. ただし、このテーブルの場合、行は ROUND_ROBIN テーブルのようにランダムに分散されるのではなく、(id 列上に) 配布されます。However, for this table, rows are distributed (on the id column) instead of randomly spread like a ROUND_ROBIN table. クラスター化列ストア インデックス、ヒープまたは行ストア クラスター化インデックスよりも優れたパフォーマンスとデータ圧縮機能を提供する、テーブルが作成されます。The table is created with a CLUSTERED COLUMNSTORE INDEX, which gives better performance and data compression than a heap or rowstore clustered index.

CREATE TABLE myTable   
  (  
    id int NOT NULL,  
    lastName varchar(20),  
    zipCode varchar(6)  
  )  
WITH  
  (   
    DISTRIBUTION = HASH (id),   
    CLUSTERED COLUMNSTORE INDEX  
  );  

G.G. レプリケート テーブルを作成します。Create a replicated table

次の例では、前の例のようなレプリケート テーブルを作成します。The following example creates a replicated table similar to the previous examples. レプリケート テーブルは、各計算ノードに完全にコピーされます。Replicated tables are copied in full to each Compute node. 各計算ノードにこのコピーがあれば、クエリにおけるデータ移動を減らすことができます。With this copy on each Compute node, data movement is reduced for queries. この例は CLUSTERED INDEX を使用して作成されます。この場合、ヒープよりも優れたデータ圧縮が得られますが、行数不足のために適切な CLUSTERED COLUMNSTORE INDEX 圧縮を達成できないことがあります。This example is created with a CLUSTERED INDEX, which gives better data compression than a heap and may not contain enough rows to achieve good CLUSTERED COLUMNSTORE INDEX compression.

CREATE TABLE myTable   
  (  
    id int NOT NULL,  
    lastName varchar(20),  
    zipCode varchar(6)  
  )  
WITH  
  (   
    DISTRIBUTION = REPLICATE,   
    CLUSTERED INDEX (lastName)  
  );  

テーブル パーティションの例Examples for table partitions

H.H. パーティション テーブルを作成します。Create a partitioned table

次の例では、例 A で示したのと同じテーブルを作成し、id 列に RANGE LEFT パーティションを追加します。The following example creates the same table as shown in example A, with the addition of RANGE LEFT partitioning on the id column. その結果は 5 つのパーティションに 4 つのパーティションの境界値を指定します。It specifies four partition boundary values, which results in five partitions.

CREATE TABLE myTable   
  (  
    id int NOT NULL,  
    lastName varchar(20),  
    zipCode int)  
WITH   
  (   

    PARTITION ( id RANGE LEFT FOR VALUES (10, 20, 30, 40 )),  
    CLUSTERED COLUMNSTORE INDEX      
  )  
;  

この例では、データが次のパーティションに並べ替えられます。In this example, data will be sorted into the following partitions:

  • パーティション 1: col < = 10Partition 1: col <= 10
  • パーティション 2時 10分 < col < = 20Partition 2: 10 < col <= 20
  • パーティション 3時 20分 < col < = 30Partition 3: 20 < col <= 30
  • パーティション 4時 30分 < col < = 40Partition 4: 30 < col <= 40
  • パーティション 5時 40分 < colPartition 5: 40 < col

    この同じテーブルがパーティション分割されている場合は、次のパーティションに RANGE LEFT (既定値) の場合、データの代わりに、RANGE RIGHT が並べ替えられます。If this same table was partitioned RANGE RIGHT instead of RANGE LEFT (default), the data will be sorted into the following partitions:

  • パーティション 1: col < 10Partition 1: col < 10

  • パーティション 2時 10分 < = col < 20Partition 2: 10 <= col < 20
  • パーティション 3時 20分 < = col < 30Partition 3: 20 <= col < 30
  • パーティション 4時 30分 < = col < 40Partition 4: 30 <= col < 40
  • パーティション 5時 40分 < = colPartition 5: 40 <= col

I.I. 1 つのパーティションを持つパーティション テーブルを作成します。Create a partitioned table with one partition

次の例では、1 つのパーティションをパーティション テーブルを作成します。The following example creates a partitioned table with one partition. 指定しません任意の境界値では、1 つのパーティションになります。It does not specify any boundary values, which results in one partition.

CREATE TABLE myTable (  
    id int NOT NULL,  
    lastName varchar(20),  
    zipCode int)  
WITH   
    (   
      PARTITION ( id RANGE LEFT FOR VALUES ( )),  
      CLUSTERED COLUMNSTORE INDEX  
    )  
;  

J.J. 日付でパーティション分割テーブルを作成します。Create a table with date partitioning

次の例では、myTable という名前の新しいテーブルを作成し、date 列に基づいてパーティション分割を行います。The following example creates a new table named myTable, with partitioning on a date column. 境界値の範囲の右側と日付を使用するは、各パーティション内の月のデータを格納します。By using RANGE RIGHT and dates for the boundary values, it puts a month of data in each partition.

CREATE TABLE myTable (  
    l_orderkey      bigint,       
    l_partkey       bigint,                                             
    l_suppkey       bigint,                                           
    l_linenumber    bigint,        
    l_quantity      decimal(15,2),  
    l_extendedprice decimal(15,2),  
    l_discount      decimal(15,2),  
    l_tax           decimal(15,2),  
    l_returnflag    char(1),  
    l_linestatus    char(1),  
    l_shipdate      date,  
    l_commitdate    date,  
    l_receiptdate   date,  
    l_shipinstruct  char(25),  
    l_shipmode      char(10),  
    l_comment       varchar(44))  
WITH   
  (   
    DISTRIBUTION = HASH (l_orderkey),  
    CLUSTERED COLUMNSTORE INDEX,  
    PARTITION ( l_shipdate  RANGE RIGHT FOR VALUES   
      (  
        '1992-01-01','1992-02-01','1992-03-01','1992-04-01','1992-05-01',
        '1992-06-01','1992-07-01','1992-08-01','1992-09-01','1992-10-01',
        '1992-11-01','1992-12-01','1993-01-01','1993-02-01','1993-03-01',
        '1993-04-01','1993-05-01','1993-06-01','1993-07-01','1993-08-01',
        '1993-09-01','1993-10-01','1993-11-01','1993-12-01','1994-01-01',
        '1994-02-01','1994-03-01','1994-04-01','1994-05-01','1994-06-01',
        '1994-07-01','1994-08-01','1994-09-01','1994-10-01','1994-11-01',
        '1994-12-01'  
      ))
  );  

参照See also

CREATE TABLE AS SELECT (Azure SQL Data Warehouse) CREATE TABLE AS SELECT (Azure SQL Data Warehouse)
DROP TABLE (Transact-SQL) DROP TABLE (Transact-SQL)
ALTER TABLE (Transact-SQL)ALTER TABLE (Transact-SQL)