CQL quick reference

See this quick reference guide for other CQL versions: 5.1 | 6.0.

Download a printable CQL reference with the ten most frequently use CQL commands and a list of the CQL data types.

ALTER KEYSPACE

cql
ALTER KEYSPACE <keyspace_name>
  WITH REPLICATION = { <replication_map> }
  [ AND DURABLE_WRITES = ( true | false ) ]
  [ AND graph_engine =  'Core' ];

ALTER MATERIALIZED VIEW

cql
ALTER MATERIALIZED VIEW [<keyspace_name>.]<view_name>
  WITH <table_options> [ AND <table_options> ... ] ;

ALTER ROLE

cql
ALTER ROLE <role_name>
  ( WITH PASSWORD = '<role_password>'
  ifdef::dse69,dse68,cass50[]
  | WITH HASHED PASSWORD = '<hashed_role_password>'
  endif::dse69,dse68,cass50[]
  [ [ WITH | AND ] LOGIN = ( true | false ) ]
  [ [ WITH | AND ] SUPERUSER = ( true | false ) ]
    ifdef::cass50[]
  [ ( WITH | AND ) ACCESS TO DATACENTERS { 'dc_name' } | ( WITH | AND ) ACCESS TO ALL DATACENTERS
  | ( WITH | AND ) ACCESS FROM CIDRS { 'region1' } | ( WITH | AND ) ACCESS FROM ALL CIDRS']
  endif::cass50[]
  [ [ WITH | AND ] OPTIONS = { <custom_options_map> } ] ] ;

ALTER SEARCH INDEX CONFIG

cql
ALTER SEARCH INDEX CONFIG ON [<keyspace_name>]<table_name>
  ( ADD <element_path> [ <attribute_list> ] WITH $$ <json_map> $$
  | SET <element_identifier> = '<value>'
  | SET <shortcut> = <value>
  | DROP <element_identifier>
  | DROP <shortcut> ) ;

ALTER SEARCH INDEX SCHEMA

cql
ALTER SEARCH INDEX SCHEMA ON [<keyspace_name>.]<table_name>
  ( ADD <field column_name>
  | ADD <element_path> [ <attribute_list> ] WITH $$ <json_map> $$
  | SET <element_identifier> = '<value>'
  | DROP <field field_name>
  | DROP <element_identifier> ) ;

ALTER TABLE

cql
ALTER TABLE [<keyspace_name>.]<table_name>
  [ ADD ( <column_definition> | <column_definition_list> ) [ , ... ] ]
  [ DROP <column_name> [ , ... ] ]
  [ [ RENAME <column_name> TO <column_name> ] |
    [ RENAME ( VERTEX LABEL | EDGE LABEL ) TO <new_name> ] ]
  [ WITH <table_properties> [ , ... ] ]
  [ WITH ( VERTEX LABEL | EDGE LABEL ) <current_name> ]
  [ WITHOUT ( VERTEX LABEL | EDGE LABEL ) <current_name> ];

ALTER TYPE

cql
ALTER TYPE <field_name>
  ( ADD <field_name> <cql_datatype>
  | RENAME <field_name> TO <<<new_field_name> [ AND <field_name> TO <new_field_name> ...] ) ;

BATCH

cql
BEGIN [ ( UNLOGGED | LOGGED ) ] BATCH
  [ USING TIMESTAMP [ <epoch_microseconds> ] ]
  <dml_statement> [ USING TIMESTAMP [ <epoch_microseconds> ] ] ;
  [ <dml_statement> [ USING TIMESTAMP [ <epoch_microseconds> ] ] [ ; ... ] ] ;
  APPLY BATCH ;

COMMIT SEARCH INDEX

cql
COMMIT SEARCH INDEX ON [<keyspace_name>.]<table_name> ;

CREATE AGGREGATE

cql
CREATE [ OR REPLACE ] AGGREGATE [ IF NOT EXISTS ]
  [<keyspace_name>.]<aggregate_name> (<cql_type>)
  SFUNC <udf_name>
  STYPE <cql_type>
  FINALFUNC <udf_name>
  INITCOND <init_value>
  [ DETERMINISTIC ] ;

CREATE CUSTOM INDEX

cql
CREATE CUSTOM INDEX [ IF NOT EXISTS ] [ <index_name> ]
  ON [ <keyspace_name>.]<table_name> (<column_name>)
    | [ (KEYS(<map_name>)) ]
    | [ (VALUES(<map_name>)) ]
    | [ (ENTRIES(<map_name>)) ]
  USING 'StorageAttachedIndex'
  [ WITH OPTIONS = { <option_map> } ] ;

CREATE FUNCTION

cql
CREATE [ OR REPLACE ] FUNCTION [ IF NOT EXISTS ] [<keyspace_name>]<function_name> (<argument_list> [ , ... ])
  ( CALLED | RETURNS NULL ) ON NULL INPUT RETURNS <type>
  [ DETERMINISTIC ]
  [ MONOTONIC [ ON <argument_name> ] ]
  LANGUAGE ( java | javascript ) AS $$ <code_block> $$ ;

CREATE INDEX

CREATE [CUSTOM] INDEX [ IF NOT EXISTS ] [ <index_name> ]
  ON [<keyspace_name>.]<table_name>
  ([ KEYS | VALUES | ENTRIES | FULL] <column_name>)
    USING <index_type>
  [ WITH OPTIONS = { <option_map> } ] ;

CREATE KEYSPACE

cql
CREATE KEYSPACE [ IF NOT EXISTS ] <keyspace_name>
  WITH REPLICATION = { <replication_map> }
  [ AND DURABLE_WRITES = ( true | false ) ]
  [ AND graph_engine = 'Core' ] ;

CREATE MATERIALIZED VIEW

cql
CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] [<keyspace_name>.]<view_name>
  AS SELECT [ (<column_list>) ]
  FROM [<keyspace_name>.]<table_name>
  [ WHERE <column_name> IS NOT NULL
  [ AND <column_name> IS NOT NULL ... ] ]
  [ AND <relation> [ AND ... ] ]
  PRIMARY KEY ( <column_list> )
  [ WITH [ table_properties ]
  [ [ AND ] CLUSTERING ORDER BY (<cluster_column_name> DESC | ASC) ] ] ;

CREATE ROLE

cql
CREATE ROLE [ IF NOT EXISTS ] <role_name>
  ( WITH PASSWORD = '<role_password>'
  ifdef::dse69,dse68,cass50[]
  | WITH HASHED PASSWORD = '<hashed_role_password>'
  endif::dse69,dse68,cass50[]
  )
  [ ( WITH | AND ) [ SUPERUSER = ( true | false ) ]
  [ ( WITH | AND ) LOGIN = ( true | false ) ]
  ifdef::cass50[]
  [ ( WITH | AND ) ACCESS TO DATACENTERS { 'dc_name' } | ( WITH | AND ) ACCESS TO ALL DATACENTERS
  | ( WITH | AND ) ACCESS FROM CIDRS { 'region1' } | ( WITH | AND ) ACCESS FROM ALL CIDRS']
  endif::cass50[]
  [ [ WITH | AND ] OPTIONS = { <custom_options_map> } ] ] ;

CREATE SEARCH INDEX

cql
CREATE SEARCH INDEX [ IF NOT EXISTS ] ON [<keyspace_name>.]<table_name>
  [ WITH [ COLUMNS <column_list> { <option> : <value> } [ , ... ] ]
  [ [ AND ] PROFILES <profile_name> [ , ... ] ]
  [ [ AND ] CONFIG { <option:value> } [ , ... ] ]
  [ [ AND ] OPTIONS { <option:value> } [ , ... ] ] ] ;

CREATE TABLE

cql
CREATE TABLE [ IF NOT EXISTS ] [<keyspace_name>.]<table_name>
  ( <column_definition> [ , ... ] | [ PRIMARY KEY (partition_key_column_name, clustering_column_name) ] )
  [ WITH COMPACT STORAGE ] (1)
  [ AND <table_options> ]
  [ CLUSTERING ORDER BY [ <clustering_column_name> [ ASC | DESC ] ][ , ... ] ] (2)
  ifdef::dse68[]
  [ AND ( VERTEX LABEL <vl_name> | EDGE LABEL ) <el_name> FROM <vl_name> TO <vl_name>]
  endif::dse68[]
  [ [ AND ] ID = '<table_hash_tag>' ] ] ; (3)
1 ONLY SUPPORTED FOR DSE 5.1 OR EARLER. Use only to migrate to a later DSE version.
2 The CLUSTERING ORDER BY clause is optional. If not specified, the default is ASC.
3 The ID clause is optional. If specified, the table is created with a hash tag that is used to identify the table in the schema. If a table is accidentally dropped, use this option to recreate the table and run a commit log replay to retrieve the data.

CREATE TYPE

cql
CREATE TYPE [ IF NOT EXISTS ] [<keyspace_name>].<type_name>
  (<field_name> <cql_datatype> [ , <field_name> <cql_datatype> ... ]) ;

DELETE

cql
DELETE [ <column_name> [ <term> ] [ , ... ] ]
  FROM [<keyspace_name>.]<table_name>
  [ USING TIMESTAMP <timestamp_value> ]
  WHERE <PK_column_conditions>
  [ ( IF EXISTS | IF <static_column_conditions> ) ] ;

DROP AGGREGATE

cql
DROP AGGREGATE [ IF EXISTS ] [<keyspace_name>.]<aggregate_name> [ (<argument_name> [ , ... ]) ] ;

DROP FUNCTION

cql
DROP FUNCTION [ IF EXISTS ] [<keyspace_name>.]<function_name> [ (<argument_name> [ , ... ]) ] ;

DROP INDEX

cql
DROP INDEX [ IF EXISTS ] [<keyspace_name>.]<index_name> ;

DROP KEYSPACE

cql
DROP KEYSPACE [ IF EXISTS ] <keyspace_name> ;

DROP MATERIALIZED VIEW

cql
DROP MATERIALIZED VIEW [ IF EXISTS ] [<keyspace_name>.]<view_name> ;

DROP ROLE

cql
DROP ROLE [ IF EXISTS ] <role_name> ;

DROP SEARCH INDEX CONFIG

cql
DROP SEARCH INDEX ON [<keyspace_name>.]<table_name>
  OPTIONS { <option> : <value> } [ , { <option> : <value> } ... ] ;

DROP TABLE

cql
DROP TABLE [ IF EXISTS ] [<keyspace_name>.]<table_name> ;

DROP TYPE

cql
DROP TYPE [ IF EXISTS ] [<keyspace_name>.]<type_name> ;

GRANT ROLE

cql
GRANT <role_name> TO <role_name> ;

GRANT PERMISSION

cql
GRANT <permission> ON <resource> TO <role_name> ;

INSERT

cql
INSERT [ JSON ] INTO [<keyspace_name>.]<table_name>
  [ <column_list> VALUES <column_values> ]
  [ IF NOT EXISTS ]
  [ USING [ TTL <seconds> ] [ [ AND ] TIMESTAMP <epoch_in_microseconds> ] ] ;

LIST PERMISSIONS

cql
LIST ( ALL PERMISSIONS | <permission_list> )[ ON <resource_name> ]
  [ OF <role_name> ][ NORECURSIVE ] ;

LIST ROLES

cql
LIST ROLES [ OF <role_name> ] [ NORECURSIVE ] ;

REBUILD SEARCH INDEX

cql
REBUILD SEARCH INDEX ON <keyspace_name>.]<table_name>
  [ WITH OPTIONS { deleteAll : ( true | false ) } ] ;

RELOAD SEARCH INDEX

cql
RELOAD SEARCH INDEX ON [<keyspace_name>.]<table_name> ;

RESTRICT

cql
RESTRICT <permission> ON [<keyspace_name>.]<table_name> TO <role_name> ;

RESTRICT ROWS

cql
RESTRICT ROWS ON [<keyspace_name>.]<table_name>
  USING <pk_column_name> ;

REVOKE ROLE

cql
REVOKE <role_name> FROM <role_name> ;

REVOKE PERMISSION

cql
REVOKE <permission> ON <resource_name> FROM <role_name> ;

SELECT

cql
SELECT [ JSON | DISTINCT ] <selectors>
  FROM [<keyspace_name>.]<table_name>
  [ WHERE [ <primary_key_conditions> | <non_primary_key_conditions> IN (<column_name> [, ...]) ALLOW FILTERING ] [ AND ] [ <index_conditions> ]
  [ GROUP BY <column_name> [ , ... ] ]
  [ ORDER BY <column_name> ( ASC | DESC ) [ , ... ] ] |
  [ ORDER BY <vector_column_name> ANN OF [n,n,n,...] [ LIMIT N ] ]
  [ ( LIMIT <N> [ OFFSET <N> ]  | PER PARTITION LIMIT <N> ) ]
  [ ALLOW FILTERING ] ;

TRUNCATE

cql
TRUNCATE [ TABLE ] [<keyspace_name>.]<table_name> ;

UNRESTRICT

cql
UNRESTRICT <permission_name> ON [<keyspace_name>.]<table_name>
  FROM <role_name> ;

UNRESTRICT ROWS

cql
UNRESTRICT ROWS ON [<keyspace_name>.]<table_name> ;

UPDATE

cql
UPDATE [<keyspace_name>.]<table_name>
  [ USING TTL <time_value> ]
  [ [ AND ] USING TIMESTAMP <timestamp_value> ]
  SET <assignment> [ , <assignment> ... ]
  WHERE <row_specification>
  [ IF EXISTS | IF <condition> [ AND <condition> ] ] ;

USE

cql
USE <keyspace_name> ;

Was this helpful?

Give Feedback

How can we improve the documentation?

© 2025 DataStax | Privacy policy | Terms of use | Manage Privacy Choices

Apache, Apache Cassandra, Cassandra, Apache Tomcat, Tomcat, Apache Lucene, Apache Solr, Apache Hadoop, Hadoop, Apache Pulsar, Pulsar, Apache Spark, Spark, Apache TinkerPop, TinkerPop, Apache Kafka and Kafka are either registered trademarks or trademarks of the Apache Software Foundation or its subsidiaries in Canada, the United States and/or other countries. Kubernetes is the registered trademark of the Linux Foundation.

General Inquiries: +1 (650) 389-6000, info@datastax.com