0% found this document useful (0 votes)
204 views

Apache Cassandra Query Language (CQL)

This document provides a reference guide for the Apache Cassandra Query Language (CQL) specification version 3.1.0. It summarizes the syntax and usage of various CQL commands such as ALTER KEYSPACE, CREATE KEYSPACE, CREATE TABLE, SELECT, INSERT, UPDATE, DELETE, BATCH, and more. It also defines common elements used in the CQL syntax such as keyspace_name, column_name, and constants.

Uploaded by

saty_matos
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
204 views

Apache Cassandra Query Language (CQL)

This document provides a reference guide for the Apache Cassandra Query Language (CQL) specification version 3.1.0. It summarizes the syntax and usage of various CQL commands such as ALTER KEYSPACE, CREATE KEYSPACE, CREATE TABLE, SELECT, INSERT, UPDATE, DELETE, BATCH, and more. It also defines common elements used in the CQL syntax such as keyspace_name, column_name, and constants.

Uploaded by

saty_matos
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 1

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

You might also like