docs/content/v2024.1/explore/ycql-language/cassandra-feature-support.md
Yugabyte Cloud Query Language (YCQL) has its roots in the Cassandra Query Language (CQL). The following tables highlight the important differences in feature support between YCQL and Cassandra 3.4.2.
| Category | Types | |
|---|---|---|
| {{<icon/yes>}} | Integers | BIGINT, COUNTER, INT, INTEGER, SMALLINT, TINYINT, VARINT |
| {{<icon/yes>}} | Numbers | DECIMAL, DOUBLE, FLOAT |
| {{<icon/yes>}} | Binary data | BLOB |
| {{<icon/yes>}} | Boolean | BOOLEAN |
| {{<icon/yes>}} | Date/Time | DATE, TIME, TIMESTAMP |
| {{<icon/yes>}} | Collections | FROZEN, LIST, MAP, SET |
| {{<icon/yes>}} | IP Addresses | INET |
| {{<icon/yes>}} | JSON | JSONB |
| {{<icon/yes>}} | String | TEXT, VARCHAR |
| {{<icon/yes>}} | UUID | TIMEUUID, UUID |
| {{<icon/no>}} | TUPLE | |
| {.sno-1} |
| Operation | Details | |
|---|---|---|
| {{<icon/yes>}} | Create new type | CREATE TYPE |
| {{<icon/yes>}} | Delete types | DROP TYPE |
| {{<icon/no>}} | Alter types | |
| {.sno-1} |
| Operation | Details | |
|---|---|---|
| {{<icon/yes>}} | Creating keyspace | CREATE KEYSPACE |
| {{<icon/yes>}} | Check before creating keyspace | CREATE KEYSPACE IF NOT EXISTS |
| {{<icon/partial>}} | Modifying keyspace | ALTER KEYSPACE - No Op |
| {{<icon/no>}} | Check before altering keyspace | ALTER KEYSPACE IF EXISTS |
{.sno-1}
| Operation | Details | |
|---|---|---|
| {{<icon/yes>}} | Adding columns | ADD COLUMN |
| {{<icon/yes>}} | Altering tables | ALTER TABLE |
| {{<icon/yes>}} | Removing columns | DROP COLUMN |
| {{<icon/yes>}} | Rename column's name | RENAME COLUMN |
| {{<icon/no>}} | Check before altering tables | ALTER TABLE IF EXISTS |
| {.sno-1} |
| Operation | Details | |
|---|---|---|
| {{<icon/yes>}} | Adding indexes | CREATE INDEX |
| {{<icon/yes>}} | Removing indexes | DROP INDEX |
| {{<icon/yes>}} | Partial indexes | Partial indexes |
| {{<icon/yes>}} | Covering indexes | Covering indexes |
| {{<icon/yes>}} | Unique indexes | Unique indexes |
| {{<icon/no>}} | Adding indexes on Collection | Cannot create index on map/list/set/full jsonb/udt and the keys,values,entries of a collection |
| {.sno-1} |
| Operation | Details | |
|---|---|---|
| {{<icon/yes>}} | Select columns | SELECT * FROM ... |
| {{<icon/yes>}} | Conditional select with [NOT] IN clause | SELECT ... WHERE key IN ... |
| {{<icon/yes>}} | Conditional select with IF clause | SELECT ... IF ... |
| {{<icon/yes>}} | Select using CONTAINS [KEY] | SELECT * FROM ... |
| {{<icon/no>}} | SELECT JSON | JSONB is supported as a native type |
| {{<icon/no>}} | Select with PER PARTITION LIMIT | |
| {{<icon/no>}} | Grouping results with GROUP BY | |
| {.sno-1} |
| Operation | Details | |
|---|---|---|
| {{<icon/partial>}} | Update columns | UPDATE - Only single row updates |
| {{<icon/partial>}} | Conditional update with [NOT] IN clause | Only single row updates |
| {{<icon/yes>}} | Conditional update with IF clause | UPDATE ... IF |
| {{<icon/yes>}} | Update with USING clause | UPDATE ... USING |
| {{<icon/no>}} | Conditional Update using CONTAINS [KEY] | UPDATE ... WHERE <col> CONTAINS ... |
| {.sno-1} |
| Operation | Details | |
|---|---|---|
| {{<icon/partial>}} | Delete rows | DELETE - Only single row deletes |
| {{<icon/yes>}} | Conditional delete with IF clause | DELETE ... IF |
| {{<icon/yes>}} | Delete with USING clause | DELETE ... USING |
| {{<icon/partial>}} | Conditional delete with [NOT] IN clause | Only single row deletes |
| {{<icon/no>}} | Conditional delete using CONTAINS [KEY] | DELETE ... WHERE <col> CONTAINS ... |
| {.sno-1} |
| Operation | Details | |
|---|---|---|
| {{<icon/yes>}} | Adding columns | INSERT ... INTO ... |
| {{<icon/no>}} | INSERT JSON | JSONB is supported as a native type |
| {.sno-1} |
| Feature | Details | |
|---|---|---|
| {{<icon/yes>}} | Begin a transaction | BEGIN TRANSACTION |
| {{<icon/yes>}} | End a transaction | END TRANSACTION |
| {{<icon/yes>}} | SQL style transaction start | START TRANSACTION |
| {{<icon/yes>}} | SQL style transaction commit | COMMIT |
| {.sno-1} |
| Component | Details | |
|---|---|---|
| {{<icon/yes>}} | Roles | Manage users and roles |
| {{<icon/yes>}} | Permissions | Grant privileges |
| {{<icon/no>}} | Users | Legacy Cassandra feature (CREATE, DROP, ALTER, LIST) |
| {{<icon/no>}} | LIST ROLES | But can be done using query |
| {{<icon/no>}} | LIST PERMISSIONS | But can be done using query |
| {.sno-1} |
| Component | Details | |
|---|---|---|
| {{<icon/yes>}} | Aggregates | AVG, COUNT, MAX, MIN, SUM |
| {{<icon/yes>}} | Built-in Functions | Now, DateOf, CurrentTime, ToTime, UUID ... |
| {{<icon/yes>}} | Operators | Binary, Unary, Null operators |
| {{<icon/partial>}} | Batch | Only programmatically via BatchStatement |
| {{<icon/no>}} | Materialized Views | |
| {{<icon/no>}} | Triggers | |
| {{<icon/no>}} | User Defined Aggregates(UDA) | |
| {{<icon/no>}} | User-defined functions(UDF) | |
| {.sno-1} |