📜  Cassandra 中有用的 CQL 查询(1)

📅  最后修改于: 2023-12-03 14:40:01.652000             🧑  作者: Mango

Cassandra 中有用的 CQL 查询

Cassandra 是一个高度可扩展的分布式数据库,使用 CQL(Cassandra Query Language)作为其主要查询语言。在本文中,我们将介绍一些常用的 CQL 查询,以帮助开发人员优化他们的 Cassandra 数据库操作。

创建键空间(Keyspace)
CREATE KEYSPACE my_keyspace
  WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};

在这个例子中,我们使用 CREATE KEYSPACE 语句来创建一个名为 my_keyspace 的键空间。我们使用简单策略 SimpleStrategy 和复制因子 replication_factor 3 来设置键空间的复制配置。

创建表(Table)
CREATE TABLE my_keyspace.users (
  id UUID PRIMARY KEY,
  name TEXT,
  email TEXT
);

在上述示例中,我们使用 CREATE TABLE 语句创建了一个名为 users 的表。表中有一个主键 id,以及两个附加的列 nameemail

插入数据(Insert)
INSERT INTO my_keyspace.users (id, name, email)
  VALUES (uuid(), 'John Doe', 'john.doe@example.com');

上述示例展示了如何使用 INSERT INTO 语句将一行新的数据插入到 users 表中。

查询数据(Select)
SELECT * FROM my_keyspace.users WHERE id = uuid();

在上述示例中,我们使用 SELECT 语句从 users 表中选择具有特定 id 值的行。

更新数据(Update)
UPDATE my_keyspace.users SET email = 'johndoe@example.com' WHERE id = uuid();

上述示例展示了如何使用 UPDATE 语句更新 users 表中具有特定 id 值的行的 email 列。

删除数据(Delete)
DELETE FROM my_keyspace.users WHERE id = uuid();

在上述示例中,我们使用 DELETE FROM 语句从 users 表中删除具有特定 id 值的行。

带有条件的插入数据(Conditional Insert)
INSERT INTO my_keyspace.users (id, name, email)
  VALUES (uuid(), 'Jane Smith', 'jane.smith@example.com')
  IF NOT EXISTS;

上述示例展示了如何使用 IF NOT EXISTS 条件在插入数据之前检查行是否已经存在。这可以避免重复数据的插入。

带有 TTL 的插入数据(Insert with TTL)
INSERT INTO my_keyspace.users (id, name, email)
  VALUES (uuid(), 'Alice Brown', 'alice.brown@example.com')
  USING TTL 86400;

上述示例展示了如何使用 USING TTL 子句设置插入的数据行的生存时间(TTL)为 86400 秒。在该时间到期后,数据行将被自动删除。

聚合查询(Aggregate Queries)

Cassandra 提供了各种聚合函数,以帮助计算数据集的统计信息,例如总和、平均值和计数等。

SELECT COUNT(*) FROM my_keyspace.users;
SELECT AVG(age) FROM my_keyspace.users;
SELECT SUM(sales) FROM my_keyspace.sales_data;

上述示例展示了如何使用 COUNTAVGSUM 聚合函数来执行聚合查询。

以上是一些常用和有用的 CQL 查询示例,可帮助开发人员在他们的 Cassandra 数据库操作中更好地利用 CQL 查询语言的功能。请根据具体的业务需求选择适当的查询语句,并根据项目的架构和设计进行调整和优化。