Apache Cassandra Query Language (CQL)
SPECIFICATION 3.1.0
REFERENCE GUIDE - P.1
ALTER KEYSPACE
ALTER ( KEYSPACE | SCHEMA TM
) keyspace_name
WITH REPLICATION = map
| ( WITH DURABLE_WRITES = ( true | false ))
AND ( DURABLE_WRITES = ( true | false ))
CREATE KEYSPACE
CREATE ( KEYSPACE | SCHEMA ) IF NOT EXISTS keyspace_name
WITH REPLICATION = map
AND DURABLE_WRITES = ( true | false )
map is described in ALTER KEYSPACE.
map is a map collection, a JSON-style array of literals:
{ literal : literal, literal : literal ... }
CREATE TABLE
ALTER TABLE
ALTER TABLE keyspace_name.table_name instruction
instruction is:
ALTER column_name TYPE cql_type
| ( ADD column_name cql_type )
| ( DROP column_name )
| ( RENAME column_name TO column_name )
| ( WITH property AND property ... )
column_definition is:
column_name cql_type PRIMARY KEY
| ( PRIMARY KEY ( partition_key ) )
Restrictions:
There should always be exactly one primary key denition.
cql_type of the primary key must be a custom type or a CQL type (see last page),
other than a collection type.
cql_type of a collection uses this syntax:
cql_type is a CQL type, other than a collection orcounter.
Exceptions: ADD supports a collection type and also, if the table
is a counter, a counter type.
LIST<cql_type>
| SET<cql_type>
| MAP<cql_type, cql_type>
property is a CQL 3 table storage property (p. 3) and value,
such as caching = all.
ALTER USER
ALTER USER user_name WITH PASSWORD 'password'
( NOSUPERUSER | SUPERUSER )
BATCH
BEGIN BATCH ( UNLOGGED | COUNTER )
USING TIMESTAMP timestamp
dml_statement;
dml_statement;
...
APPLY BATCH;
PRIMARY KEY is:
column_name
| ( column_name1, column_name2, column_name3 ...)
| ((column_name4, column_name5), column_name6,
column_name7 ...)
column_name1 is the partition key.
column_name2, column_name3 ... are clustering keys.
column_name4, column_name5 are partitioning keys.
column_name6, column_name7 ... are clustering keys.
dml_statement is:
INSERT
UPDATE
DELETE
CREATE INDEX
CREATE TABLE IF NOT EXISTS keyspace_name.table_name
( column_definition, column_definition, ...)
WITH property AND property ...
property is a CQL table storage property or one of these directives:
COMPACT STORAGE
| ( CLUSTERING ORDER BY (clustering_key ( ASC | DESC ), ...)
CREATE CUSTOM INDEX IF NOT EXISTS index_name
ON keyspace_name.table_name (column_name)
USING class_name
CREATE TRIGGER
CREATE TRIGGER trigger_name ON table_name
USING java_class
Restrictions:
USING class_name is only allowed if CUSTOM is used and
class_name is a string literal containing a java class name.
CREATE USER
CREATE USER user_name WITH PASSWORD 'password'
NOSUPERUSER | SUPERUSER
index_name is an identier, enclosed or not enclosed in double
quotation marks, excluding reserved words.
LEGEND:
* Uppercase means literal * Lowercase means not literal * Italics mean optional * The pipe (|) symbol means OR or AND/OR * Ellipsis (...) means repeatable * orange ( ) indicate scope, not literal
Apache Cassandra Query Language (CQL)
SPECIFICATION 3.1.0
REFERENCE GUIDE - P.2
DELETE
DELETE column_name, ... | ( column_name term )
FROM keyspace_name.table_nameTM
USING TIMESTAMP integer
WHERE row_specification
term is:
[ list_position ] | key_value
value is one of:
a literal
a set
{ literal, literal, ... }
a list
[ literal, literal, ... ]
a map, described in ALTER KEYSPACE
row_specication is one of:
primary_key_name = key_value
primary_key_name IN ( key_value, key_value, ...)
option is one of:
TIMESTAMP microseconds
TTL seconds
INSERT (continued)
LIST PERMISSIONS
DROP INDEX
DROP INDEX IF EXISTS index_name
DROP KEYSPACE
DROP ( KEYSPACE | SCHEMA ) IF EXISTS keyspace_name
LIST permission_name PERMISSION
| ( LIST ALL PERMISSIONS )
ON resource OF user_name
NORECURSIVE
permission_name and resource are shown in GRANT.
DROP TABLE
DROP TABLE IF EXISTS keyspace_name.table_name
DROP TRIGGER
DROP TRIGGER trigger_name ON table_name
DROP USER
DROP USER user_name
LIST USERS
LIST USERS
REVOKE
REVOKE ( permission_name PERMISSION )
| ( ALL PERMISSIONS )
ON resource FROM user_name
permission_name and resource are shown in GRANT.
GRANT
GRANT permission_name PERMISSION
| ( GRANT ALL PERMISSIONS ) ON resource TO user_name
SELECT
permission_name is one of:
ALL
ALTER
AUTHORIZE
CREATE
DROP
MODIFY
SELECT
select_expression is:
selection_list | ( COUNT ( * | 1 ) )
selection_list is:
selector AS alias, selector AS alias, ... | *
resource is one of:
ALL KEYSPACES
KEYSPACE keyspace_name
TABLEkeyspace_name.table_name
alias is an alias for a column.
selector is:
column_name
| ( WRITETIME (column_name) )
| TTL
| ( TTL (column_name) )
| ( function (selector, selector, ...) )
INSERT INTO keyspace_name.table_name
( column_name, column_name ... )
VALUES ( value, value, ... ) IF NOT EXISTS
USING option AND option
INSERT
(continued)
(continued)
LEGEND:
SELECT select_expression
FROM keyspace_name.table_name
WHERE relation AND relation ...
ORDER BY (clustering_key ( ASC | DESC ), ... )
LIMIT n
ALLOW FILTERING
* Uppercase means literal * Lowercase means not literal * Italics mean optional * The pipe (|) symbol means OR or AND/OR * Ellipsis (...) means repeatable * orange ( ) indicate scope, not literal
Apache Cassandra Query Language (CQL)
SPECIFICATION 3.1.0
REFERENCE GUIDE - P.3
SELECT (continued)
function is a timeuuid function, a
TMtoken function, or a blob
conversion function.
CQL Table Storage Properties
relation is:
column_name ( = | < | > | <= | >= ) key_value
| column_name IN ( ( key_value, ... ) )
| TOKEN ( column_name, ... ) ( = | < | > | <= | >= )
( term | TOKEN ( term, ... ) )
bloom_filter_fp_chance
Desired false-positive probability for SSTable Bloom lters.
caching
Cache memory settings. Values: all, keys_only, rows_only, none.
comment
A human readable comment describing the table.
term is a constant, such as a true or false, a bind marker (?),
or a set, list, or map.
TRUNCATE
TRUNCATE keyspace_name.table_name
UPDATE
UPDATE keyspace_name.table_name
USING option AND option
SET assignment, assignment ...
WHERE row_specification
IF column_name = literal
AND column_name = literal ...
compaction
Options for SSTable compaction:
bucket_high
bucket_low
max_threshold
min_threshold
min_sstable_size
sstable_size_in_mb
tombstone_compaction_interval
tombstone_threshold
option is one of:
TIMESTAMP microseconds
TTL seconds
compression
The compression algorithm and subproperties for the table:
sstable_compression
chunk_length_kb
crc_check_chance
assignment is one of:
column_name = value
set_or_list_item = set_or_list_item (+ | -) ...
map_name = map_name (+ | -) ...
column_name [ term ] = value
counter_column_name = counter_column_name
( + | - ) integer
default_time_to_live
The default expiration time in seconds for a table. Used in MapReduce/Hive
scenarios in which you have no control of TTL.
dclocal_read_repair_chance
The probability of read repairs being invoked over all replicas in the current data
center.
set, list, map are dened in INSERT.
gc_grace_seconds
The time to wait before garbage collecting tombstones (deletion markers).
term is:
[ list_position ] | key_value
index_interval
The number of keys that are sampled to create the partition summary, a subset
of the partition index.
row_specification is one of:
primary_key_name = key_value
primary_key_name IN (key_value ,...)
USE
memtable_flush_period_in_ms
Forces flushing of the memtable after the number of specied milliseconds
elapses.
USE keyspace_name
populate_io_cache_on_flush
Populates the page cache on memtable flush and compaction. Enable only
when all data on the node ts in memory. Defaults is false. Used to t only one
of several tables inside single keyspace.
LEGEND:
* Uppercase means literal * Lowercase means not literal * Italics mean optional * The pipe (|) symbol means OR or AND/OR * Ellipsis (...) means repeatable * orange ( ) indicate scope, not literal
Apache Cassandra Query Language (CQL)
SPECIFICATION 3.1.0
REFERENCE GUIDE - P.4
CQL Table Storage Properties (continued)
Syntax elements
TM
read_repair_chance
Species the probability for invoking read repairs on non-quorum reads.
Generally, the elements used in the command syntax have the following
denitions. A few elements have a slightly different meaning when used with a
particular command and are redened in the synopsis of the command.
replicate_on_write
Writes counter table data to all affected replicas regardless of the consistency
level specied by the client for a write request.
clustering_key
Columns in addition to the partitioning key component of a primary key that
determine clustering.
speculative_retry
Overrides normal read timeout when read_repair is not 1.0, sending another
request to read. Options:
ALL Retry reads of all replicas.
Xpercentile Retry reads based on the effect on throughput and latency.
Yms Retry reads after specified milliseconds
NONE Do not retry reads.
column_name
Alphanumeric column name, case-insensitive unless enclosed in double
quotation marks. No reserved keywords. Unreserved keywords enclosed in
quotation marks are ok. Enclose names having unparseable characters in
double quotation marks.
constant
A string, integer, float, boolean, UUID, or blob.
counter_column_name
A column_name of a column of type counter.
Functions
keyspace_name
A keyspace name, starting with an alpha character, consisting of 32 or fewer
alpha-numeric characters and underscores. Case-insensitive unless enclosed
in double quotation marks.
Blob conversion
Converts native types into binary data (blob).
typeAsBlob() takes a native type and returns it as a blob
bigintAsBlob(3) returns 0x0000000000000003
blobAsType takes a 64-bit blob argument and converts it to a bigint value
blobAsBigint(0x0000000000000003) returns 3
key_value
The value of a primary key.
literal
Data that is of a supported data type
Float constant in E notation
Numeric constant
A letter, followed by any sequence of letters, digits, or the underscore
A string, characters enclosed in single quotation marks
Whitespace that separates of terms, otherwise ignored
dateOf()
Used in a SELECT clause to extract the timestamp of a timeuuid column in a
resultset. Returns the extracted timestamp as a date.
minTimeuuid() and maxTimeuuid()
Returns a UUID-like result given a conditional time component as an argument.
Example:
SELECT * FROM myTable
WHERE t > maxTimeuuid('2013-01-01 00:05+0000')
AND t < minTimeuuid('2013-02-02 10:00+0000')
partitioning_key
The primary key column that determines on which node data is stored.
property
A CQL storage property, such as caching = "all".
now()
Generates a new unique timeuuid, useful for inserting values. Returns a unique
value.
table_name
Valid table names are strings of alphanumeric characters and underscores,
which begin with a letter.
unixTimestampOf()
Used in a SELECT clause to extract the timestamp of a timeuuid column in a
resultset. Returns a raw, 64-bit integer timestamp.
timestamp
Microseconds representing the standard base time since epoch: January 1
1970 at 00:00:00 GMT.
variable
A bind variable, such as ?, used with a prepared statement.
LEGEND:
* Uppercase means literal * Lowercase means not literal * Italics mean optional * The pipe (|) symbol means OR or AND/OR * Ellipsis (...) means repeatable * orange ( ) indicate scope, not literal
Apache Cassandra Query Language (CQL)
SPECIFICATION 3.1.0
REFERENCE GUIDE - SUPPORTED DATA TYPES
CQL Type
Description
ASCII
US-ASCII character string
BIGINT
64-bit signed long
BLOB
Arbitrary bytes (no validation), expressed as hexadecimal
BOOLEAN
true or false
COUNTER
Distributed counter value (64-bit long)
DECIMAL
Variable-precision decimal
DOUBLE
64-bit IEEE-754 floating point
FLOAT
32-bit IEEE-754 floating point
INET
IP address string in IPv4 or IPv6 form
INT
32-bit signed integer
LIST
A collection of one or more ordered elements
MAP
A collection of one or more timestamp, value pairs
SET
A collection of one or more elements
TEXT
UTF-8 encoded string
TIMESTAMP
Date plus time, encoded as 8 bytes since epoch
UUID
A UUID in standard UUID format
TIMEUUID
Type 1 UUID only
VARCHAR
UTF-8 encoded string
VARINT
Arbitrary-precision integer
Office Locations
DATASTAX HQ - SF BAY AREA
777 Mariners Island Blvd #510
San Mateo, CA 94404
650-389-6000
LEGEND:
DATASTAX TX
902 East 5th St. #202
Austin, TX 78702
512-537-7809
* Uppercase means literal * Lowercase means not literal * Italics mean optional * The pipe (|) symbol means OR or AND/OR * Ellipsis (...) means repeatable * orange ( ) indicate scope, not literal