📜  Cassandra-CQL系列

📅  最后修改于: 2020-12-02 06:22:40             🧑  作者: Mango


CQL提供了使用Collection数据类型的便利。使用这些Collection类型,可以将多个值存储在单个变量中。本章介绍如何在Cassandra中使用Collections。

清单

在以下情况下使用列表

  • 要保持元素的顺序,并且
  • 一个值将被多次存储。

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

用列表创建表

下面给出了一个创建示例表的示例,该示例表具有两列,即名称和电子邮件。要存储多封电子邮件,我们使用列表。

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

将数据插入列表

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

cqlsh:tutorialspoint> INSERT INTO data(name, email) VALUES ('ramu',
['abc@gmail.com','cba@yahoo.com'])

更新清单

下面给出了一个示例,该示例更新名为data的表中的列表数据类型。在这里,我们将另一封电子邮件添加到列表中。

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

验证

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

cqlsh:tutorialspoint> SELECT * FROM data;

 name | email
------+--------------------------------------------------------------
 ramu | ['abc@gmail.com', 'cba@yahoo.com', 'xyz@tutorialspoint.com']

(1 rows)

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

创建集合表

下面的示例创建一个包含两列的示例表,名称和电话。为了存储多个电话号码,我们使用set。

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

将数据插入集合

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

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)

地图

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

用地图创建表

下面的示例演示如何创建一个具有两列的示例表,名称和地址。为了存储多个地址值,我们使用map。

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

将数据插入地图

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

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

更新集合

以下代码显示了如何在名为data3的表中更新地图数据类型。在这里,我们正在更改关键办公室的值,即,正在更改名为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)