Using a CQL 3 query

A CQL 3 query resembles a SQL query to a greater extent than a CQL 2 query.

A CQL 3 query resembles a SQL query to a greater extent than a CQL 2 query. CQL 3 no longer uses the REVERSE keyword, for example.

In the example of the GET command, and in CLI output in general, there is a timestamp value that doesn't appear in the CQL 3 output.

This timestamp represents the date/time that a write occurred to a columns. In CQL 3, you use WRITETIME in the select expression to get this timestamp. For example, to get the date/times that a write occurred to the body column:

SELECT WRITETIME (title )
  FROM songs
  WHERE  id = 8a172618-b121-4136-bb10-f665cfc469eb;

 writetime (title )
------------------
 1353890782373000

The output in microseconds shows the write time of the data in the title column of the songs table.

When you use CQL 3 to query legacy tables with no column names defined for data within a partition, CQL 3 generates the names (column1 and value1) for the data. Using the CQL RENAME clause, you can change the default name to a more meaningful name.

ALTER TABLE users RENAME key to user_id;

CQL 3 supports dynamic tables created in the Thrift API, CLI, and earlier CQL versions. For example, a dynamic table is represented and queried like this in CQL 3:

CREATE TABLE clicks (
  userid uuid,
  url text,
  timestamp date
  PRIMARY KEY  (userid, url ) ) WITH COMPACT STORAGE;

SELECT url, timestamp
  FROM clicks
  WHERE  userid = 148e9150-1dd2-11b2-0000-242d50cf1fff;

SELECT timestamp
  FROM clicks
  WHERE  userid = 148e9150-1dd2-11b2-0000-242d50cf1fff
  AND  url = 'http://google.com';

In these queries, only equality conditions are valid.