![Page 1: CQL – C ASSANDRA Q UERY L ANGUAGE Courtney Robinson – crlog.info @ Eric Evans (Python tests and CQL Spec)](https://reader036.vdocument.in/reader036/viewer/2022082506/5697bfb91a28abf838c9f95f/html5/thumbnails/1.jpg)
CQL – CASSANDRA QUERY LANGUAGE
Courtney Robinson – crlog.info@ Eric Evans (Python tests and CQL Spec)
![Page 2: CQL – C ASSANDRA Q UERY L ANGUAGE Courtney Robinson – crlog.info @ Eric Evans (Python tests and CQL Spec)](https://reader036.vdocument.in/reader036/viewer/2022082506/5697bfb91a28abf838c9f95f/html5/thumbnails/2.jpg)
THRIFT OR AVRO?
External dependency Community activity dissipates Too generic Many user reported problems caused by
Thrift or the misuse thereof...
Its thrift! Its Avro!Its CQL....
![Page 3: CQL – C ASSANDRA Q UERY L ANGUAGE Courtney Robinson – crlog.info @ Eric Evans (Python tests and CQL Spec)](https://reader036.vdocument.in/reader036/viewer/2022082506/5697bfb91a28abf838c9f95f/html5/thumbnails/3.jpg)
WHAT IS IT?
Effectively a structured query language
Replacement for clients? Not really...
Attempting to push as much server-side as possible
Familiar syntax
User friendly API for Cassandra new comers
![Page 4: CQL – C ASSANDRA Q UERY L ANGUAGE Courtney Robinson – crlog.info @ Eric Evans (Python tests and CQL Spec)](https://reader036.vdocument.in/reader036/viewer/2022082506/5697bfb91a28abf838c9f95f/html5/thumbnails/4.jpg)
CQL V1.0.0 - KEYWORDS
USE SELECT UPDATE DELETE TRUNCATE DROP BATCH
CREATE KEYSPACE CREATE COLUMNFAMILY CREATE INDEX
SPECIAL STATEMENTS
That’s right!No INSERT...?
![Page 5: CQL – C ASSANDRA Q UERY L ANGUAGE Courtney Robinson – crlog.info @ Eric Evans (Python tests and CQL Spec)](https://reader036.vdocument.in/reader036/viewer/2022082506/5697bfb91a28abf838c9f95f/html5/thumbnails/5.jpg)
SPECIFYING CONSISTENCY
... USING <CONSISTENCY> ...
Made up of the keyword USING, followed by a consistency level identifier.
Valid consistency levels are:
CONSISTENCY ZERO
CONSISTENCY ONE (default)
CONSISTENCY QUORUM
CONSISTENCY ALL
CONSISTENCY DCQUORUM
CONSISTENCY DCQUORUMSYNC
E.g BEGIN BATCH USING CONSISTENCY ONE
![Page 6: CQL – C ASSANDRA Q UERY L ANGUAGE Courtney Robinson – crlog.info @ Eric Evans (Python tests and CQL Spec)](https://reader036.vdocument.in/reader036/viewer/2022082506/5697bfb91a28abf838c9f95f/html5/thumbnails/6.jpg)
CREATE KEYSPCE CREATE KEYSPACE WITH replication_factor = AND strategy_class = [AND
strategy_options. = [AND strategy_options. = ]];
E.g CREATE KEYSPACE TestKeyspace WITH strategy_options:DC1 = '1‘ AND strategy_class = 'NetworkTopologyStrategy‘
CREATE COLUMNFAMILY [(name1 type, name2 type, ...)] [WITH keyword1 = arg1 [AND keyword2 = arg2 [AND ...]]];
Set column type: CREATE COLUMNFAMILY (name1 type, name2 type) ...;
CREATE INDEX [index_name] ON <column_family> (column_name);
Used to create a new, automatic secondary index for the named column.
CREATE COLUMN FAMILY
CREATE INDEX
![Page 7: CQL – C ASSANDRA Q UERY L ANGUAGE Courtney Robinson – crlog.info @ Eric Evans (Python tests and CQL Spec)](https://reader036.vdocument.in/reader036/viewer/2022082506/5697bfb91a28abf838c9f95f/html5/thumbnails/7.jpg)
USE USE <KEYSPACE>; Use keyword followed by a valid Keyspace name Set working Keyspace per-connection
DROP <KEYSPACE|COLUMNFAMILY>; DROP KEYSPACE KSName; DROP COLUMNFAMILY CFName;
Immediate, irreversible removal of keyspace and column family namespaces.
TRUNCATE <COLUMN FAMILY> Accepts a single argument (CF) name permanently removes all data from said column family.
DROP
TRUNCATE
![Page 8: CQL – C ASSANDRA Q UERY L ANGUAGE Courtney Robinson – crlog.info @ Eric Evans (Python tests and CQL Spec)](https://reader036.vdocument.in/reader036/viewer/2022082506/5697bfb91a28abf838c9f95f/html5/thumbnails/8.jpg)
UPDATE [USING CONSISTENCY ] SET name1 = value1, name2 = value2 WHERE KEY = keyname;
UPDATE is used to write one or more columns to a record in a Cassandra column family.
No results are returned.
Creates or updates rows
UPDATE CFName SET ‘name' = 10 WHERE KEY = ‘1234’
UPDATE <COLUMN FAMILY> ...
Begin with the UPDATE keyword followed by CF name.
Followed by an optional consistency level specification.
UPDATE (values)
![Page 9: CQL – C ASSANDRA Q UERY L ANGUAGE Courtney Robinson – crlog.info @ Eric Evans (Python tests and CQL Spec)](https://reader036.vdocument.in/reader036/viewer/2022082506/5697bfb91a28abf838c9f95f/html5/thumbnails/9.jpg)
BATCH UPDATES Where’s my batch mutate gone? Similar to code blocks/structs Has begining (Begin Batch) and end (Apply Batch)
BEGIN BATCH [USING ] UPDATE CF1 SET name1 = value1, name2 = value2 WHERE KEY = keyname1;
UPDATE CF1 SET name3 = value3 WHERE KEY = keyname2;
UPDATE CF2 SET name4 = value4, name5 = value5 WHERE KEY = keyname3;
APPLY BATCH
BEGIN BATCH USING CONSISTENCY QUORUMUPDATE CFname SET 1='1', 2='2', 3='3', 4='4' WHERE KEY='aa‘UPDATE CFname2 SET 5='5', 6='6', 7='8', 9='9' WHERE KEY='ab'UPDATE CFname SET 9='9', 8='8', 7='7', 6='6' WHERE KEY='ac'UPDATE CFname3 SET 5='5', 4='4', 3='3', 2='2' WHERE KEY='ad'UPDATE CFname SET 1='1', 2='2', 3='3', 4='4' WHERE KEY='ae'
APPLY BATCH
![Page 10: CQL – C ASSANDRA Q UERY L ANGUAGE Courtney Robinson – crlog.info @ Eric Evans (Python tests and CQL Spec)](https://reader036.vdocument.in/reader036/viewer/2022082506/5697bfb91a28abf838c9f95f/html5/thumbnails/10.jpg)
DELETE
DELETE [COLUMNS] FROM [USING ] WHERE KEY = keyname1
DELETE [COLUMNS] FROM [USING ] WHERE KEY IN (keyname1, keyname2);
o Remove one or more columns from one or more rows.
o Optional comma-delimited list of column names following DELETE
o Removes entire row(s) if no columns are specified
o DELETE ‘col1', 'col2' FROM CF WHERE KEY = 'key‘o
DELETE ‘col1', 'col2' FROM CF WHERE KEY = ('key‘, ‘key2’, ‘key3’)
![Page 11: CQL – C ASSANDRA Q UERY L ANGUAGE Courtney Robinson – crlog.info @ Eric Evans (Python tests and CQL Spec)](https://reader036.vdocument.in/reader036/viewer/2022082506/5697bfb91a28abf838c9f95f/html5/thumbnails/11.jpg)
SELECT SELECT [FIRST N] [REVERSED] <SELECT EXPR> FROM <COLUMN FAMILY>
[USING <CONSISTENCY>] [WHERE <CLAUSE>] [LIMIT N]; FIRST = number of columns, N REVERSED = Reverses sort order
Return a result set, key + columns per row
Specify columns: SELECT [FIRST N] [REVERSED] name1, name2, name3 FROM ...
Request a range of columns: SELECT [FIRST N] [REVERSED] name1..nameN FROM ...
“..” Notation specifies range Inclusive of start and end columns
E.g SELECT FIRST 2 REVERSED 3..1 FROM CF WHERE KEY = 'aa'
![Page 12: CQL – C ASSANDRA Q UERY L ANGUAGE Courtney Robinson – crlog.info @ Eric Evans (Python tests and CQL Spec)](https://reader036.vdocument.in/reader036/viewer/2022082506/5697bfb91a28abf838c9f95f/html5/thumbnails/12.jpg)
COURTNEY ROBINSON @ZCOURTS
Thank you for listening.
Questions?Links:
http://crlog.info/2011/03/29/cassandra-query-language-aka-cql-syntax/
https://svn.apache.org/viewvc/cassandra/trunk/doc/cql/CQL.html?view=co
https://issues.apache.org/jira/browse/CASSANDRA-1703