CREATE TABLE

新しいテーブルを定義します。

新しいテーブルを定義します。

構文

CREATE TABLE IF NOT EXISTS keyspace_name.table_name ( column_definition, column_definition, ...) WITH property AND property ...
以下はCassandra 2.1.3+のcolumn_definitionです。
column_name cql_type STATIC PRIMARY KEY | column_name <tuple<tuple_type> tuple<tuple_type>...> PRIMARY KEY | column_name frozen<user-defined_type> PRIMARY KEY | column_name frozen<collection_name><collection_type>...PRIMARY KEY |(PRIMARY KEY ( partition_key ))
注: プライマリ・キー・カラムに対してfrozen以外のコレクションを使用することはできません。ただし、プライマリ・キー・カラムにはfrozenコレクションを使用できます。

以下はCassandra 2.1.0〜2.1.2のcolumn_definitionです。

column_name cql_type STATIC PRIMARY KEY | column_name frozen<tuple<tuple_type> tuple<tuple_type>...> PRIMARY KEY | column_name frozen<user-defined_type> PRIMARY KEY | column_name frozen<collection> PRIMARY KEY |(PRIMARY KEY ( partition_key ))

以下はCassandra 2.0.x column_definitionです。

column_name cql_type STATIC PRIMARY KEY |(PRIMARY KEY ( partition_key ))
制限事項:
  • プライマリ・キー定義は常に1つだけ存在する必要があります。
  • プライマリ・キーのcql_typeは、CQLデータ型またはユーザー定義型でなければなりません。
  • コレクションのcql_typeは、以下の構文を使用します。
    LIST<cql_type> | SET<cql_type> | MAP<cql_type, cql_type>
  • Cassandra 2.1の場合のみ、タプル型およびユーザー定義型には、frozenキーワードとその後に山かっこで囲んだ型が必要です。

以下はPRIMARY KEYです。

column_name | ( column_name1, column_name2, column_name3 ...) | ((column_name4, column_name5), column_name6, column_name7 ...)

column_name1はパーティション・キーです。

column_name2, column_name3 ...はクラスター化カラムです。

column_name4, column_name5はパーティション・キーです。

column_name6, column_name7 ...はクラスター化カラムです。

propertyは、文字列の場合は単一引用符で囲まれているCQLテーブル・プロパティか、または以下のいずれかのディレクティブです。

COMPACT STORAGE |(CLUSTERING ORDER BY (clustering_column(ASC) | DESC), ...))

構文の凡例

  • 大文字はリテラルを意味する
  • 小文字は、リテラルでないことを意味する
  • イタリック体は指定が任意であることを意味する
  • パイプ(|)記号はORまたはAND/ORを意味する
  • 省略記号(...)は繰り返し可能を意味する
  • 範囲記号「(」および「)」はリテラルではなく、範囲を示す

この構文には、CQL文の終了となるセミコロンは含まれていません。

説明

CREATE TABLEは、現在のキースペースの下に新しいテーブルを作成します。別名であるCREATE COLUMNFAMILYを使用することもできます。

Cassandra 2.1.1以降では、トリガーの作成に対してIF NOT EXISTS構文がサポートされています。既存のテーブルを作成しようとすると、IF NOT EXISTSオプションを使用していない限りエラーが返されます。このオプションを使用すると、すでにそのテーブルが存在していれば、この文は何もしません。

Cassandra 2.0.6以降では、静的(STATIC)カラムを使用して、同じデータをパーティションのクラスター化された複数の行に格納し、1つのSELECT文でそのデータを取得できます。

Cassandra 2.1で改善されたカウンター・カラムをテーブルに追加できます。

カラムの定義

テーブル作成の際にカラムに型を割り当てます。コレクション型カラムを除くカラム型は、カラム名と型のペアを、丸かっこで囲んだコンマ区切りリストとして指定します。

この例は、コレクション・カラムとタプルを含むテーブルの作成方法を示します。

CREATE TABLE users ( userid text PRIMARY KEY, first_name text, last_name text, emails set<text>, top_scores list<int>, todo map<timestamp, text>, tuple<int, text,text> );

UDTの作成方法については、「ユーザー定義型の作成」を参照してください。この例は、テーブル内でのUDTの使用を示します。

CREATE TYPE fullname ( firstname text, lastname text ); CREATE TABLE users ( userid text PRIMARY KEY, username FROZEN<fullname>, emails set<text>, top_scores list<int>, todo map<timestamp, text>, tuple<int, text,text> );

コンパクト・ストレージの使用

ディスク領域を節約する必要がある場合は、データを従来の(Thrift)ストレージ・エンジン形式で格納するWITH COMPACT STORAGEディレクティブを使用します。

CREATE TABLE sblocks ( block_id uuid, subblock_id uuid, data blob, PRIMARY KEY (block_id, subblock_id) ) WITH COMPACT STORAGE;