Cassandra - CQL 集合


CQL 提供了使用集合数据类型的功能。使用这些集合类型,您可以在单个变量中存储多个值。本章介绍如何在 Cassandra 中使用集合。

列表

列表用于以下情况

  • 需要维护元素的顺序,以及
  • 需要多次存储一个值。

您可以使用列表中元素的索引获取列表数据类型的值。

使用列表创建表

下面是一个创建示例表的例子,该表有两个列:name 和 email。为了存储多个电子邮件,我们使用了列表。

cqlsh:tutorialspoint> CREATE TABLE data(name text PRIMARY KEY, email list<text>);

将数据插入列表

在将数据插入列表中的元素时,请在方括号 [ ] 中用逗号分隔所有值,如下所示。

cqlsh:tutorialspoint> INSERT INTO data(name, email) VALUES ('ramu',
['[email protected]','[email protected]'])

更新列表

下面是一个更新名为 data 表中列表数据类型的示例。这里我们向列表中添加了另一个电子邮件。

cqlsh:tutorialspoint> UPDATE data
... SET email = email +['[email protected]']
... where name = 'ramu';

验证

如果您使用 SELECT 语句验证表,您将获得以下结果:

cqlsh:tutorialspoint> SELECT * FROM data;

 name | email
------+--------------------------------------------------------------
 ramu | ['[email protected]', '[email protected]', '[email protected]']

(1 rows)

集合

集合是一种用于存储一组元素的数据类型。集合的元素将按排序顺序返回。

使用集合创建表

以下示例创建了一个示例表,该表有两个列:name 和 phone。为了存储多个电话号码,我们使用了集合。

cqlsh:tutorialspoint> CREATE TABLE data2 (name text PRIMARY KEY, phone set<varint>);

将数据插入集合

在将数据插入集合中的元素时,请在花括号 { } 中用逗号分隔所有值,如下所示。

cqlsh:tutorialspoint> INSERT INTO data2(name, phone)VALUES ('rahman',    {9848022338,9848022339});

更新集合

以下代码演示了如何更新名为 data2 的表中的集合。这里我们向集合中添加了另一个电话号码。

cqlsh:tutorialspoint> UPDATE data2
   ... SET phone = phone + {9848022330}
   ... where name = 'rahman';

验证

如果您使用 SELECT 语句验证表,您将获得以下结果:

cqlsh:tutorialspoint> SELECT * FROM data2;

   name | phone
--------+--------------------------------------
 rahman | {9848022330, 9848022338, 9848022339}

(1 rows)

映射

映射是一种用于存储元素的键值对的数据类型。

使用映射创建表

以下示例演示了如何创建一个示例表,该表有两个列:name 和 address。为了存储多个地址值,我们使用了映射。

cqlsh:tutorialspoint> CREATE TABLE data3 (name text PRIMARY KEY, address
map<timestamp, text>);

将数据插入映射

在将数据插入映射中的元素时,请在花括号 { } 中用逗号分隔所有 键:值 对,如下所示。

cqlsh:tutorialspoint> INSERT INTO data3 (name, address)
   VALUES ('robin', {'home' : 'hyderabad' , 'office' : 'Delhi' } );

更新集合

以下代码演示了如何更新名为 data3 的表中的映射数据类型。这里我们更改了键 office 的值,即我们更改了名为 robin 的人的办公地址。

cqlsh:tutorialspoint> UPDATE data3
   ... SET address = address+{'office':'mumbai'}
   ... WHERE name = 'robin';

验证

如果您使用 SELECT 语句验证表,您将获得以下结果:

cqlsh:tutorialspoint> select * from data3;

  name | address
-------+-------------------------------------------
 robin | {'home': 'hyderabad', 'office': 'mumbai'}

(1 rows)
广告