CREATE TABLE
新しいテーブルを定義します。
新しいテーブルを定義します。
構文
CREATE TABLE IF NOT EXISTS keyspace_name.table_name ( column_definition, column_definition, ...) WITH property AND property ...
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 ))
以下は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 ))
以下は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;